About the Atlas toolkit #
Main features #
You want to add a graphical user interface (GUI) to your programs, and don’t know which framework to use? Try the Atlas toolkit. It’s lightweight, available for several languages, and requires only basic knowledge of widespread and easy-to-learn web technologies (no JavaScript required, unless you choose the Node.js version of the toolkit).
The main goal of this project is to provide a way to program graphical user interfaces using well-documented web technologies, without having to use JavaScript. To be also easy to install and to use, it is provided as a toolkit which automatically connects to a new and especially developed type of cloud computing service, called Framework as a Service (FaaS).
With the Atlas toolkit, you have a modern web application (SPA), but which acts as desktop application. The application opens in your web browser, but you don’t have to install a web server. And you still have access to all the resources of your computer as provided by the language you choose to use.
Like any web application, yours will be also multi-user, and data will be easily shared between users, without you having to do any network programming.
Applications based on the Atlas toolkit needs an access to internet, but don’t have to be accessible from internet, and can be accessed with a modern web browser from every device connected to internet. You have no internet box or routeur to configure, nor to upload your program on a remote server. Simply launch your program on a computer connected to internet, and it will be accessible from everywhere on internet.
Even a program which was originally designed to have only a command line interface (CLI) or a text-based user interface (TUI) can easily be modified to have a GUI, thanks to Atlas toolkit. The GUI can then cohabit with the other interface, giving the user the choice of the interface s/he wants to use.
As the Atlas toolkit is very lightweight, it can be used on devices such a Raspberry Pi (even the Zero model), opening new horizons to electronics or robotics enthusiasts. The Atlas toolkit can also be used on Android devices, by using Termux.
The Atlas toolkit is currently available for Java, Node.js, Perl, Python and Ruby, and works are in progress for the toolkit to be available for other languages.
A list of articles about the Atlas toolkit can be found here.
Purposes #
Add-on programs for your business #
Do you have to use inadequate functionalities in your usual programs, or do you have no choice but to struggle with macros in a spreadsheet? Use the Atlas toolkit to write programs which will execute all the boring and time-wasting tasks in no-time, so that you and your collaborators can focus on much more interesting and useful tasks.
As mentioned before, you can use the applications made with the Atlas toolkit as desktop applications, or as web applications that can be easily accessed from the Internet without the usual inconveniences.
You can run these applications on your own computer or, if you prefer, on a dedicated computer. A Raspberry Pi, which costs less than $20 (Raspberry Pi Zero), will probably be enough.
To see an exempl of programs dealing with Excel spreadsheets and using the Atlas toolkit, take a look at https://s.q37.info/97p44nh4.
Modern programming exercises #
Here is an example of what most of the programming exercises look like :
It looks a bit outdated to young people, compared to what they are used to with their smartphones.
Here the same exercise, in a more modern outfit thanks to the Atlas toolkit (more details here):
Web application prototypes #
The development of a web application is something which requires special computing skills and plenty of time, and therefore costs a lot of money. Before launching such a development, you better have a very good idea of what the result should be, and be sure that the developers exactly know what you want.
As the Atlas toolkit is available for the most popular languages and requires only basic programming skills, it’s an affordable and fast way to develop a prototype of your web application, which can easily be shown to discuss about, and used to test the functionalities and refine them.
Once the prototype is validated, it can be used as a model for the development of the final application. You will so be sure that this application will be exactly what you want. And you can use the prototype to easily test and validate new functionalities before including them in the final application.
Running your programs on your Android smartphone/tablet #
You can run programs that use the Atlas toolkit on your Android devices by using the Termux application. From this application, install (pkg install …
) the git package and the nodejs/perl/python/ruby package depending on the language you are interested in, and then follow the instructions in the Installation section.
It’s also possible to run your Java programs on Android, but you have to install a Linux distribution in Termux, and then install the Java compiler/interpreter from this distribution; see https://wiki.termux.com/wiki/PRoot#Installing_Linux_distributions.
As usual with the Atlas toolkit, your program, even when launched from your Android device, can be accessed through its dedicated link or by scanning the QR code displayed in your application.
Raspberry Pi #
The Raspberry Pi is a nanocomputer which was developed to provide an affordable device with which you can learn programming. And with the GPIO ports available on the Raspberry Pi, one can write programs to control electronic circuits and even robots.
The Atlas toolkit makes things even more fun. With the Atlas toolkit, you can easily modify your programs to add a GUI, with which you and control your circuits and robots directly from your smartphone.
There are some programs which were developed especially for the Raspberry Pi and other similar devices (like ODROIDs), and you will find more about them Raspberry Pi dedicated section.
Jupyter notebooks (Python only) #
The Atlas toolkit can be used to embed GUIs directly in your Jupyter notebooks. This allows you to create much more sophisticated GUIs as with ipywidgets.
Here is how such a Jupyter notebook will look like:
You will find some examples of Jupyter notebooks in the tutorials directory ot the repository of the Python version of the Atlas toolkit.
Examples #
The TodoMVC application #
For comparison, the application from the TodoMVC project has been developed using the Atlas toolkit. This is what it looks like:
Source codes with installation procedures:
- Java: https://github.com/epeios-q37/atlas-java/,
- Node.js: https://github.com/epeios-q37/atlas-node/,
- Perl: https://github.com/epeios-q37/atlas-perl/,
- Python: https://github.com/epeios-q37/atlas-python/,
- Ruby: https://github.com/epeios-q37/atlas-ruby/.
“Hello, World!” - a simple example #
Here is a preview of the famous “Hello, World!” program made with the Atlas toolkit:
Go to the “Hello, World!” section to get an overview of the global structure of a program using the Atlas toolkit, with the source code of the Hello, World! program for all languages in which the Atlas toolkit is available.
How does it work? #
The library #
On the launching of the program, or to update broad parts of the interface, the needed HTML code is sent directly to the browser; this is very similar to a CGI based application. Otherwise, only the needed part of the DOM is updated, like a single-page application. With the Atlas toolkit, you have the best of both worlds.
The HTML code can be generated using XSLT, manually, or by using the template engine of your choice.
Here are where you will find the source code of the library, with examples of use:
- Java: https://github.com/epeios-q37/atlas-java,
- Node.js: https://github.com/epeios-q37/atlas-node,
- Perl: https://github.com/epeios-q37/atlas-perl,
- Python: https://github.com/epeios-q37/atlas-python.
- Ruby: https://github.com/epeios-q37/atlas-ruby,
Remote server #
Web applications usually need to be installed on a server which have to be accessible from internet. And, in addition of the application itself, there is also the need of a web server, standalone or embedded in the application, which handles the user’s web browser requests.
By using the Atlas toolkit, you only have to launch your program on your computer, and you can give access to your program to whoever is connected to internet. As you don’t have to deploy your program on a remote server, each modification you make to your program is instantly available. That’s why the Atlas toolkit is particularly suitable for prototyping.
To achieve this, the Atlas toolkit connects to a free public server, which also handles the connections from the user’s web browser. The URL corresponding to your program is displayed in the console from which you launched your program, an can be used anywhere on internet as long as the program is running.
If you want to use your own server, take a look at the installation section.
Behind the Atlas toolkit #
The lead developer behind the Atlas toolkit is Claude SIMON, a software engineer living near Strasbourg, in France.
He developed C++ libraries to handle desktop user interfaces using XULRunner. As XULRunner were discontinued, he switched to the newly standardized HTML5, along with the Chromium Embedded Framework. The libraries were then improved to also handle web user interfaces. Finally, Electron replaced the Chromium Embedded Framework.
As most of the popular languages are interpreted ones, he also specialized in improving the performances of this languages, by developing binding libraries simplifying the use of the more efficient C++ native code with this languages.
Links #
- Author’s other website: https://q37.info/,
- Author’s GitHub account: https://github.com/epeios-q37,
- Author’s Open Hub account: https://www.openhub.net/accounts/Epeios.
License #
The Atlas toolkit is free software. The libraries are available under the MIT license, and the remote server is available under the GNU Affero General Public License.
Although the libraries do not share any code with the server, they are totally dependent from the server because only the server, so far at least, is able to process requests issued by the libraries.
Nevertheless, it is not required that the source code of an application that uses one of this libraries must be made available to users.
This only concerns the libraries. The source code of the server, either the original version or a modified version, must be provided to any user who requests it.