Tomboy, a popular open source note-taking app, is hitting the internet. The Tomboy team is creating a web application called Snowy that will allow users to keep their notes synced in the cloud. It also offers a rich interactive web interface, allowing users to seamlessly access and edit their notes through a web browser.
Novell developer Brad Taylor created Snowy in his spare time on an experimental basis. It matured recently when Tomboy developer Sandy Armstrong teamed up with Taylor on one of Novell’s hack weeks in an effort to speed up the project’s progress. A preview of the new web sync feature has landed in the latest version of Tomboy. Snowy is built with Python and uses the open source Django framework. One of the most compelling aspects of Snowy is that it is open source software, which means users can self-host their own note servers.
To facilitate synchronization with Snowy, the developers of Tomboy have created a REST API that uses the JSON interchange format to transmit the textual content and metadata of the notes. The REST API is documented so that third-party developers can create interoperable software. The implication is that anyone can create alternatives to Snowy or build Tomboy Notes sync support into existing web services. It is also possible to create alternative client software that can use the service for note storage.
There is already some interest in the open REST API from developers looking to add Tomboy note sync capabilities to their own software. Henri Bergius, for example, added support for the Snowy REST API to the Midgard open source content management framework. Canonical is also exploring the Snowy API and considering the possibility of adding support for Tomboy note sync to its Ubuntu One web service.
Software freedom in the cloud
Snowy is distributed under the terms of the GNU Affero General Public License (AGPL), a copyleft license for web software. Like the conventional GPL, it guarantees the freedom to study, modify and redistribute the source code of the program. Unlike the GPL, it broadens the scope of these freedoms to include Web users and not just program recipients.
This means that persons who access a remote instance of a program distributed under the AGPL are entitled to the rights which are granted by the license. Web application providers are therefore obligated to disclose changes they make to the AGPL software they host for public access.
AGPL is largely a response to the emergence of the Software as a Service (SaaS) model and the growing popularity of cloud computing. The license aims to adapt the traditional principles of copyleft so that they can be properly applied to modern web software.
The trend towards hosted web applications poses a significant challenge for the open source software community. Free Software Foundation founder Richard Stallman insists that rejecting the entire concept of hosted web applications is the only acceptable course of action, but this short-sighted approach is ultimately doomed to failure because it will only serve to marginalize open source software.
It is becoming increasingly clear that tight integration with web services will be necessary in order to ensure that Linux remains a competitive platform on the desktop compared to proprietary alternatives. Spurred on by this revelation, the community of software developers behind the GNOME open source desktop environment discussed at length the prospect of creating open web services that can be operated by GNOME software. Such discussions, which have been going on for years, have generated a lot of intriguing ideas but very little practical software.
The Snowy Web service is a huge step in the right direction. It shows how a truly open web application can be used to empower open source software users and give them the freedom and flexibility in the cloud they enjoy today on the desktop. Users can freely choose their vendor or deployment environment and can maintain full control over their data.
Build rich web applications with open standards
Snowy is also an ideal showcase for the open web in other ways. Its rich user interface takes advantage of emerging standards-based web technologies to support interactive editing. Concretely, it uses the
contentEditable property which is introduced in the HTML 5 draft and is already supported by all major browsers.
This property makes the content of an HTML element editable by the user and supports a number of styling commands that can change markup and apply various formatting elements. The
contentEditable The property makes it easier for web application developers to create WYSIWYG rich text editors. Snowy is a great example of a practical use case for this particularly useful HTML 5 feature.
contentEditable, you can see an overview of on the WHATWG blog.
HTML 5 is gaining momentum as major web service providers adopt the parts of it that are widely supported in browsers. Many features of HTML 5 can be used to build sophisticated web applications without the need for proprietary browser plug-ins. The
contentEditable This feature is just one of many that will power the next generation of web software.
Snowy is still in full development and the developers are working on a host of additional features. According to Taylor, other plans include creating a mobile version of the web interface that will work well with smartphone browsers and adding support for note sharing and collaboration. REST sync API support could also be added to Tomdroid, a native Android port of Tomboy.
Taylor intends to launch a free hosted version of Snowy called Tomboy Online which will be available to users who do not wish to host their own instance of Snowy. However, a lot of work will be required before Snowy is ready to be deployed for large-scale use. Taylor and Armstrong are hopeful that other developers will join in the effort and contribute to Project Snowy.
Although Snowy is relatively new and still has some limitations and rough edges, it is an impressive project that brings a lot of value to Tomboy users. Snowy is also a significant contribution to the ongoing discussion of how to translate the ideals of open source software to the web while bringing the web to the desktop.