Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in / Register
  • Services notebook Services notebook
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 25
    • Issues 25
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • liberty
  • Services notebookServices notebook
  • Wiki
  • Home

Last edited by David Seaward Oct 02, 2019
Page history

Home

homepage | project | subprojects | wiki | page index | tracker | chat | microblog

Vision statement

Primary user story

I am an everyday user without my own infrastructure. I want a single point of trust (account and applications), so that communication from my existing devices is both safe and easy.

Operator user story

I am a well-intentioned sysadmin. I want to host a service on a hostile network (the Internet), so that I can help strangers communicate without compromising their digital civil rights.

Marginalized user story

I am a marginalized person with an opinion. I want to intercept online harassment, so that I can communicate safely with friends and strangers.

Solution

Regular services are implementations of networked software, typically lightweight clients or browser interfaces that deliver messages to remote applications operated by a third party.

An ethical service is one that explicitly protects users from exploitation in this scenario.

A Liberty Deckplan Host (LDH) is a single domain implementing our concrete configuration (defined below) to provide a well-defined suite of ethical services.

Librem One is the flagship LDH installation.

Audience

For contributors, this notebook contains standard definitions (ethical and technical), software engineering and design notes, and links to reference implementations.

For programmers interested in active development of software implementations, see source.puri.sm/liberty

For potential users wanting to sign-up for services and download applications, see https://librem.one

For existing users wanting documentation and troubleshooting steps, see https://docs.puri.sm/Librem_One.html

Purist service standards

We define standards that tackle relevant user stories and threat models:

  • digital civil rights definition
  • ethics-related service components (draft)
  • basic package requirements (draft)
  • trustworthy service (draft)

Further reading on the Purism blog:

  • Librem One
  • User empowerment

Liberty Deckplan Host (LDH)

  • The Liberty Deckplan Host definition is a concrete networked software configuration for providing ethical services
  • The deckplan is a list of LDH endpoints and supported protocols for compatible implementations
  • Whipstaff, command-line tool for deploying and operating one or more LDH installations
  • Keel, middleware handling subscription-based user accounts for all LDH services
  • Liberty CLI, user-facing CLI for accessing one or more LDH accounts
  • Liberty client suite, clients recommended for LDH-based services

The following subcomponents are also being developed:

  • Django LDAP registration
  • Layout templates
  • openvpn-confgen

Roadmap

Development and implementation is coordinated by Purism, the social purpose corporation (SPC) that builds Librem devices, maintains the PureOS distribution and operates Librem One services.

  • Names shamelessly recycled from the Ubuntu release history 🤪
  • 🔧 indicates boring but essential work, 📯 indicates something more exciting
  • Milestone links don't render correctly gitlab-org/gitlab-ce#66269 see wiki:home

Feisty first launch 🔧 (September)

User's registration and first-launch experience must be bug free. Plus XMPP. Zero-tolerance for UX bugs. They must be fixed in order to close these milestones.

%"Feisty first launch 1" The unregistered user must be able to register, launch an app and connect to another user.

%Feisty first launch 2 An unregistered user must be able to install an app and get clear hints on how to register.

%Feisty first launch 3 📯 A registered Librem 5 owner must be able to sign in and use at least one app on their phone.

%Feisty first launch 4 📯 A registered user must be able to use XMPP. (No app apart from Chatty required.)

Boring badger 🔧 (November)

We are running the latest stable version of every service.

%"Boring badger 1" Upgrades, downgrades and crossgrades are complete.

%Boring badger 2 Latest stable version of all services.

%Boring badger 3 📯 Run our own Matrix ID server.

Eventual ermine 🔧

This is a dumping ground for very high-level commitments that we have made, including stretch goals. No dreams allowed. No time commitments.

%"Eventual ermine 1" New Mail client that runs on iOS (and Android?) We can 📯 about it as soon as a prototype is developed.

%Eventual ermine 2 📯 Librem Files, Librem Backup and other new services.

%Eventual ermine 3 📯 Anti-harassment tools in clients. See Curbing Harassment with User Empowerment

%Eventual ermine 4 📯 All LDH components and compatible clients should be packaged in PureOS and, ideally, Debian. These packages should be reproducible.

%Eventual ermine 5 🐯 Core Smilodon features are implemented.

%Unscheduled unicorn 🦄 Valid issues that are unscheduled (and could be cancelled).

Dreams include calendars, contacts, Wireguard and time-travel routing, but not in that order.

Eager entomologist 🐞

Recurring milestones for priority bugs.

Documentation

These are the services and applications (clients) that we provide and support:

Hub (Account)

A website for managing your account.

service | web | desktop | mobile | android | windows | ios | macos

Chat

Private text, voice and video chat for individuals and groups.

service | web | desktop | mobile | android | windows | ios | macos

Email

Private email (optionally signed).

service | web | desktop | mobile | android | windows | ios | macos

Social

An (optional) public presence for your account.

service | web | desktop | mobile | android | windows | ios | macos

Tunnel

A secure connection to the internet.

service | web | desktop | mobile | android | windows | ios | macos

Resources

Tools

Planning and development tools that we use include:

  • EasyScreenCast (extensions.gnome.org)
  • Gherkin (cucumber.io, see also behave documentation)
  • GNOME Builder (wiki.gnome.org)
  • Pencil (pencil.evolus.vn)
  • ReText (retext-project/retext)

Upstream packages

We rely on, contribute to, fork or configure:

  • Django
  • GNOME
    • GNOME Network manager applet
    • GNOME Keyring
  • Keysafe
  • OpenVPN
  • Riot
  • Synapse
  • Tor
  • WooCommerce (and Wordpress)

Sharing and contributions

Services notebook
https://source.puri.sm/liberty/services
Copyright 2017-2019 Purism SPC
SPDX-License-Identifier: CC-BY-SA-4.0

Shared under CC-BY-SA-4.0. We adhere to the Contributor Covenant 1.4 without modification, and certify origin per DCO 1.1 with a signed-off-by line. Contributions under the same terms are welcome.

For details see:

  • COPYING.BYSA.md, full license text
  • COPYING.md, additional license notices
  • CODE_OF_CONDUCT.md, full conduct text
  • CONTRIBUTING.DCO.md, full contribution text (use git commit -s)

Services notebook by Purism SPC is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Clone repository
  • CODE_OF_CONDUCT
  • COPYING.BYSA
  • COPYING
  • Home
  • README
  • Status report for liberty
  • account_service
  • account_web
  • chat_desktop
  • chat_service
  • module_layout
  • module_middleware
  • module_node
  • module_openvpn_confgen
  • module_snippets
View All Pages