5.1. Overview

We start with an quick overview on the tutorial.

5.1.1. Prerequisites

This tutorial assumes the following items to be present:

  • You have an installed and working system. If this is not the case, the Getting Started chapter explains how to set it up.

  • You can manage the requires packages and are able to use the available tools to install packages and adjust their environment.

  • For the client code examples, it is needed that you know at least roughly how to program in Python. If this is not yet the case, you might have a look into the Python tutorial which is part of the official Python documentation . Alternatively, we will give examples in C++, using the GCC compiler and later the GDB debugger [1].

  • It is helpful if you had already a look at the Quickstart chapter - but this is explicitly not required. We will return to some code examples and explain them step by step in more detail.

5.1.2. Language Standards we use and which are supported by LN

5.1.2.1. Standards used in this documentation

In this tutorial, and most of the documentation, we will use the Python 3 and the C++11 language standards for example. We will occasionally some newer elements in example code if this results in clearly better code. Python 3 is used because Python 2 has reached its end-of-life and will be supported less and less in the near future. Python 2 code is not forward-compatible with Python 3, so writing new code in Python 2 would probably not be useful for you.

Python 3 is fully supported from links and nodes version 2.0.1. Regarding cross-compatibility, Python 2 is also still supported and using old Python 2 clients will work with newer LN managers and never clients.

For C++, we chose C++11 as the oldest useful C++ standard used in this documentation. Existing features and include headers will continue to work for C++98, but new features are likely to require at least a C++11 compiler. Code written in C++11 will in almost all cases continue to run with newer language versions, and should be easy to understand for users of all modern versions.

5.1.2.2. Standards supported by LN

Links and Nodes version 2.0 and newer, which is documented here, supports and will continue to support Python 3, C++98, C++11, C99, C11, and newer C++ dialects such as C++14 and C++17.

The version documented here also supports Python 2. For Python 2, this is bounded by practical limits and does not imply any support for third-party modules, as the Python 2 ecosystem is being scrapped.

Similarly, using some new features in LN require C++11 or newer.

5.1.3. Goals of this Tutorial

The tutorial has the following goals:

  • to introduce you to some essential concepts and terms in Links and Nodes

  • to give an overview on some important parts of the system, without burdening you with too many details.

  • to enable you to program your first simple client applications, and control them.

  • to enable you to understand and use the User Guide and at least some pieces of the Reference part of this documentation.

What this part will not try is to give you every detail on every aspect of the system, because this would be overwhelming to a beginner. If you are looking for more detailed information, especially how some things are working or how some interfaces are called and defined in detail, you will probably find in either the (not yet complete) User Guide or the Reference parts what you are looking for (if you are just stumbling on an unknown term, you can also try the Glossary for help).

5.1.4. Overview / Road Map on the tutorial

We will proceed as follows:

  • In the part Summary of basic Concepts and Features of Links and Nodes, we will quickly reiterate what LN is useful and intended for, and how it achieves these goals. This is important, because otherwise, you could end up tragically (and frustratingly) trying to solve a difficult problem with an excellent but wrongly chosen tool.

  • In How to use the Links and Nodes Manager (LNM), we will introduce the Links and Nodes Manager (LNM) and its configuration file. For a start, we will show you the simplest possible configuration, and go on from there.

  • In the same chapter, we will introduce you also to the LNM GUI. This will allow you to start, stop, and otherwise control processes, and also to look what they are currently doing.

  • We will explain the most important communication facilities, and how they essentially work.

  • As practical examples, in the parts Python Tutorial and C++ Tutorial, we will show how to run LN topics and LN services client applications in Python and C++, and extend them a little bit in a few iterations. We will also show how you can work with LN in the development cycle of such a software module.

Footnotes: