2009-10-22 Blog Post on Project Paroli
Wikipedia goes offline!
With the recent developments in offline Wikis it has become apparent that the their use has grown far beyond an alternative collaboration tool. Countless wikis are used as a universal instrument of sharing and distributing aknowledge on almost any topic. But so far, participation requires constant access to the internet. This is bound to change.
Earlier this year the Wikimedia Foundation adopted the ZIM file format by openZIM as its standard for displaying web content offline. ZIM is being developed since February and already has come a long way. It is working nicely and running smoothly even on embedded devices such as the Ben NanoNote as well as the Neo Freerunner.
This flexibility and portability the project owes to its internal structure. Instead of a single, complex process, OpenZIM is designed to run in between existing applications. The ZimReader acts as a web-server allowing the user to browse the wiki's content with any browser available. The ZimReader as well as the ZimWriter, used to generate the ZIM files, are written in C++ and thus platform independent.
The heart of the project however is the ZIM format. It is designed to be an efficient and universal way of storing large wikis in a single file.It can be used to compress virtually any data from a given postgreSQL scheme.
Of course, there have been several attempts in the past to create offline versions of the wikipedia and other wikis. However, what was missing was a cleanly structured and thought-through approach to solving the issues at hand. Open standards and collaboration, spanning across multiple platforms and areas of expertise, are vital in such an endeavor. OpenZIM is just that. A project were both, Wiki writers as well as application developers, meet and work together towards this standard.
"Bringing Wiki content to offline devices in a standardized and exchangeable way, using open standards and free software", Manuel Schneider of Wikimedia Switzerland said when asked for the goal of openZIM. A bold and big goal indeed, but the openZIM team is going to tackle it one step at a time. As mentioned earlier the ZIM implementation is already functional. The current construction sites are the article categories and full text indexing as well as increasing performance while minimizing the memory footprint.
OpenZIM itself is a collection of several tools. There is the ZimWriter that compresses data from a database or a collection of files to create the ZIM files and the ZimReader, an http server to browse the ZIM file contents, both of which are built using the ZIMlib. All three have been written in C++. ZIMlib can also be used as a drop-in to make your application instantly ZIM-aware. The specifications of the ZIM format can be found on the project's wiki, alternative ZIM implementation - in your favourite programming language or framework - are welcome.
The biggest challenge of all is of course offline editing. Even though the exact details have yet to be worked out, Manuel Schneider, who is leading the openZIM effort, is confident to have a solution for this ready next year. If you want to get involved in the openZIM project or have any questions or comments check their wiki and contact them via their mailing list.