Learning resources

As a Lino contributor you need basic experience with certain technologies. You don't need to be perfect, you will learn on your way, and we will help you to learn, but there is no way around these technologies if you want to become a Lino developer.

Here are some recommended resources for learning the external things you need to know as a Lino developer. They are not specific to Lino and therefore not covered in this guide. You don't need to read them all. We just try to help you with getting started by providing useful pointers. Feel free to ask for guidance.

Python

Lino is mostly written in the Python programming language. You need to know for example

  • what's an object, a string, a list, a dict, a float

  • the difference between a class method and an instance method

  • what's a generator

  • what's a decorator

  • when and how to use subprocesses and threads

  • what are the following standard modules used for: datetime, sys, os, re, decimal, logging, pathlib, ...

Here are some resources for learning Python.

Linux

Lino is a web application framework. You are going to install it on Linux web servers.

When you want to become a Lino developer, there is a first requirement that might sound hard for those who never tried it: you need to say goodbye to Windows and move on to Linux. While Lino itself has no specific OS requirements, you are likely to encounter problems on proprietary operating systems that are not our business. For example some dependencies are more difficult to install on these systems. If you are using Windows as your primary OS, we recommend to switch to Ubuntu before going on.

In case are undecided: Seth Kenlon shares 21 reasons why I think everyone should try Linux.

Note that we don't force you to move to Linux. You can remain in the Windows or Mac world and still be useful to Lino, e.g. as a trainer, analyst or consultant, but in that case you won't be a developer. Don't waste your time reading this guide. We have two other guides for you, the Lino Community Guide and Lino User Guide.

That said, welcome to the world of Free Software :-)

Django

Lino applications are Django projects.

  • You need to know how to get a Django project up and running. (You should have followed the Tutorial) You need to know what a settings.py file is.

  • You need to know most about Django's model layer : the Model class, the field types, executing database queries, ...

Sphinx

Documentation about Lino is written using Sphinx.

  • Tutorial

  • You should know how Sphinx works and why we use it to write Lino documentation. See Building the Lino Book for the first steps.

  • Maybe one day you will want to have your own developer blog for writing about your contributions to Lino.

Git

Lino is hosted on GitHub and GitLab (see also Moving from GitHub to GitLab). You need to know how to use these collaboration platforms.

Try out what you've learned:

  • Create a free account on GitLab and made a fork of Lino.

  • Try to make some change in your working copy, commit your branch and send a pull request.

  • See also Git cheat sheet and Submit a pull request.

HTML, CSS and Javascript

Databases

Lino is a part of Django and therefore uses relational databases (SQL). You don't usually need to write SQL yourself when using Lino, but it is of course important to understand the concepts behind a database. And on a production server you will have to deal with database servers like MySQL or PostgreSQL when doing database snapshots or running migrations.