If you are a respectful, experienced volunteer interested in actively developing client and server applications that solve our user stories, your contributions are welcome. Please dive in!
Alternatively, anyone can support the project financially with a Librem One subscriptionπ.
This is a summary of progress to basic functionality. We use upstream project names where convenient.
Server | Android | iOS | PureOS | |
---|---|---|---|---|
Backup | π§ Nextcloud | π§ Deja Dup | ||
Chat | ||||
Text | π Synapse | π Riot | π Riot | π§ Chatty |
Voice | π§ Calls | |||
Video | π§ ? | |||
XMPP | π§ Prosody | π§ Chatty | ||
Files | π§ Nextcloud | π§ Nextcloud | π§ Nextcloud | π§ ? |
Hub | π§ Keel | π§ Hub | π§ Unsure | π§ GOA |
π§ Web | ||||
π Dovecot | π K-9 Mail | π§ Geary | ||
π€ Prototype | ||||
Social | π Smilodon | π Tusky | π Amaroq | π§ Web |
π€ Prototype | ||||
Tunnel | π Keel | π OpenVPN | π PIA | π§ CLI |
Unfortunately we don't have the resources to onboard volunteers without prior experience. If you're curious about the tools we use, here's a short list of jumping off points. Some of these projects have onboarding teams, so keep digging till you find one you like. Enjoy the journey and happy hacking!
Django Girls Tutorialπ. If you try only one tutorial, make it this one. A great introduction to the ideas behind web applications. You don't need prior experience with Python or Django.
...more to come!
Projects are listed at source.puri.sm/libertyπ. Projects follow the same conventions (detailed below) unless impractical. Naturally we rely on and collaborate with a vast number of other libre projects, and follow their conventions when contributing upstream.
Submit your ticket while it's still fresh! Take a screenshot! Aim for these requirements, and the product owner will make a best effort attempt to complete the submission. Tickets must meet these requirements before being assigned to a milestone:
Log under the correct project. If you're unsure, use liberty/servicesπ and we'll figure it out.
Ticket descriptions must be actionable. Enhancements should include a clearly motivated user story. Bug reports should include steps to reliably reproduce the problem with any account. (See templates below.)
Where business logic needs to be expressed, use Gherkinπ (alternate referenceπ) and focus on the happy-day scenario. (Undefined edge cases are expected to fail gracefully.)
You may include a suggested technical solution, but you do not have to. If you are suggesting a technical solution, you must include a solution-agnostic user story.
Keep user stories simple and focus on everyday outcomes. Save technical details for the suggested solution. For example...
User story: I am an everyday user. I want to send a private message to my friend, so that only they can read it.
Steps to reproduce:
- Log into the Acme System
- Enter telephone number
- Click "OK" button
What should happen?
- Telephone number is saved.
- Return to login page.
What happens instead?
- A message appears, "Please do not click this button again."
Unclassified. The ticket must be triaged by the product owner.
On hold. The ticket is valid but indefinitely deprioritized. Volunteer work is welcome. Some valid tickets will be closed rather than put on hold to make the backlog easier to read.
Ready. The ticket is well-defined, has a milestone and is assigned. The assignee should aim to complete it by the milestone deadline (along with other tickets in the milestone).
In progress. The assignee has reviewed the ticket, set a target due date and begun work.
Please review. The ticket is reassigned to the product owner. The work is complete and ready for review. For example, there is a screenshot or code has been deployed to the staging environment. If accepted, the ticket and associated MR is closed. If not, it is put back to "Ready" with an explanation.
Closed. The work is merged or the fix released or the ticket has been canceled.
We number releases with semantic versioning. Release candidates are tagged in GitLabπ before testing. Once tested they are released to an environment branch per GitLab Flowπ.