Libki 16.04 (Farnsworth) released!

It’s been too long since the last release! Although it’s been two years since the last official Libki release, that hasn’t slowed down development at all! Some of the new features in Libki include:

  • Server internationalization! Current translations include English and Swedish ( thanks Eric! ). If you would like your native language to be supported, let me know!
  • Improved SIP2 support. Libki can now work with many more different SIP2 server configurations.
  • Ability to restrict client usage by age ( when using SIP2 ).
  • Ability to use arbitrary SIP2 fields to deny logins with a custom message.
  • Ability to let a patron know he or she has waiting holds ( when using SIP2 )
  • Automatic time extensions during periods of low computer usage.
  • Support for closing hours. Set your closing hours and Libki will not give users more minutes than they can use up to closing. Closing hours can be set per location.
  • Ability to automatically clear out user history after a given number of days

Download the Libki Server 16.04 source from GitHub. As always, I recommend installing Libki Server via git.

Download the Libki Client 16.04 for Windows from GitHub as well. For other operating systems, you’ll need to build the client for source.


Libki 14.08 ( Bender ) released!

I’m pleased to announce the release of Libki 14.08, code name Bender! This release of Libki has a number of new features and bug fixes!

  • Bug fix: Fix column sorting for administration clients table
  • Feature: Advance creation of guest accounts. This feature allows you to generate any number of guest accounts in advance with the ability to print the usernames and pins or to store them in a file on the server for other software to access.
  • Bug fix: SESSION_DELETED actions not recorded correctly. These actions were being stored in the database as an empty string. This has been fixed and the update will correct existing actions in the database as well.
  • Bug Fix: Sometimes users must log in twice when using Libki for the first time when using SIP2
  • Remove the ctrl-alt-shift-L unlocker for Windows. Libki now has a built-in kill switch so this is no longer needed.

Libki 14.02 ( Leela ) Released!

Hey All,

The latest version of the Libki client and server are out the door!

Here are some highlights:

  • Add ability to deny logins if SIP2 patron status flags are set when using SIP2
  • Add ability to disallow logins if patron has exceeded fee limits when using SIP2
  • Add the ability to give users multiple sessions daily
  • Add backdoor password option to Libki client which makes closing the Libki client without server access trivial
  • Bug fix – When using SIP, reservations cannot be made by users who have never logged into a client pc

As always, you can download the latest client here:

The latest server release can be obtained by checking out ‘leela’ or ‘r14.02’ via git.

ByWater Solutions Demoing Libki at ALA Annual

ByWater Solutions announced this week that they will offer support, installation and hosting for Libki. To learn more about Libki please visit booth #117 at the ALA Annual Conference in Chicago, IL to meet the ByWater team, see a demo or ask questions.

Organized Libki demos will be offered at these times:

  • Friday, June 28: 5:15pm
  • Saturday, June 29: 11:30am
  • Saturday, June 29: 2:00pm
  • Sunday, June 30: 11:00am
  • Sunday, June 30: 4:00pm
  • Monday, July 1: 9:30am

We’ll of course show you anything specific should you stop by at any time!

Libki now has reservations!

Thanks to funding by Coos County Libraries Libki now supports reservations! The Libki server now has a public access page where users can view a list of registered Libki clients. The list shows if the client is in use or not, and if it is, an estimated amount of time left. If reservations are enabled, users may create and cancel reservations for a given client. At the moment, only one reservation per client may be placed. With the addition of reservations, Libki clients now support three behavior types: 

Libki 2.0 is here!

Hello all,

It looks like Libki 2.0 is about ready for prime time! There are just a small number of tasks left to take care of ( documentation and a database updater being the first that comes to mind ). Once that is done I’ll create a release tag in the repositories and we’ll be on our way!

In the mean time, here is an article I and some compatriots wrote that has been published by Code4Lib!

Libki Client 1.0 Nearing Release

Hello All,

