Welcome | Get started | Dive | Contribute | Topics | Reference | Changes | More
Welcome¶
You are a software developer and want to contribute to the Lino framework? That’s a great idea! The world needs people like you!
Audience¶
This guide is meant for people who want to contribute to Lino by writing source code.
This guide is meant to make sense independently of your experience level. We try to be understandable for newbies without being boring for veterans. We apologize if this goal doesn’t always work out.
This guide should be useful for students, freelancers or employees, independently of whether you work for yourself, for a development provider or for a site operator.
You are allowed to use Lino for making money (see How to make money with Lino). Try to do that with some proprietary framework! We have a good reason for helping you to make money using Lino: we want Lino to have a sustainable and diverse community of users. Of course we hope somewhere in background that once you start being successful, you may want to contribute back to Synodalsoft in a financial way. But nothing will ever force you to do so because both source code and documentation is freely available. Lino and its documentation, including this website, are available for free for everybody and forever.
To be more precise we should have called this website Programming Guide instead of Developer Guide. Because developing a software product is much more than writing source code. On the other hand, especially in synodal software development, it is difficult to separate programming from the many other activities of the software development business. Lino encourages programmers to care about the whole project.
How to read this guide¶
“Begin at the beginning,” the King said, very gravely, “and go on till you come to the end: then stop.” – Lewis Carroll, Alice in Wonderland
As a first step, we ask you to read this guide sequentially.
Reading this guide sequentially means that you use the previous/next links. They are on the top and on the bottom of each page, they are even linked to the left / right arrows keys of your keyboard. Consider the inline links in this guide like footnotes of a book: You are welcome to follow them, but they lead into a labyrinth of documentation, so take care to return to the place you left and continue your journey.
Why Lino?¶
That’s a big question. We are collecting answers in a separate chapter: More about Lino, but the short answer is: we don’t know. We actually suggest to just read on here. Even if you find out that Lino isn’t worth your time (the worst case we can imagine), you won’t have lost more time than by watching a poor movie.
An internship at home¶
By following this guide you can virtually start an internship at home. If you need help. simply contact one of the team directly via email. One of us will be your mentor and will communicate with you individually. There is no online application form because we are a small team. You may interrupt or abandon your internship at any moment.
During your internship you will get quality support for free. You just need to ask. We help you to enter the business of software development with just your own time as your only investment. Try to do that with some proprietary framework!
During your internship you will
work independently and at a rhythm that suits you.
gain experience with working in a free open-source software project
increase your chances on the job market
You will learn among others
how to write and maintain source code in Python, JavaScript and Sphinx
how to use Lino and its underlying framework, Django
how to use git for sharing your work with others
how to monitor and use continuous integration on GitLab
Possible outcome of your internship
Your code contributions are forever visible in the Lino repositories.
You wrote your own Lino application
You set up and run a production site for a real-world site operator
Your mentor writes an individual internship certificate
You find a job as a Lino application developer
You start your own company as a Lino service provider
Of course we provide this support only as much as our human resources allow. We do our best, not more.
Prerequisites¶
Experience with the Python programming language will accelerate your progress. If you are new to Python, don’t be afraid, but keep our collection of resources for Learning Python under your pillow.
A requirement that might sound hard if you never tried it: you need to feel at home on a Linux computer. Lino is a web application framework. A typical Lino production site runs on a pure Debian VPS (see Set up a Lino production server). Lino itself does not require a specific operating system, but on a proprietary operating system you are likely to encounter problems that are not our business. Welcome to the world of Free Software :-)
In case you don’t believe that this requirement is actually a chance: Seth Kenlon shares 21 reasons why I think everyone should try Linux. If you hesitate about which Linux distribution to start with, we recommend Ubuntu. If you can’t stop using MS-Windows as your primary OS right now, check out Windows Subsystem for Linux (WSL). See here or here.
That’s why we assume that you have a computer with a Linux operating system at your disposal.
We assume you are familiar with the Linux shell at least for basic file
operations like ls
, cp
, mkdir
, rmdir
, file
permissions, environment variables, bash scripts etc. Otherwise we suggest to
read Working in a UNIX shell before going on.
The developer guide is written for Debian and derived distributions. Other Linuxes should be pretty similar.
Your feedback is important¶
Unlike Carroll’s Wonderland, this guide is neither perfect nor definitive. Lino constantly evolves. The pages on this website can become obsolete, useless, boring, or turn out to be at the wrong place.
So don’t be shy to ask questions. Tell your mentor when you get stuck or have the feeling that some page is useless, boring or difficult to understand.
Keep in mind that every feedback, even critical feedback, the mere fact of asking for help, is already a contribution to making this guide better. The Lino community thanks you in advance.
You don’t need to be perfect, you will learn on your way, and we will help you to learn. And which is more: we will learn from you.
How to contact us¶
Contact one of the team directly: https://www.saffre-rumma.net/team/
Submit an issue to one of our repositories on GitLab (submit to the book repository if you can’t decide which repository is the right one).