Solid on SAFE Updates

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 :grinning:) 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.

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’ :wink:, 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

41 Likes

Thank You Very Much!:ant:

3 Likes

I was looking at the dweb site recently and thinking about i. if/how I could help possibly with documentation/packaging (given my neanderthal technical skill level) and at the same time “learn and understand” what you are saying.:grin: ii. (Davids recent Maidsafe pricing discussion comment re) what “services” could we place around the dweb capability … “positioned” for non tech dummies like me. … I really like the dweb “automatically publish to web and/or SAFE Network” function. The ability to present simultaneously/reach audiences (and bring data thru to the safenetwork??) in both worlds seems to me to be a critical feature on the path to mainstream acceptance and as a bridge between old and new. So happy to assist with some of the less technical tasks. Let me know when suits for a chat.

1 Like

That would be great. I’m not working on DWeb atm because the Solid work takes all my time. Maybe there are parts of the Solid stuff you could begin to look into as i know you are interested in that too.

Let me know if Solid would be of interest and I’ll think about the areas you could help with. If not we can pick things up when i get back to DWeb, or if you fancy digging into it yourself, I could try to help you out when you get stuck, although I was a beginner myself and using it to learn about React Static.

Svelte is another option there though, and they have a very helpful and active community. React Static is not so active, so you’d be more on your own, although they are going through some big changes right now which may improve that.

Thanks for coming forward, that’s really encouraging :slight_smile:

3 Likes

Solid is definitely of interest and keen to learn/understand how to speak ‘solid’. I did (try)set up a POD some time ago but didn’t known where to go from there. Let me know the areas you think I can help.

Re Dweb not sure the best way/where to start digging in myself. Checked out the Svelte vs react comparison. Definitely could use your help here!! One of my “foundation” objectives to support the safenetwork “services” with dweb is to establish safe://commons(sense) so interested to understand which is best for this.