It seems like ages since I promised a total rewrite of Libki. I even posted that the server was nearing completion. In retrospect, it seems that I must have posted that in a fit of insanity. In reality, I still haven’t found a server side technology that I am happy with. I’ve experimented with some many toolkits I’ve lost track. I’ve tried Zend, Symfony, and DIY solutions in PHP, as well as Catalyst on the Perl side. Catalyst is a great toolkit and I may use it on future projects, but it did not fit well with what I’m trying to accomplish with Libki. On the Ajax side I’ve tried jQuery, Dojo, and ExtJS. The big showstopper in every case is trying to get the server side application to play nice with the client side Ajax toolkit. It seems like everyone has come up with a different format for making Ajax requests and replies, and it’s maddening! Though this project is small, it’s not simple, and requires the ability to things that are not easy to accomplish with a standard framework. Google Web Toolkit looks to be promising. Server side code generates all the client side code automatically, and the authors of ExtJS have created GWT libraries as well!

But enough ranting, this post is about actual progress! My plan has been to develop the new server and client side by side. My difficulty finding a server architecture I’m happy with  has lead to stagnation on the client side. The new client has been sitting half finished for far too long. In the interest of progress, I have finished the client and written a new server side api for it to use.

The new client no longer connects to the server database directly, which was never a good idea to begin with ( this design is a holdover from Libki’s roots as a piecemeal replacement for OutKafe, a kiosk management system project that hasn’t been updated in years ). Instead, the communications between client and server are simple ajax requests.

The benefits of the new client are, in my opinion, tremendous.

  • A compiled executable, starts up extremely fast.
  • No more PHP/Gtk! No more relying on the dead Gnope project for PHP/Gtk on Windows!
  • The new client has an installer, installation and configuration takes less than a minute!
  • Visually, the new client is much more pleasing.
  • System tray icon with balloon warnings for time left.

I would love to put out the new client immediately, but I need to shore up the server side code and put it in a git repo before I can release it. Adding it to an existing Libki server should prove to be a relatively simple process.

Stay tuned!


Libki Rewrite Status Update

I thought everyone might appreciate knowing how the rewrite is coming along. So far, the server side administration app is nearing completion. Authentication is all that is left to do. The entire app is fully ajax powered and is a single page for everything! It works very well, but could still use some tweaking here and there. After the admin app is done, I will write the REST api, and then be able to finish the client. At that point, phase 1 will be complete!

Libki : The Next Generation

Hello All,

It may appear that development of Libki has been stagnant recently. Rest assured, it is not! I’m working on a complete rewrite. While the current version is function, I want the new version to be beautiful. I want it to be a joy to use. To make this a reality, I have spent many, many hours thinking about how to accomplish this.

So far, I have the new Libki client half written. I have switched from PHP/Gtk+ to C++/Qt4. This brings many advantages. First, as it is compiled, start-up times should increase dramatically. Second, there will no longer any dependencies to install ( i.e. Gnope ). Third, there will be a simple Windows installer ( and .deb packages for Linux ). In addition, it just looks really great ( preview screen shots are available at my personal site ).

Both the client and server should be fully translatable for users whose primary language is not English.

The new server is planned to be written using the Catalyst Perl framework. This brings many advantages as well, API stability being the primary reason. The web interfaces will be completely AJAX enabled, powered by Jquery.

Here is the timeline as I have planned it:

Phase 1

  • Functioning Server & Client
  • AJAX powered web administration
  • Only the most basic features will be included ( internal user authentication, all existing features ).
  • Fix obvious issues from the current version ( the need to refresh the page, the ability to change passwords, etc. )

Phase 2

  • Reservations System
  • SIP2 User Authentication
  • REST API for getting information from the server

Phase 3

  • SIP2 Age Verification
  • Configurable Time Warnings
  • SMS User Notifications
  • Cross-Platform Reboot/Shutdown
  • Closing Time Logout/Shutdown
  • Automatic Re-enabling of disabled users.
  • Pre-assign a Kiosk to a User from the web administration inteface.

Phase 4

  • Print Management ( most likely integration with PyKota ).

Phase 5

  • Make reservations via SMS.
  • LDAP Authentication