The CERN-Solid Proof of Concept (PoC)
===
[Maria Dimou (CERN)](https://cern.ch/maria)
Presentation for the [10th August 2021 Women of Solid meetup](https://www.womenofsolid.org/meetup.html)
---
## How did this PoC start
From creative thinking and lobbying in [the CERN-Solid gitter channel](https://gitter.im/cern-solid/community#).
1. [Jan Schill](https://janschill.net/profile/card#me) looking for a MSc thesis subject for himself.
2. [Maria Dimou](https://dimou.solidcommunity.net/profile/card#me) wrote [this project description](https://it-student-projects.web.cern.ch/projects/cern-solid-code-investigation).
3. CERN and Solid experts supported us and answered our questions between September 2020 and June 2021.
4. [This excellent quality thesis](https://cds.cern.ch/record/2771156) came out at the end.
---
## Overview
* **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.
---
### Solid
* **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:
* https://timbl.inrupt.net/profile/card#me
* https://dimou.solidcommunity.net/profile/card#me
* https://janschill.net/profile/card#me
(*) 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
![](https://codimd.web.cern.ch/uploads/upload_50196f49ba7d0c4698c6fa16fde91d4d.png)
_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**
---
## What is Indico
* A CERN-developed open-source tool for event organisation, archival and collaboration.
* [Indico](https://getindico.io/) is used every day at CERN to manage more than 600,000 events of different complexities and 200 meeting and conference rooms.
* Also adopted by UN agencies and other organisations.
* Resilient and reliable for over 20 years.
* Indico has no incentive for user data in modules of:
* Meeting comments
* Conference registration
---
### Points 1 & 2
* Done in the September-December 2020 period.
* Presented to the CERN community in January 2021.
* Slides [attached to this event](https://indico.cern.ch/event/979381/)
* Detailed report [attached to this event](https://indico.cern.ch/event/979244/)
---
### Details on the Proof of Concept (PoC)
---
### Comments to Indico events via Solid pod authentication
![](https://codimd.web.cern.ch/uploads/upload_0889dec0ae0b793c1f97deb912de31d4.png =600x)
---
### What you see in your pod
![](https://codimd.web.cern.ch/uploads/upload_43756b69fc349d881b768cb9c8192dff.png)
---
### Details on the code for _Comments_
* Client-side developed JavaScript application
* 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
![](https://codimd.web.cern.ch/uploads/upload_bcfae0e3771587f3ca0179a6b17b084b.png =600x)
---
### Indico conference registration via Solid pod data - list of registrations
![](https://codimd.web.cern.ch/uploads/upload_30b59e52289c6b683e885da70fb812f9.png =850x)
---
### 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:schill@hey.com> | 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)
* Often start-ups show Solid pod interfaces at the monthly Solid World webinar.
* 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.
---
## Conclusions
For the above-explained reasons we recommend that:
* we install the Community Solid Server (CSS) at CERN - CSS completion announced on 2021-08-05.
* integrate it with the CERN Single Sign-On (SSO).
* develop an attractive UI with open source tools.
**OR**
* investigate the usage of [CERNBox](https://up2university.eu/guide-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.
---
## Useful use case for CERN
**Providing Solid pods to all CERN users would answer the cross-app "CERN user profile" aspiration**
Some CERN apps offer user profiles, e.g. Indico:
![](https://codimd.web.cern.ch/uploads/upload_9acef86975387a820f071bbf61dbec0b.png =300x)
These are _not_ owned by the user, nor can they contain any data of the user's choice.
To go further, now lobbying for resources to work on the [follow-on project](https://it-student-projects.web.cern.ch/projects/cern-solid-and-slides-app).
---
## 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
Tim Berners-Lee for guidance
Michiel de Jong for Solid expertise
Ruben Verborgh for reading the Policy note
CERN management and colleagues for following this work with interest
---
## References
* [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#)
---
## References historical
Past efforts to keep CERN involved in the future of the Web:
* [The CERN Web Office in the 1990ies (most data missing today)](https://weboffice.web.cern.ch/WebOffice/)
* [CERN Web operations' paper and slides when the servers were numbered](https://cern.ch/dimou/SApaper.html)
* [CERN-W3C collaboration 2014 proposal](https://cern.ch/dimou/personal/CERN-W3C_Collaboration.pdf)
* [CERN-W3Ccollaboration 2017 proposal](https://cern.ch/dimou/personal/CERN-W3C_Collaboration_2017_proposal.pdf)
---
## Thank you for listening