SwellRT
SwellRT, is a free/open source backend as a service that allows faster development of apps providing -out of the box- common features found in any modern application (auth, real-time storage, event based integration...). In addition, servers can be federated on Internet through the Matrix protocol, enabling decentralization of data and users, and interoperability among providers. It has similarities with Google Firebase, Meteor or Realm frameworks, but it provides stronger capabilities for collaborative text editing and a simpler API. More at http://swellrt.org and https://github.com/P2Pvalue/swellrt
Ideal candidate:
SwellRT is interested in proactive candidates with experience in backend development and mobile platforms. Depending on the project, different sets of programming languages are required (as specified in the ideas below), although SwellRT core components are developed using Java and JavaScript. Qualities that we would welcome are initiative, creativity, and interest/experience with decentralized / federated / distributed systems or protocols. You may check Github’s open issues and the project ideas below to have an overall idea of the possible evolutions of SwellRT. Of course, GSoC candidates are encouraged to adapt our proposals to their interests and we are very open to new ideas or unexpected evolutions of chosen ones.
Project ideas:
Android Native Client
To develop a native client library of SwellRT for the Android platform. Starting with the current Java client implementation, some platform dependent components should be replaced with native ones for Android, mainly, the HTTP and Websocket client libraries. This work would also require knowledge of Android's threading model, Gradle tool, and Java/Android application packaging models.
Knowledge recommended: Java and Android, HTTP and Websocket protocols.
Mentors: Samer shassan@cyber.law.harvard.edu, Pablo pablojan@ucm.es
Access control for real-time JSON objects
SwellRT provides a real-time storage of JSON objects that can be edited by different users at the same time. In some scenarios, some properties of JSON objects are not desirable to be accessed (or edited) by anyone except for specific users. In this regard, the GSoC intern would need to design and implement an access control layer for JSON objects that can be accessed by different users. That layer would be integrated in the SwellRT implementation in Java. Also, the JavaScript client will be used for testing. To perform this task, the intern would have to understand the concepts of the Wave Protocol.
Knowledge recommended: Java, JavaScript and security policies.
Mentors: Samer shassan@cyber.law.harvard.edu, Pablo pablojan@ucm.es
iOS Native Client
To develop a native client library of SwellRT for the iOS platform. Starting with the current Java client implementation, the base Objective-C version should be generated using the Java2Objc tool. After this, some platform dependent components should be replaced with native ones for iOS , mainly, the HTTP and Websocket client libraries. This work would also require knowledge of iOS threading model and application packaging.
Knowledge recommended: Java and Objective-C, HTTP and Websocket protocols.
Mentors: Samer shassan@cyber.law.harvard.edu, Pablo pablojan@ucm.es
High-performance Server
SwellRT server is a Jetty-based Java application. It has an internal bus architecture and a custom thread model. As long as SwellRT is based on processing live transformation operations we would like to refactor current code base to provide a better scalable implementation, ideally based on a non-blocking IO server and an actor based architecture.
Knowledge recommended: Java, HTTP, Websocket, non blocking IO servers and actor based frameworks.
Mentors: Samer shassan@cyber.law.harvard.edu, Pablo pablojan@ucm.es