White Area - CERN-Solid PoC completion
Maria Dimou (CERN) & Jan Schill (IT University Copenhagen)
Presentation for the [31st May 2021 event](https://indico.cern.ch/event/1031678/)
* **Solid terms' reminder**
1. What Is Solid?
3. What Is a Solid Pod
4. What Is a Solid server
* **The CERN-Solid Proof of Concept (PoC)**
1. _Comments_ in Indico events
2. Indico Conference _Registration_ from pod data.
* **So**cial **Li**nked **D**ata, is a project, a standard, an ecosystem, a movement and a community initiated by Sir Tim Berners-Lee.
* Allows people to control _where_ their own data are stored and _who_ has access to them.
* It combines existing W3C standards and is built on top of the existing Web.
### The Solid pod
A decentralised data store for one’s personal data. A pod (*) is like a secure personal Web server for all kinds of data.
* Data is stored as _Linked Data_, i.e. the resource gets its own HTTP URI on the Web.
* The pod is described by a unique WebID. WebID examples:
(*) Pod: a protective container (from the Webster dictionary).
### The Solid server
A Web server that stores users’ pods, with support for access control.
Reminder of some Solid server implementations in the appendix.
### Ideally Solid is about escaping from this situation
_Taken from: [https://www.w3.org/DesignIssues/CloudStorage.html](https://www.w3.org/DesignIssues/CloudStorage.html)_
## The CERN-Solid code investigation project
1. **Review Solid specifications**
2. **Evaluate Solid implementations**
3. **Enrich Indico with Solid principles**
* _Comments_ in Indico events via Solid pod authentication.
* _Registration_ in Indico conferences with personal data taken from the Solid pod.
4. **Make Recommendations on Solid adoption in CERN applications**
5. **Document challenges, advantages, gaps**
### Points 1 & 2
* Done in the September-December 2020 period.
* Presented at the January 2021 White Area.
* Slides [here](https://indico.cern.ch/event/979381/)
* Detailed report [here](https://indico.cern.ch/event/979244/)
### Details on the Proof of Concept (PoC)
### Comments to Indico events via Solid pod authentication
### What you see in your pod
### Details on the code for _Comments_
* Self-contained, can be re-used in other applications
* Stores one comment in one file on data pod
* Communicates with data pod directly
* Needs authenticated Indico session
* Indico holds the reference to the location of comment
### Indico conference registration via Solid pod data - prompt
### Indico conference registration via Solid pod data - list of registrations
### Indico conference registration via Solid pod data - Linked Data
| LD: Subject | LD: Predicate | LD: Object | Indico form |
| ----------- | ------------- | ----------------------- | ----------------- |
| #me | ns:fn | "Jan Schill" | name="first_name" |
| #me | ns:fn | "Jan Schill" | name="last_name" |
| #me | ns:hasEmail | <mailto:firstname.lastname@example.org> | name="email" |
| #me | ns:gender | "Male" | Label="Gender" |
*ns = http://www.w3.org/2006/vcard/ns#*
### Details on the code for _Conference Registrations_
* **Design of implemented module**: retrieve personal information **for** an Indico conference registration **from** data pod
* Original idea to store personal information **of** conference registration **in** data pod abandoned due to:
* Sensitivity of payment details requiring reliable data retrieval
* Archival of events need the data at Indico
* Management of events/conference need performant data retrieval
## Challenges with Solid status today
* Few applications using Solid pods so far
* Very old-fashion pod UI
* No formal support for the open source solutions.
* A great enthusiasm in gitter though!
* Solid being a living standard, the specifications also evolve, especially in the Access Control area, leading to varying server implementations.
==> Impact on test-suite results.
## Strategic decisions for CERN
Despite the challenges the Solid project has:
* Government agencies that embrace it officially (UK NHS, Flanders' administration)
* At least four start-ups per month showing Solid pod interfaces.
* Almost 2K members in [the Solid gitter chat](https://gitter.im/solid/chat)
* It is strategically and ideologically important for CERN to be engaged with Solid.
For the above-explained reasons we recommend that:
* we install the Community Solid Server (CSS).
* integrate it with the new CERN SSO.
* develop our own UI with open source tools.
* investigate the usage of CERNBox as a Solid server through [solid-nextcloud plugin](https://github.com/pdsinterop/solid-nextcloud).
See [the Policy document](https://codimd.web.cern.ch/1VLKK_rYQYixHmwOuGL2fg#) for details.
## Appendix: Solid Servers today
A Solid server is a Web server that stores users’ pods, with support for access control.
1. **Node Solid Server (NSS):** _Open Source_ server by the MIT Solid team since 2016.
2. **Enterprise Solid Server (ESS):** inrupt’s commercial _Closed Source_ alternative, based on [Trellis](https://www.trellisldp.org/). Launched in November 2020. [Article](https://sdtimes.com/data/inrupt-launches-enterprise-solid-server-to-restore-trust-in-data/).
3. **Community Solid Server (CSS):** _Open Source_ project by Ghent University, paid for by inrupt, to write a Solid Server from scratch in [TypeScript](https://www.typescriptlang.org/).
4. More servers like PHP or Ruby are in the making.
## Thank You
Jan Schill for fantastic work
Adrian Moennich for expert Indico advice
Pedro Ferreira for encouragement
Tim Berners-Lee for guidance
Michiel de Jong for Solid expertise
Ruben Verborgh for reading the Policy note
Thomas Baron & Tim Smith for approving this work
* [The Solid project website](https://solidproject.org)
* [CERN-Solid entry point](http://solid.cern.ch)
* [CERN-Solid chat](https://gitter.im/cern-solid/community)
* [The PoC Project description](https://it-student-projects.web.cern.ch/projects/cern-solid-code-investigation)
* [The PoC Project repo](https://gitlab.cern.ch/cern-solid)
* [Follow-on project](https://it-student-projects.web.cern.ch/projects/cern-solid-and-slides-app)
* [Policy document for a CERN Solid server](https://codimd.web.cern.ch/1VLKK_rYQYixHmwOuGL2fg#)