SwellRT: Difference between revisions

From Berkman Klein Google Summer of Code Wiki
Jump to navigation Jump to search
(Created page with "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...")
 
(old project)
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
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
{{Template:Oldproject}}
 
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.
<br>
'''Mentors:''' Samer [mailto:shassan@cyber.law.harvard.edu shassan@cyber.law.harvard.edu], Pablo [mailto:pablojan@ucm.es 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.
<br>
'''Mentors:''' Samer [mailto:shassan@cyber.law.harvard.edu shassan@cyber.law.harvard.edu], Pablo [mailto:pablojan@ucm.es 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.
<br>
'''Mentors:''' Samer [mailto:shassan@cyber.law.harvard.edu shassan@cyber.law.harvard.edu], Pablo [mailto:pablojan@ucm.es 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.
<br>
'''Mentors:''' Samer [mailto:shassan@cyber.law.harvard.edu shassan@cyber.law.harvard.edu], Pablo [mailto:pablojan@ucm.es pablojan@ucm.es]

Latest revision as of 09:53, 18 March 2019

This page is for an old project that is not be part of Google Summer of Code currently. If you are a student looking for projects to get involved with we suggest you check out the projects linked to from the main page of this wiki.

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