We are connected to Imperial College through Outlier Ventures. These are some project ideas for students to look at and give feedback on.
Fission is building developer tools to make it easy to deploy apps directly from their laptop – with user controlled data and a distributed “backend as a service” – so that everything from hosting to database to user authentication is included. This is a “serverless” style of architecture.
Brooke’s recent presentation provides a high level overview of our technical roadmap.
The InterPlanetary File System (IPFS) is a key building block for us. ipfs.io is a starting point for learning more, plus the ProtoSchool Tutorials are very helpful.
You can also jump straight to our Guide on how to work with the Fission tools. After you download our command line tool, you can publish your apps directly from your laptop.
There are some existing App Ideas we’ve written up previously that students could also tackle, including extending and improving existing ones.
We’re interested in having any code, in any language, available as open source (Apache2 or MIT or similar license). This means it would add to the students’ Github portfolio and ideally live on over time.
We have client libraries available for a long list of languages – Clojure, C#, Elixir, Elm, Erlang, Go, Java, JS, Kotlin, PHP, Python, Rust, Scala, Swift, TypeScript. They are auto-generated, so improving them for a particular language would be valuable as part of any project.
Fission builds on top of IPFS, and we’ve opted for IPFS-focused projects that are broadly applicable to the whole community. We’re happy to add convenience features to the Fission platform to either integrate them, or make them easier to use with a Fission account.
We have also done extensive work with smart contract standards, such Fission Status Codes EIP 1066. We’re happy to support students who would want to work on projects related to this. Feel free to suggest your own project!
Expanded IPFS User Settings
We build a demo app for IPFS User Settings which allows users to store universal settings in IPFS and take them with them to other sites.
Students could expand on this application, adding additional and more in-depth settings.
Alternately, they could make a front end library that would make it easy for app developers to integrate portable user settings.
Another option is to build a similar application but for something other than user settings. One thing that we’ve discussed internally is portable dotfiles on IPFS.
IPFS Image Resizer and Metadata Generator
When images are uploaded to IPFS, they are given a hash that is unique to the original file, which serves as the content address.
Come up with some code that takes an original image on IPFS, resizes it to multiple sizes (and potentially croppings), and writes some metadata linking it to the original. This would likely be a directory which contains a JSON file that links the original IPFS content address to the newly created, resized versions. Research needed on the best approach
This might mean just extending / integrating something like imgproxy to work with IPFS, but because of the content addressing rather than URI based nature of IPFS, rethinking how this works would be very valuable.
Storing metadata – eg. captions or tags – is another area of research. How do we keep various chunks of JSON around that point to the image? How do we, from an image, find that JSON metadata? Would encoding the metadata directly into the image be valuable?
Mobile IPFS Client App
Our friend Ligi has written IPFSDroid and IPFS API for Kotlin – both in Kotlin, which is similar to Java.
We would look to come up with a simple, single use app that allowed for using IPFS on device, either Android or iOS.
Some of the types of high level features that would be interesting:
- file share / sync
- photo gallery
There would need to be some research on a client-side IPFS server on the mobile device is possible. Having something cross-platform written in C, or cross-compiling some of Ligi’s Kotlin work. This is a large chunk of work and we would appreciate any POC or research findings alone.
Otherwise, extending on Ligi’s Android work would be the likely best path.
There is a Swift IPFS HTTP API but that is less interesting, as the mobile device can’t directly act as a server to serve the user’s files.
Cross Platform Mobile Library - C++ Implementations of libp2p, IPFS
For mobile use, a cross platform library for libp2p (the networking layer which is a dependency) and the IPFS protocol on top.
This is a VERY big task, so a lot of this will be compiling research and then deciding on a best course of action for a POC.
If you are interested in low level networking and distributed systems on reduced power devices, this would be perfect for you. While we’re interested in the output of this, we personally couldn’t give very much code support, but could plug you into various other groups like Protocol Labs.