SwellRT has its origins in the work done within the GRASIA research team at the Universidad Complutense de Madrid, as part of the EU-funded project P2Pvalue (2013–2016), in a team led by Samer Hassan.[1] In 2014, the developer Pablo Ojanguren took the lead in forking Apache Wave, dropping several components, re-engineering it, and building a "Wave API" to build applications on top.[2] In 2015, such Wave API became a standalone product named SwellRT.[3][4]
Impact on Apache Wave project
In 2016, several discussions took place within the Apache Wave community, aiming to tackle the stagnation and crisis state of the project. The Apache Software Foundation mentor of Apache Wave, Upayavira,[5] was concerned on the project stagnation, but framed SwellRT as Wave's potential savior:
Once more Wave is on the brink of retirement. However, this time, an offer has been made of code from SwellRT, which is a fork of Wave itself, and a concall has been scheduled for interested parties to discuss whether it is a go-er. It is my (limited) understanding that many of the complexity issues in the Wave code that have prevented community development have been resolved in SwellRT.[6]
Eventually, Wave was approved to continue within Apache incubator program, and a copy of SwellRT codebase was placed in the Apache Wave repository in order to grant the Wave community access to it.[7] In this regard, Intellectual Property of SwellRT was transferred to the Apache Foundation in 2017.[8]
Recognition
In both 2016[9][10] and 2017,[11][12] SwellRT participated in the Google Summer of Code as part of the set of projects from the Berkman Klein Center for Internet and Society at Harvard University. In both years, the contributions were highly relevant. In 2016, SwellRT replaced its XMPP-based federation protocol (inherited from Apache Wave) for the Matrix.org federation protocol.[13] In 2017, end-to-end encryption was implemented,[14][15] following an innovative approach to encrypt communication in Operational Transformation collaborative documents.[16]
The project has not received new commits since 2018.[43]
Technical approach
SwellRT was a fork from Apache Wave, inheriting some of its architecture and technology stack. However, it grew beyond the limits of Wave, first presenting itself as a web framework and nowadays growing to a backend-as-a-service platform.[44][45] Its technical approach covers the following:
It is developed in Java. GWT with JSInterop is used to generate JavaScript API reusing the same source code. Android client is also built from the same Java sources.
It provides an extensible and pluggable rich-text editor component for Web (only) supporting custom annotations and widgets.
It is designed to maximize interoperability, and follows a federation approach similar to Apache Wave, using XMPP or Matrix.org communication protocol. It aims to support the creation of apps that are federated, i.e. rely on multiple interoperable servers, and objects shared across servers. This allows organizations to control their own data.
Collaborative objects
SwellRT provides a programming model based on collaborative objects. A collaborative object is a JSON-like object that can be shared by some users (or groups) that can make changes in real-time. Changes are propagated (and notified) in real-time to any user connected to the object.
A collaborative object can store properties of simple data types (string, integers, etc.) as well as rich-text and references to files or attachments. This approach is suitable to implement any document based collaborative application like text editors or spreadsheets.
Objects and participants are uniquely identified on the Internet, enabling decentralized access from different federated servers.
SwellRT facilitated the development of mobile/web apps, and thus several apps have been built using this technology. Apart from the demos provided by SwellRT,[46] third-parties developed other demo apps, such as a Q&A site,[47] an extension to extract keywords,[48] a collaborative scrollbar,[49] a political participation Android app,[50] a Trello-SwellRT connector.[51] Besides, two fully-fledged apps are currently using SwellRT technology:
JetPad, a GoogleDoc-like collaborative editor, free/open source and federated [52][53][54]
Teem, a free/open source web/mobile app for the management of communities and collectives[55][56][57]
^Ojanguren-Menendez, Pablo; Tenorio-Fornés, Antonio; Hassan, Samer (2015). Distributed Computing and Artificial Intelligence, 12th International Conference. Advances in Intelligent Systems and Computing. Springer, Cham. pp. 269–276. doi:10.1007/978-3-319-19638-1_31. ISBN9783319196374.