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/) --- ## 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** --- ### 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 ![](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) * 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. --- ## Conclusions 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. **OR** * 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 --- ## References * [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#) ---