The Symbolibre project is all about graphing calculators and free software. But what is free software exactly, and why does it matter so much that we'd make a whole calculator just to use it?
Free as in "freedom"
You can think of free software as software that gives freedom to its users. Although this is often the case, free software doesn't need to be free of charge, which commonly results in confusion over the meaning of the phrase. Some people like to say libre software to clear this confusion, which is the same "libre" as in Symbolibre.
When you receive a copy of some free software, you are granted four fundamental rights:
- Run the program for any purpose.
- Study the program, including reverse-engineering it.
- Redistribute the program and make copies of it.
- Improve the program by making changes, and share the improved versions.
This might sound obvious, but these rights are not typically granted to you. The commonplace graphing calculator from your favorite manufacturer probably doesn't allow you to reverse-engineer the code or redistribute copies of the operating system.
Over the years, free software has proven to be a viable software development philosophy for many applications, ranging from operating systems (such as GNU/Linux) to peer-reviewed cryptographic libraries (such as OpenSSL and LibreSSL) to ultra-portable development frameworks (like Qt) and essentially any piece of common software that is present on a computer... or, for that matter, on a calculator.
Symbolibre wants to bring modern and free software to a product that is often stuck with old, proprietary code bases due to a lack of competition and development efforts. Our goal is to design a calculator that you can build, use, improve, and reverse-engineer at will: in other words, a tool that you truly own.
The open-source contribution model
Free software is often distributed as open-source software, which means that the source code is publicly available and (most of the time) that users can contribute to the software by offering to make changes in the code base.
Side note: Free software requires source code availability only for users (which, if you sell the software, are the people who bought it), which does not imply open-source. Conversely, software that is open-source can still be distributed under conditions that violate the fundamental rights of free software. So open-source and free software are different concepts: it just happens that a lot of public software (such as that found on GitHub) is commonly both. This is another common source of confusion.
Some characteristics of open-source software include the ability for users to report issues and to submit pull requests, which is a fancy term for suggested changes to code. Software development platforms have made it increasingly easier to manage these contributions over the years, making open-source software a very competitive type of software development.
Of course, nothing is perfect, and free and open-source software have their drawbacks too. Small and medium projects are often run by a single person (a couple in the best case), and they can go unmaintained if the authors become unable to manage them. When contributors don't agree with the authors' vision, it is also very tempting to copy a project and start working on a new version (this is called "forking"), which divides development power and increases the risk of one of the versions being unmaintained. And because so much data is shared to the public, it's harder to make a profit off of it (few people will buy binary copies when they can build them by themselves).
Overall, free and open-source software encourage the users to break down the software and make it their own. We believe that it is incredibly fitting for an educational tool to follow these philosophies, and engage with students to explore how a rather complex combination of hardware and software works behind the scenes.
How Symbolibre differs from Numworks
This article is a good opportunity to tackle a common question. During the course of the project, many people asked us: "But is Numworks not already doing that?"
Well... kind of. Numworks decided to release their code (mainly their operating system Epsilon) under a fairly open license and engage with their community, and to their credit it does shine a new light on public-source software in graphing calculators. As a finalized product that competes directly with the established models, they take a firm stand for transparency and we're grateful for how it shows that code doesn't need to be private to be good.
However Epsilon's code is published under the CreativeCommons BY-NC-SA license, which allows you to change and re-distribute it, but not make a profit from it — so you can't build a calculator from it. Numworks' goal is not to make free software; they advocate for transparency but Epsilon is still their very own product. This shows in their Contributor License Agreement, as contributors transfer their rights to Numworks before the code can be merged.
All in all, their development model is not truly open-source (let alone free software). While they commonly merge bug fixes and occasionally features, only major releases are public, and many community contributions have been declined. In some occasions, major patches remain unavailable in source for a while (crashing emulators and Python bugs come to mind). This led to users creating their fork of Epsilon, Omega. This is perfectly fine from a technical standpoint, but the community still has to maintain their features up-to-date with every release, with little to no help from the Numworks team, as the code has no stability guarantee and very little documentation.
There is also the second motivation for Symbolibre: bringing a combination of modern software and hardware into a graphing calculator. As far as this goes, Numworks does not improve on its predecessors. Their technical specifications boast a minimal 256 KiB of RAM that translates to harsh limitations such as the 32-KiB limit on Python memory. So I was not surprised to learn they couldn't afford to store expression trees on the heap (article in French).
This type of hardware and software environment (including the all-custom kernels) cost Casio and Texas Instruments months of work to port MicroPython when it made its way in French high school programmes (Numworks calculators supported it from day one but are equally limited in their module and feature set). By contrast, it takes us minutes to install the full-featured
python3 interpreter on our Linux-based OS, with all the modules we might need.
So while we think Numworks took quite a step in the right direction, and deserves full credit for that, we believe there are still substantial improvements to be discussed about free software and modernity in graphing calculators.
Free software is a unique philosophy that grants users as much freedom as possible. It is often used in conjunction with the open-source model that lets users contribute data, ideas and code the the software.
Both of these philosophies have been almost nonexistent so far in the world of graphing calculators. Since 2017, Numworks has confusingly brought them to light by being neither while looking like both. Symbolibre is unequivocally both and we intend to show how empowering it is for users and for educational tools. 😀
Many thanks to Omega developers RedGl0w and Quentin (as well as other Omega contributors!) for providing me with insight about Numwork's development model, and making sure that this article remains as fair as possible.