Yet another Solid Hello World

My intention with this Hello World was to make it as simple as possible, and show an understanding of how Solid works. Yes I could have used JSON-LD as well, but I chose turtle because I think it’s the most common that other libraries use under the hood.

As per Fission/remoteStorage, I haven’t worked with those so I’m not sure, but I think the libraries are more consolidated than in Solid. Everyone writing Fission/remoteStorage apps, is using those libraries, whilst Solid apps are written using different libraries. So my intention with using fetch directly was to help people understand what’s going on under the hood, and even if later on they start using a library (I hope they do), they’ll be able to understand what’s going on if they inspect the network requests.

Maybe it would have been valuable to follow the same approach with fission/remoteStorage? Maybe, I’m not sure because I have no experience working with those. In any case, looking at the Hello Worlds that @rosano made I think I have a much greater understanding of how the other protocols work :). So mission accomplished, in my opinion.

2 Likes

Absolutely!

I’d agree with this.
My only concern is if it comes across as if Solid requires a low level approach and is therefore harder to get into - I don’t think that’s the case, even if a single dominant framework could indeed lead to greater adoption.
As long as it’s clear Solid does have high level frameworks too, I’m happy :slight_smile:

I’m concerned about this too. I respect @NoelDeMartin’s approach and think it’s important to explain or illuminate what’s going on, but it might be good to also have a ‘library-based’ version with minimal lines of Solid code as an objective. “Simplified Solid”?

1 Like

(posted twice by mistake, please ignore this comment :sweat_smile:)

I’m thinking about adding a FAQ to the README answering this question, and any others that may come up. Do you think that’d be enough?

I could make another hello world using a library, but I think there are already existing examples with that, so I’d rather link to them instead. They may not be as simple as the one we made, but using this as a starting point should make the others easier to understand.

Also possible to do both.

I found this conversation very informative! All the examples and ideas listed here are awesome and reflect the diversity of thought, experience, preferred styles, and so on, of the community.
So to overarch all these and not lose any, I would be interested to see a website like: newtosolid, firstcodeinsolid or whatever, where I can follow a questionnaire asking me about my experience and preferences and then be presented with the best fitting hello world examples for me.
I can imagine questions like:

  • are you familiar with LinkedData, RDF, Semantic Web?
  • what frontent framework do you know best?
  • are you new to authentication on the web?
  • do you prefer a task management app or a game?
    and so on…

I will think of creating something like this, which could be a simple github page. (also without a dedicated domain name just to see if it is successful at first).

What do you all think? #hopingtopreserverDiversity

4 Likes

Very cool ideas @Timea!

2 Likes

In principle this could be useful, but we’d have to watch out for broken/outdated hello worlds, and warn the user that we are still at a stage of breaking changes. So maybe we’d stop at a prototype at the moment and wait for at least a versioned spec before it was made public?

In the interest of solidifying solid project it would be great to be able to describe the hello worlds (and other apps) with a suitable vocabulary instead of using, e.g. GitHub tags or a manually grouped listing.

One way to approach this would be to start a ttl file describing metadata for each of https://github.com/solid/solidproject.org/blob/main/pages/use-solid/apps.md
An extensible categorisation scheme could then be started to cover the questions above.
E.g. <#app1> a <#HelloWorldApp>. <#HelloWorldApp> rdfs:subClassOf someexistingontology:App .
<#app1> a <#RequiresRDFknowledgeApp>, <#ReactApp>, <#DPoPApp>, <#TaskManagementApp>.
<#ReactApp> rdfs:subClassOf <#AppUsingaFramework>. <#AppUsingaFramework> rdfs:subClassOf someexistingontology:App .

I’m relatively new to creating vocabularies, so I’m sure there’s ways of improving on this approach.

I also like the idea of progressively more complex versions of a single hello world that gradually introduces more sophisticated concepts.

Yes great idea. Can’t have too many ways in for newcomers and also you can build the experience you would want to see (GitHub Pages is simple as you mention).

1 Like

Thank you for the encouragement! All valid points and ideas.
Before we overcomplicate, I would just prototype smth up real quick (even like a typeform) to discover fast what is missing and what problems could appear before we commit to a ‘production ready’ solution. This could be useful to also dicover the schema that needs to describe a Hello World example.
I’ll come up with something that can be feedbacked and improved.
(Secretly, not so secretly, I want a solution like it was mentioned:

similar to the new Glossary from Jeff https://jeff-zucker.solidcommunity.net/sp/, which I would not know how to code up just yet but sure will soon enough :slight_smile: ).

1 Like

Yes, I had planned to do an RDF of Solid apps but the team decided (rightly I think) that the apps listing should live here in the forum rather than on solidproject.org and that it would be mostly user maintained. I had ideas for a categorization scheme and ontology for the apps but dropped it. If it’s of interest, I could dig it up. Timea, you are spot on that this is related to the Glossary and my work on the sp demo.

1 Like

Sure, if anyone wants to make an additional “simple example” using solid-client or something else, go ahead. But I’m not sure where I’d put it in the existing repository without over-complicating the structure.

I’ve added a couple of FAQs and also pointed to other examples, let me know if there is any other doubts I’m not answering or further examples I should point to.

Personally, I’ve already made a more advanced Hello World using Soukai called Ramen, and I haven’t really used any of the other libraries so I prefer someone else to do it.

1 Like

Yes anyone be welcome to add this: you might just duplicate the /solid folder and replace the lower-level parts with library calls. I think two seperate Solid examples can co-exist together, just needs to be linked and documented.

I realize I hijack a bit the topic here. I just wanted to share this preliminary excel (sorry): Solid Hello World - Google Sheets where I collected the basics about the mentioned basic Solid examples.
Maybe I should create a dedicated forum post about just this.
All the examples are not complete. Maybe the creators can help: @hochstenbach, @NoelDeMartin, @rosano, @Virginia .
Feel free to add your questions, point of views (column) and we can see how it develops. Then I attempt to do the data model and the end application.
P.s. With this view, it is fast clear where we have gaps. And maybe we can also collect what beginners would like to see.

2 Likes

@NoelDeMartin @rosano
Using Noel’s code I made an other example of solid Hello World using the solid-file-client high level library.

The project is hosted at GitHub - bourgeoa/hello: A simple Hello World for 0data protocols.
App working link 0data Hello World.

If you like it I can push it to a duplicate folder.

3 Likes

@Timea I think this is a way to ‘synthesize’ more than ‘hijack’ :wink: Looks great so far. Once the structure has been solidified (pardon the pun) and gaps are closed, I would move to something like GitHub so that we have more control and transparency over the data and edits.

2 Likes

@bourgeoa Wow, that’s great! I think you meant the github.io domain https://bourgeoa.github.io/hello/solid/. I tried it and it seems to work seamlessly with data created by Noel’s version.

We should merge this but it seems like your current changes would overwrite Noel’s code, so I would suggest:

  1. Make a new fork from 0data/hello to bourgeoa/hello2
  2. Duplicate /solid to /solid2 and replace all the files with the ones in bourgeoa/hello
  3. Submit a pull request to the 0data/hello

We can clean it up more later.

Thanks @bourgeoa! I have a couple of comments, if you open a PR in the 0data repo as @rosano suggested we can discuss it there.

folder and app name : have you any suggestion solid-file-client ?