git clone solid-solid_-_2018-07-02_20-36-36.bundle -b master
Solid - Re-decentralizing the web (project directory)
Re-decentralizing the web
Solid (derived from "social linked data") is a proposed set ofconventions and tools for building decentralized Web applications based onLinked Data principles. Solidis modular and extensible. It relies as much as possible on existingW3C standards and protocols.
Table of Contents
- About Solid
- Standards Used
- Platform Notes
- Project directory
- Contributing to Solid
Specifically, Solid is:
- A tech stack -- a set of complementarystandards anddata formats/vocabularies that togetherprovide capabilities that are currently available only through centralizedsocial media services (think Facebook/Twitter/LinkedIn/many others), such asidentity, authentication and login, authorization and permission lists,contact management, messaging and notifications, feed aggregation andsubscription, comments and discussions, and more.
- A Specifications documentthat describes a REST API that extends those existingstandards, contains design notes on the individual components used, and isintended as a guide for developers who plan to build servers or applications.
- A set of servers thatimplement this specification.
- A test suite for testing and validatingSolid implementations.
- An ecosystem of social apps,identity providers and helperlibraries (such as solid.js) that run onthe Solid platform.
- A community providing documentation, discussion (see thesolid gitter channel),tutorials andtalks/presentations.
The Solid platform uses the following standards.
RDF 1.1 (Resource Description Framework)(see also RDF Primer) is heavilyused in Solid data models. By default, the preferred RDF serializationformat is Turtle. Alternative serializationformats such as JSON-LD andRDFa can also be used.
The WebID 1.0 (Web Identity andDiscovery)standard is used to provide universal usernames/IDs for Solid apps, and torefer to unique Agents (people, organizations, devices). See also theWebID interoperability notesfor an overview of how WebID relates to other authentication and identityprotocols.
WebIDs, when accessed, yieldWebID Profiledocuments (in Turtle and other RDF formats).
The FOAF vocabulary is used both in WebIDprofiles, and in specifying Access Control lists (see below).
Authentication (for logins, page personalization and more) is done via theWebID-TLS protocol.WebID-TLS extends WebID Profiles to include references to the subject'spublic keys inthe form of X.509 Certificates, usingCert Ontology 1.0 vocabulary.The authentication sequence is done using theHTTP over TLS protocol. Unlike normalHTTPS use cases, WebID-TLS is done without referring toCertificate Authorityhierarchies, and instead encourages host server-signed (or self-signed)certificates.
In Solid, certificate creation is typically done in the browser using theHTML5 keygenelement,to provide a one-step creation and certificate publication user experience.
Solid Platform Notes
Solid applications are somewhat like multi-user applications where instances talkto each other through a shared filesystem, and the Web is that filesystem.
The LDP specification defines a set of rules forHTTP operations on Web resources, some based on RDF,to provide an architecture for reading and writing Linked Data on the Web. Themost important feature of LDP is that it provides us with a standard way ofRESTfully writing resources (documents) on the Web, without having to rely onless flexible conventions (APIs) based around sending form-encoded data usingPOST. For more insight into LDP, take a look at the examples in the LDPPrimer document.
Solid's basic protocol is REST, as refined by LDP with minor extensions. Newitems are created in a container (which could be called a collection ordirectory) by sending them to the container URL with an HTTP POST or issuingan HTTP PUT within its URL space. Items are updated with HTTP PUT or HTTPPATCH. Items are removed with HTTP DELETE. Items are found using HTTP GET andfollowing links. A GET on the container returns an enumeration of the items inthe container.
Servers are application-agnostic, so that new applications can be developedwithout needing to modify servers. For example, even though the LDP1.0 specs contains nothing specific to"social", many of the W3C Social Work Group'sUser Stories canbe implemented using only application logic, with no need to change code onthe server. The design ideal is to keep a small standard data management coreand extend it as necessary to support increasingly powerful classes ofapplications.
The data model is RDF. This means the data can be transmitted in varioussyntaxes like Turtle,JSON-LD (JSON with a "context"), orRDFa (HTML attributes). RDF isREST-friendly, using URLs everywhere, and it provides decentralizedextensibility, so that a set of applications can cooperate in sharing a newkind of data without needing approval from any central authority.
Contributing to Solid
Get a WebID
In order to try out some of the apps built using Solid, you will need typically an identity on some solid server.There are two forms of authentication we use, and so two types of account.
With WebID-TLS, you will need to make a WebID browser certificate from the above profile (this is usually createdwhen you sign up for a WebID profile account, but it only works on Firefox at the moment (2018)).
Running a server
Additionally, to get started with developing for the Solid platform, you'llneed:
A Solid-compliant server
Solid Project Workflow
To contribute to Solid development, and to bring up issues or feature requests,please use the following workflow:
Have a question or a feature request or a concern about the Solid framework,or on one of its servers? Open an issue onsolid/solid (this repo here).
Have an issue with the Solid spec specifically? Open an issue onsolid/solid anyway. And then, as a result ofdiscussion, if it's agreed that it is actually a Spec issue, it will be movedto
The individual solid/solid issues can coordinateand track component/dependent issues on the various affected Solid servers,apps, and so on.
Places to chat
Upload date: 2015-11-24
- 2018-07-02 20:36:36
- Internet Archive Python library 1.7.7
- iagitup - v1.0