RetroShare, the encrypted peer-to-peer social networking system, has a web interface which makes it easier to use from multiple devices without running multiple nodes. The web interface works, but it is in need of improvements in its API, appearance, and user friendliness.
The web interface is particularly important to those who wish to use RetroShare heedlessly on a server, so they especially will benefit from improvements to it.
This project will mainly involve building on and redesigning the web interface API, libresapi.
Who I am
My name is Kevin Froman, I am a 19 year old American computer science student. I am passionate about online privacy, information security, and decentralized networking. I mainly have worked in web and mobile development, however I have some experience in standard desktop development as well.
More info about me, as well as a mirror of blog posts written here, is available at my website.
As with all projects, mine is made up of several main goals:
- Switching the RetroShare web server library to Restbed (https://github.com/corvusoft/restbed)
- Properly serializing all data in and out of the API as JSON
- Refactoring and/or migrating existing code where applicable
- Maintain existing supported RetroShare features in the UI (do not lose any in migration)
- Add authentication (likely sha256-HMAC) to the interface to protect against certain browser attacks
- Re-designing the front end, both style and functionality, likely using VueJS.
- I am not a web designer, however I can definitely improve the appearance
Bonus goals include:
- Adding more RetroShare features to the UI (the features the web UI supports is incomplete)
- Making the web interface easier to setup on headless servers
- External HTTP API mechanism with CORS (Cross Origin Resource Sharing)
Bonding Period Experiences
Leading up to and during the Community Bonding Period, I got to know my mentors Cyril and Gio better and explored the RetroShare code base, especially libretroshare and libresapi. We discussed details about the project and the way project goals will be implemented.
As a way to dive into RetroShare, I worked on a backup system for RetroShare profile data to XML files. Unfortunately, I did not get a lot done on this, mainly do to final exams and projects for my classes which overlapped with most of the bonding period, but also due to roadblocks I ran into involving my development environment, personal issues, and less than optimal time management on my part. I felt I needed to spend time looking at libresapi and studying the code base in general, in order to be better prepared for the main coding period. The issues I had have been resolved.
At first, I found diving into this a large, multi-author code base intimidating, but I learned more of its structure and feel more confident for the main project.
My first project milestone is to fully analyze libresapi and to look for any code that should be kept/refactored and to finalize exact details of the new API system (white-boarding, prototyping, writing unittests). If all goes as planned, the first milestone will be done before May 28th.
I expect this goal to be accomplished early, so I will likely also be starting on the second milestone during this time, which is to get the base API system setup (both for the front-end and back-end).
I look forward to a summer working on RetroShare, and I believe my project will be a valuable contribution.
I wish the best of luck to fellow Freifunk GSoC students!