SwellRT
SwellRT, the first full-stack framework for developing decentralized real-time collaborative apps in JavaScript/Java/Android. It is basically an alternative equivalent to the Google Drive Real-Time API but decentralized and open source. For instance, we can build GoogleDoc-like collaborative documents which have decentralized/federated contents; not limited to just text but with embedded videos, maps, etc. that may be also collaborative. If one person disconnects temporarily, they can continue working and it will sync when connection is recovered (so accommodating unstable/poor connectivity). More at http://swellrt.org and https://github.com/P2Pvalue/swellrt
Ideal candidate:
SwellRT is interested in proactive candidates with experience in back-end development. 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. 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 ideas 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:
Wave Federation protocol over the Matrix Protocol
SwellRT is based in the Apache Wave protocol (Former Google Wave). It allows different servers to set up a federated network providing distributed real-time storage services. Currently the Wave Federation protocol is implemented over the XMPP transport. This projects looks for a replacement of the XMPP layer, specifically using the Matrix protocol (https://en.wikipedia.org/wiki/Matrix_(communication_protocol). The GSoC intern would need to integrate the Matrix protocol in the Java server of SwellRT and to set up a federated network to test the implementation. To perform this task, the intern will have to understand the concepts of the Wave Protocol and the Wave Federation protocol.
Knowledge recommended: Java and knowledge in network 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 Client library
To develop a native client library of SwellRT for the iOS platform. SwellRT provides a REST service layer and a WebSocket API, however a native library wrapping these services is more suitable for client applications. The GSoC intern will need to understand the concepts of the Apache Wave Protocol as long as the concepts of SwellRT. Existing native library in JavaScript, Java and Android can be taken as guidance.
Knowledge recommended: Objective C or Swift. Understanding of HTTP, Websockets, JSON and optionally OAuth1/2
Mentors: Samer shassan@cyber.law.harvard.edu, Pablo pablojan@ucm.es
Python Client library
To develop a native client library of SwellRT for the Python language. SwellRT provides a REST service layer and a WebSocket API, however a native library wrapping these services is more suitable for client applications. The GSoC intern will have to understand the concepts of the Apache Wave Protocol as long as the concepts of SwellRT. Existing native library in JavaScript, Java and Android can be taken as guidance.
Knowledge recommended: Python. Understanding of HTTP, Websockets, JSON and optionally OAuth1/2
Mentors: Samer shassan@cyber.law.harvard.edu, Pablo pablojan@ucm.es