FreedomBox in GSoC 2021
FreedomBox is a pure Debian blend for easy self-hosting of a home server as a private online services cloud.
It particiated in GSoC program in a previous edition (2017) as Debian project and aim to do so in 2021 edition, as agreed. We regard the produced code as a very welcome side-effect, but our main goal to participate is to hopefully enrole another stable volunteer. If we fail, we'll take advantage of the invested planning effort, anyway.
Main student project: E-mail Server for FreedomBox
Description of the project:
FreedomBox is a pure Debian blend aiming to enable non-technical users to easy self-host a home server as a private online services cloud.
In order to replace third-party communication services that are data mining their users entire life, they will be able to host services themselves and use them at home or over the Internet through a browser or specialized apps. E-mail is a basic and useful way of communication and providing an e-mail server in FreedomBox is a very old wish.
It is a more complex task than providing other services, so it deserves some proper project planning. You'll implement this plan, step by step, experiencing and learning the technical challenges and available free software solutions of/for in-the-wild communications, from different perspectives: reachability, authentication, security, transport, load, standards, etc. You'll also learn and experience how to work together with others in an clean, organized manner, with state-of-the-art free software frameworks and tools, tests, code, reviews, continuous integration, and international UI and interaction.
Confirmed Mentor: Fioddor Superconcentrado
How to contact the mentor: fioddor@gmail.com
Confirmed co-mentors: Sunil Mohan Adapa, James Valleroy
Mentors affiliation with Debian: JV is a DD, SMA is a core FreedomBox maintainer, FS is a FreedomBox maintainer.
Deliverables of the project: A working E-mail server in FreedomBox. Details to be negotiated with the intern, but this should provide a reference:
FreedomBox enabled to send e-mails to its admin.
FreedomBox providing an e-mail exchange allowing its users to intercommunicate.
- within a controlled LAN.
- over the public internet (reachability).
- Improve.
Integrate Roundcube configuration in FreedomBox to easily use this own e-mail exchange.
- Enable anti-virus protection.
- Consumer-grade release.
- Review configuration. Fine-tune.
- Autodiagnostics.
- Anti-eavesdrop protection. (encrypted IMAP (aka imaps) access to e-mails).
- Thorough testing.
- Support communication with other exchanges (regular public e-mail).
- Site authentication (certificates and other credentials for trust by third parties).
- Enable anti-spam protection. An idea is to only allow encrypted emails signed by approved keys.
Import: Fetch emails from a 3rd party service provider, and to store them on FreedomBox.
- Bonus:
Make it generic: Review the interaction between FreeomBox and the selected e-mail parts (MTA, etc), compare their interfaces with other popular alternatives and wrap the current implementations as particular cases of generic interactions.
Privacy: Send and receive emails via Tor (aka .onion addresses), to allow two FreedomBox users to exchange emails without leaking metadata.
Desirable skills:
- Basic: Shell and Python programming. Instant Messaging (IRC). Organisation.
- Bonus: Git, Django, HTML, CSS, Bootstrap, TDD, js/jQuery
What the intern will learn:
- Technology: The e-Mail stack, web (Django) application architecture, and the free software projects involved in them.
- Technique: Likely, some additional state-of-the-art tools, languages and/or procedures.
- Experience: The flow and internals of real life volunteered international free software development.
- Wisdom: Hopefully gain awareness and criterium. Both, technical and regarding online privacy and its current status.
Application tasks: Get and show familiarity with technical research and adaptability to project team, tools and procedures, and design/coding standards.
Alternative A: A draft merge request where FreedomBox installs a nullmailer (nullmailer or msmtp) allowing it to send notification e-mails.
- Alternative B: Read the notes of previous attempts and provide a short, structured documentation explaining the system architecture (parts) and the technical challenges of an e-mail server. Format can be a file, a wiki page, a video, infographics...
- Suggested roadmap:
Understand FreedomBox concept and goals. What it is and what it is not.
- Understand the product, the value it provides, and how the E-mail Server will help.
- Prepare your GSoC application-assignment:
If you go for the document, alternative you need to show you can do technical research and organised documentation.
Search (Better ?DuckCuckGo than Google) for Postfix documentation.
Read issue 56 and try to make sense out of it.
- Join the mailing list, the forum or the development IRC channel and post questions.
Focus on making sense of everything. Only after that, dive deeper to the details.
- Make sure your document is structured, clear, and expressive.
If you go for the merge request, you need to show you can grasp the development procedures.
- Find our code in salsa.debian.org
Learn in HACKING.md how we develop. Clone the project. Play with FreedomBox.
- Follow the links provided and learn how to setup msmtp (or nullmailer).
Try to set it up in FreedomBox developent container/VM.
- Then trace the code to find out how to automate the installation and setup of msmtp (or nullmailer).
- Provide a detailed plan with files to add and their contents. Pseudo code is enough.
- Bonus points if you actually request to merge:
- register in Salsa,
- fork the code,
- fetch it locally,
- add the new files,
- commit,
- push to your copy of the project in Salsa,
- and request to merge.
- Hints:
- The container script sets freedombox-develop as alias. Find it and trace the code. Don't need to understand each line. Just make fuzzy sense of the parts.
Note that /plinth/modules/<module>/data/path in the source code deploys to /path in the FreedomBox.
Note that /plinth/modules/<module>/data/file in the source code deploys to /usr/local in the FreedomBox.
See the developer documentation.
- Gmail provides SMTP service. You'll need to configure your Gmail account to enable application passwords. If you have another SMTP server available you can use it also. Some use a different port and protocol variant. If you don't have one and don't want to create a gmail account ask us.
Feel free to ask anything anytime.
Related projects:
- Sw: exim, postfix, dovecot, roundcube, ...
There's a list of similar or not so similar projects (outside Debian) in our wiki section.
Other student projects
Proposals under construction for other editions, other programs or for internal use:
- Videocalling (JSXC, Matrix, Janus, etc):
Videoconferencing (Jitsimeet and ?BigBlueButton to be evaluated)
- Mesh networking
Wilder (volative) ideas: See the Development forum section
- Framework to handle asynchronous jobs.
- Framework to handle exceptions (improve presentation and guidance on troubleshooting and on getting help/support).