The objective with this site is to intro a
i. commercial/mutual dataplume (vs the proprietary dataplume model described in ODI’s #Open The role of data in an AI business model) model/incentive to focus key players around a systemic solid & safe deployment path leveraging your integration work/path
ii. secure the additional resources/support you and others need to leverage y/our work.
One possibility, similar to Glen’s Devolution model with “4 applications which are interconnected through APIs” is a demo Health AI testnet around an existing application. Bit of learning/work there so happy to focus on solid. (with some Dweb questions/guidance :grinning:)

OK, I’ll have a think. Can you give me an idea of the kind of technical things you feel comfortable with, any things you might like to learn, and anything else that will help me identify suitable tasks? The most useful tasks right now are probably technical, although I need to sit and think a bit in case I’m just too focused on that to realise what else needs doing! I’ve been working on my own mostly for so long I’ll need to learn a new mindset.

I’m off on holiday this week, so I’m not sure how much time I’ll have to spend on Solid SAFE for a few weeks, so please bear with me and don’t be discouraged if I’m a bit slow. It’s great to have help, thanks very much.

Great update—much appreciated :pray:

1 Like

Hey @happybeing, thanks for the update. I have a basic question: what role does SAFE play in the Solid ecosystem? From what I understand, it’s to do with networking and storage and not the client applications, which means that this effort will lead to a SAFE alternative to NSS?

3 Likes

The Solid project is still focused on pod servers while also being open to providing alternative kinds of storage. But Solid is a protocol, based on very simple server side (LDP storage + SPARQL + WebID etc), so it is feasible to replace the backend (yes NSS) with something else, and my work is focused on that being SAFE, and making that as easy as possible.

9 Likes

Thanks for your response, @happybeing. So, from what I gather the fact that NSS uses filesystem for storage is an implementation detail in NSS and not prescribed by Solid, and so that implementation can be swapped for storage using SAFE. Is that correct?

2 Likes

By necessity you have had to be very focused on the technical deliverables otherwise we don’t have anything to package or distribute. However as you have rightly pointed out documentation for safedrive as a decentralised file system, safegit/plume & dweb commercialization requires both technical (which you understand) & commercial thinking/documentation (where I can best assist). This includes writing product type stuff (product, price, promotion, place), operating procedures (Quality business operating system), Origination/Licensing/partnership/funding Agreements … related to your tech stuff which given your progress is a necessary focus and mindset eventually.

What we are all doing is completely new so we all need to learn from each other and together as we go forward. Working on the complimentary documentation to commercialisation will enable us to understand each other’s requirements to focus/progress y/our deliverables.

It helps also if we have a common outcome to focus on to align our thinking, narrative and agree a common language/story, documentation, system /IT actions etc. This is where I think the safe://commons design path, which by necessity must incorporate safedrive as a decentralised file system, safegit/plume & dweb components as part of Quality Business Operating system (QBOS) to enable a mutual AGI strategy, could assist. This context could be the best way to define what I need to learn on the tech front and help you identify suitable tasks in the short term! I will need to PM my thoughts here due to confidentialities. Also happy to help with any opportunities you feel are key.

As we move forward we will need a way to share and manage safe://commons documentation. To assist this need I have established a Commons Central Library which will sit directly behind safe://commons(sense) with the following structure (which we can progressively improve)

i. Commons Central Directory - which is where we can place/manage our (commercial & technical) working docs and where they can be deployed as pre-defined product outcomes which are set up as a “Curated set of working docs & links that persist”. NB a “repeatable framework of terms and mechanism” is a key ODI definition of a data trust.
ii. Commons Central Binary Library – where we can put technical documentation associated with establishment and management of the binary library David has spoken of previously. If I understand correctly could this be a place where we provide a “permissioned centralised view/access” to a safegit (decentralised IP) library catalogue to assist overall network learning & ability for any Community to access improvements easily?

In the first instance we could use this to assist us and others who contribute.

I hope you have had a good break and this helps you get back into it. PS Is it still hot OT? :slightly_smiling_face:

I’m not interested in commercialisation from a monetary perspective, just to be clear. If you mean, helping others to use and build on what I create, then that might be termed commercialisation, but the term doesn’t imply that to me.

I’m still on my holiday (it’s cooler now BTW :sweat_smile:) but also working on Solid on SAFE, so if you are ready we can still progress ways you can help, and maybe get you started.

Documentation is going to be most useful for the APIs at this stage as there are no products, mainly proof of concept code and some demos. I think right now the closest thing I have to a ‘product’ is SafenetworkJS, although that is going to become unstable and could change quite a lot once Maidsafe rework the higher level APIs, so it’s a tricky time. I still think it would be useful to have someone working on the API documentation though.

Another area of less technical work that would help is in testing and documenting Solid on SAFE. So apps I’ve got going, what this means, how to try them out etc. Later, how to take an existing Solid so and get it working on SAFE.

I’m not sure these any of these will appeal to you, which is fine. In that case you are free to take any of my work and develop it in your own way of course. That’s the idea really :smile:

5 Likes

I translated the “Solid on SAFE a short update” in Bulgarian. It is a great pleasure to be alive during the time of such people as you Mark! :slight_smile:

Thank you very much for the work you do!

https://safenetwork.bg/solid-върху-safe-новини-от-марк-хюз/

9 Likes

Thank you @dimitar that is brilliant! I shall tweet it. Can you draft me a tweet for it? With a hashtag for Bulgaria. Wow, I’m very chuffed :smile:

2 Likes

Yes of course! However, I do not know what the hashtag is for Bulgaria … I do not use Twitter :frowning:
https://twitter.com/MaidsafeB/status/1156909168533692417?s=20

Cool, RT’d. I’d also love to be able to use your graphic on dweb blog with appropriate credit.

1 Like

Just say what size you want it and I’ll make it bigger. The size now is for Facebook :slight_smile:

1 Like

Solid on SAFE Micro Update

Despite being on holiday, or perhaps because of it, I’ve made some great progress this week. I’ve tested my libraries with three different apps, which is really encouraging because each uses different builds of the Solid on SAFE libraries in different ways, and each has a different workflow for login etc.

And a special mention for the incredible @dimitar who has translated my recent Solid on SAFE Update into Bulgarian! And he made the graphic above which I have stolen :grimacing:

Surprises coming from all directions this week. Thank you very much Dimitar, you really are an incredibly helpful and hard working chap.

Solid Apps and Libraries

I now have three libraries that enable a Solid app to work on SAFE, including using a SAFE WebID via the experimental drop down in SAFE Browser.

These apps are all virtually unmodified, and can be deployed as is on either Solid/web, or SAFE Network:

  • Plume blog - as before, but now getting author info from your SAFE WebID profile and logging in using Solid only code (no SAFE specific hacks)! (github).
  • Solid Filemanager - view, create and edit files at any SAFE location. (github)
  • Solid IDE - view, edit and test your web apps / web pages directly in the browser using ace editor (with syntax colouring, and key bindings for popular code editors). (github)

And the Solid on SAFE Libraries I support are:

All of which use SafenetworkJS to talk to SAFE using a Solid LDP interface via fetch() and/or rdflib.js Fetcher.

Getting a Solid app working on SAFE can be as simple as replacing the Solid library with the Solid on SAFE equivalent (and crossing your fingers :wink:).

11 Likes

Nice work @happybeing. Are these apps available on SAFE? Can they be uploaded to the live network using web hosting manager or are they still at the mock-only stage?

3 Likes

That’s the next step. Anyone could have a go, but but for most people it’s probably best to wait because of the need top get dependencies right. Or if anyone wants to go ahead I’ll be on hand to identify and fix any problems.

My plan is to upload each app and test it, then write some blog posts introducing the apps, libraries, and explaining how to use each app, how to get a Solid on SAFE etc.

I have a list of deployment tasks and post titles, but it will take me time so if anyone wants to help that would be brilliant.

One way to work will be for me to get an app uploaded, and then for someone to take on the task of testing that, learning to use it, and writing the corresponding blog post (see blog post topic list below).

In case anyone is interested in helping with the tasks or blog posts, here is my draft plan jotted down yesterday (obviously written for me so not intended to be self explanatory, but hopefully enough to get an idea of what is involved)…

Deploy Demos Tasks

Deploy demos of solid-filemanager , solid-ide, solid-plume-sac

  • solid-ide preparation remaining
    • use SAFE drive to upload ~/src/editors/ace/ace-releases/ace-1.4.5 to safe://ace-1-4-5-src-min
    • update links in code, samples-safe for:
      • solid-ide home URLs / defaults (search for all http)
      • review the ‘welcome’ text an have it list the files of solid-ide itself, plus easy way to get to safe-samples
      • use SAFE drive to upload ~/src/editors/ace/ace-releases/ace-1.4.5 to safe://ace-1-4-5-src-min

NOTE: include bundles needed separately with each app so can update independently:

  • update bundles and links to local ‘dist’ for:
    - solid-filemanager
    - solid-ide
    - solid-plume-sac

  • upload with SAFE Drive:

    • solid-filemanager to safe://??
      • test with ordinary SAFE WebID
    • solid-ide (upload ./samples-safe but NOT ./samples) to safe://
      • test with ordinary SAFE WebID
    • solid-plume to safe://??
      • test with ordinary SAFE WebID
    • solid-web-id-manager to safe://??

Dweb blog post topics:

These are just a quick first list. It’s a lot so might be good to rationalise and shorten somehow.

1.0 Solid on SAFE Demos (summary post showing the demos with links to):
1.1 How to view Solid app on SAFE Browser (include gotchas re logging in / selecting WebID) links to next
1.2 Using Solid Filemanager, Solid IDE and Solid Plume on SAFE (step by step, gotchas, what doesn’t work/help welcome)
1.3 How to view Solid app on SAFE Mobile Browser (Android / iOS)
1.4 How Solid on SAFE works (link to next and ‘epilogue’)
1.5 How to put a Solid app on SAFE yourself (link to ‘epilogue’)
1.6 ‘epilogue’ status (alpha2), further work (on individual apps and SoS), what’s coming with Fleming

If anyone fancies taking something please reply on this topic saying what you are thinking of helping with.

6 Likes