Partly for newcomers (please ask anything) and as an update to put different threads of what I’m up to in context…
What is Solid on SAFE?
Solid on SAFE (also available on twitter ) means helping to get Solid apps to work on SAFE Network with as few changes as possible. Solid is a project by Tim Berners-Lee (inventor of the web) to help decentralise the web and give users control of their data. Supporting this on SAFE is good for lots of reasons that I won’t go into here as that’s covered elsewhere on this forum.
Read Why Solid on SAFE? on my dWeb Blog.
Solid is at a similar stage of development to SAFE: after a long period of getting the design and essentials worked out, now very focussed on delivering the infrastructure and developer tools. I’ve had a lot of interaction with them over the last couple of years, and myself and some of the Maidsafe have met Tim and others independently during that time, mostly just discussions and learning about each other’s goals, approach and implementations.
Maidsafe and Semantic Data
Maidsafe have taken on the fundamentals within Solid including semantic data representation (Linked Data / RDF), querying (SPARQL) and are building this into the core to make it easier to build powerful semantic data apps, not just Solid apps, but obviously a great help with that.
Solid on SAFE
I’ve been working to bridge the gap in the short term, and provide a Solid compatible API, so it becomes as easy as possible to take an existing Solid app, swap in SAFE compatible versions of Solid libraries, and run the app on SAFE Network.
So far coding for this has just been me, although I’ve had a lot of support and help from the community, as well as with testing. I’d welcome help with code, and there’s plenty of scope for others to join in and help with this work, and I’m writing this in part as an open invitation to join in, or at least to dip in a bit and learn about this in more depth. So please feel free to ask anything you like.
Status
The Solid on SAFE compatibility libraries are in development, but have already been used to demonstrated the feasibility using SAFE alpha2 and mock networks, and there’s a talk with demo explaining this and the approach from the SAFE DevCon in 2018 (Supercharging the SAFE Network With Project Solid).
That demo showed the feasibility of implementing a web protocol used by Solid (LDP) by intercepting browser fetch()
and/or a popular Solid library (rdflib.js).
Since then I’ve developed a version of another key Solid library solid-auth-client which provides login and user identity to apps. That already uses the experimental SAFE WebIDs API which Maidsafe presented at DWeb Summit in 2018. I have this working on the SAFE ‘mock’ (local development) network using solid-filemanager as a demo, but this is not yet public.
Recently I also developed a fork of the SAFE WebID Manager (demo’d by Maidsafe at the DWeb Summit) which creates a storage container for each new WebID and inserts it’s location into the WebID profile document so that it can be found by Solid apps. To distinguish it I’m calling it the Solid WebID Manager for now (although the differences are minimal). This will form part of the next Solid on SAFE demo I’m aiming to provide, see next.
NEW: Solid Apps on SAFE!
4th August 2019: Solid apps available to try on SAFE are listed here
Current Activity
I’m working towards a demo of existing Solid apps doing both authentication and data access, including using SAFE WebIDs for identity (selectable in the SAFE Browser drop-down). These apps will be standard Solid apps with little or no modification, except for swapping in the SAFE compatible solid-auth-client
library.
Right now I’m working through a list of existing Solid apps to help me test my work and provide suitable demos on alpha2. Some apps use other libraries such as solid-file-client which in turn make use of rdflib.js and/or solid-auth-client, so there’s plenty of scope for chasing bugs!
Since posting yesterday I have much of Solid IDE working, which is a neat source code browser, editor and live test UI:
Future
Later I, or hopefully ‘we’ , will look at the feasibility of making SAFE compatible versions of other libraries such as Comunica / LDflex / LDfragments (either by implementing SPARQL in the client, or using the new SAFE RDF APIs when they become available). And as the SAFE APIs extend to include new data types, RDF and SPARQL, there will be some really cool things to update and add to all of this.
Implementation and What Needs Doing
All my work is targetted at NodeJs apps, browser and command line, and begins with SafenetworkJS, a library which simplifies use of the alpha2 APIs. That library is still under development but is the basis of the Solid demos and Solid on SAFE libraries mentioned above, as well as SAFE Drive (a FUSE mounted drive of your SAFE storage). So it is fairly complete and fairly well tested. However, it will need updating when the SAFE APIs add support for the new data types (AppendableData etc.) and again when support for RDF and SPARQL are added/finalised.
Help Wanted
So there’s a lot of work, more than I can realistically do on my own (but I will!) and plenty of scope for people to join in and help, either with code, or a range of less technical tasks (such as getting the documentation up to date) as well as testing or just telling others about this and what you learn by joining in.
If you fancy learning or think you can help with any of this, let me know here. Also by PM if you prefer at first, although public is good if you don’t mind as it helps others to have a go when they can see how that works, and so makes better use of my time.
Updates:
1st August 2019
4th August 2019
Solid apps available to try on SAFE are listed here
24th October 2019
New post on dWeb Blog: Why Solid on SAFE? the content of which is self explanatory. Please read and share if you think it interesting to others. I’ve also made good progress getting test apps working on SAFE Fleming (including the shared vault) although they are limited by the very restricted API in the SAFE Fleming Browser. I’ll wait until things work a little better before encouraging you to play with them though! This is a major chunk of work so it might be a while, even when the browser is more complete!