Sie sind hier

When Puffy Meets the Monkeys, or, OpenBSD at the Point of Sale

Gespeichert von Marc Balmer am Sa., 12/06/2008 - 11:49

Basel has one of Europe's most beautiful zoological gardens, called the Zolli by the locals. It has a breathtaking aquarium with an enormous variety of rare fish, corals and lower animals. Pufferfish and Xenocara can be watched in their natural habitat. Starting january 1st, 2009, those two fish no longer only swim around in their aquariums but every visitor to the zoo must pass them...

For more than 130 years the Zoo is open all day, 365 days a year. Visitors are greeted by the friendly cashiers who are known for their friendliness and giving the visitors all information they need to enjoy their stay at the Basel zoo. For more than 130 years the procedure was simple: A ticket is taken from a paper roll, various colors meant various types of entries. Parents got the red one, children the green one and so on. The amount was calculated in head and sold without any electronic registration. Old style, but quick, on average a visitor stands in front of the desk for about 15-20 seconds and even on busy days you rarely would have to wait for more than about 10 minutes in a queue. While this system worked almost to perfection, law required the zoo to change from manual sale to electronically register all tickets and items sold. I was contracted very early in the process to help in this transition and especially to make sure that the needs of the zoo are properly addressed in an upcoming point of sale solution. These specific needs included:

  • It must be visitor friendly. The visitor should not have to wait any longer just because technology is involved.
  • It must be staff friendly. The point of sale system has to be very easy to operate. Errors made must be quickly and easily correctable.
  • It must, of course, meet the legal demands.
  • It must be ready for future enhancements and it must be possible to link it to other database applications.

A survey on the market showed a surprising result: None of the existing systems completely filled in the needs. This came to a surprise, since zoological gardens, museums, botanical gardens all have more or less the same mode of operations: They sell tickets to visitors and have a usually very flexible pricing scheme involving discounts on specific weekdays or during evening hours plus they sell a limited number of articles like books, merchandise, DVDs etc. A second surprise was that almost non of the zoological gardens and museums we talked to were really satisfied with their solutions, some of them having already installed their third point of sale solution! So we started to listen very carefully to the zoo management but also to the workers on the front desk. We wanted to find out what the ideal solution for this kind of application would look like. We came quite soon to the conclusion that the best way would be to develop a new POS application from scratch that would perfectly fit the zoo, botanical garden, museum situation. Shoehorning an existing retail solution into the museum scheme just did not have enough sex-appeal to us. We were able to convince the Basel zoo of our idea and we were invited to offer our solution, or more our plan for a solution. The board of directors, to no surprise, demanded that also an existing project would be evaluated and that then the best solution would be selected. Well, I would not write this if the existing commercial solution had been choosen...

OpenBSD at the Point of Sale

A few important decisions have to be made now: Which operating system to use? Which hardware to support? How do we store the data, the transactions? What user interface do we use? And, also not unimportant, how does the application work, how is it being used? Not very surprisingly we choose OpenBSD as the operating system for it's unparalleled security which matters a lot in POS systems. The hardware questions was a bit more tricky. There is a large number of POS terminals available, most of them are PC based. After an evaluation of various models we decided to go with IBM SurePos series, a robust and proven POS hardware platform with a lot of accessories and a broad range of systems. We concentrated on the mid-range SurePOS 300 series with touchscreen, receipt printer, 2x20 lines VFD display and Symbol LS9208 laser scanners. This combination is ideal for a museum- or zoo-like situation. POS hardware usually has a lot more I/O than a regular PC, e.g. the SurePOS 300 has as many as six serial ports. Fortunately only small changes to a few device drivers were needed to make the system run OpenBSD. As for the ticket printer the Intermec PF4i EasyCoder seemed the right tool, small, yet robust (on some days we will print up to 6000 tickets...). Working with IBM's RSS department is a nice experience, these folks are very helpful and as a developer and business partner you get a large discount on development equipment. The software application is a client server application written in C and using a central PostgreSQL database for data storage. A major issue was of course which graphical toolkit to use. For several reasons we decide to use OpenMotif: It is a prooven toolkit with a relativel small footprint and it uses C. We dismissed the only real other choice (for implementation in the C language), GTK, because we did not like the license. OpenMotif is highly configurable and it works really nice with a touch screen, the users like the interface a lot. The pricing scheme is already complicated with special prices on mondays or during evening hours, but there is also a plethora of exceptions and special rules. So we decided to add an extension engine to the core POS application, so that extensions can easily be written in a scripting language. Here we choose Python because it is really a superior scripting language and we already have a lot of experience in writing Python code. A Python interpreter is thus integrated in our POS software and the core functionality is accessible from Python extensions. With this hardware/software combination a really user friendly, robust and extensible solution has been created that is unique for it's featureset and robustness.


Point of sale terminals never come alone. A museum like has more than one entrance and on each entrance there are typically several points of sale. Deployment of the software, and updates, are an issue. On the database server we therefore setup a DHCP and a DNS server and registered all MAC addresses of all POS terminals and all networked printers. The group of POS terminals would be sent OpenBSD's pxeboot binary when they PXE boot and using tftp the bsd.rd install kernel can be booted. The POS terminals are booted into the installer and a normal OpenBSD install is performed, which takes an average ten minutes per system. Once installed, a root ssh key is generated and put onto the package distribution server, which takes another three minutes. To finally install the X/POS application, all that is needed is a pkg_add xpos which will install all needed dependencies and the X/POS application itself. After adding a few lines to /etc/rc.local, the machine is ready for operation. After a reboot, the graphical user interface is automatically started and the user is greeted with the POS applications login screen, which already uses the touchscreen as an interface.


Together with the nice folks of the Basel zoo we have created a robust, secure, and user friendly solution that can easily be deployed thanks to the wonderful package system of OpenBSD. By using OpenBSD as the foundation of the solution we have some unique selling propositions that are unmatched in other systems: An unparalleled stability, very high security, a modern user interface using industry standards, a plethora of networking options and support for modern industrial point of sale hardware.