A New Era For Ada/SPARK Open Source Community
by Fabien Chouteau –
Today we have two exciting announcements for the future of the Ada/SPARK ecosystem.
Policy for new software libraries
Until now, the default license of choice for new software libraries at AdaCore was GPLv3 as complemented by the GCC run-time exception. The reason for this choice dates back to the origin of the company. This is the license used for the Ada run-time library that is part of the GCC/GNAT compiler, the same as the C runtime library. As we were familiar with this license, we then reused it for software libraries that were used outside of the compilation context.
We believe that the competitive domain of programming languages where open-source is now the standard requires us to take actions which will increase adoption. We aim to convince application developers of all kinds to use Ada/SPARK and our libraries. Therefore, we need to make that easy by licensing the libraries under a license that is more commonly used in the open-source world and one that is more permissive. For those reasons we announce that, as of today, new libraries developed at AdaCore will use the Apache License 2.0 by default.
In addition, in the coming months we will also change the license of some of our libraries hosted on GitHub to Apache 2.0:
We chose the Apache License 2.0 because we consider it to be the best option for our customers and the Ada/SPARK ecosystem at large.
For existing users of these libraries, this shouldn’t change much. People using these libraries either through GitHub or through our commercial services will still be able to create proprietary software. This will not impact the license of the tools or compilers that we distribute either.
Modernizing the ecosystem
Since 2005 AdaCore releases every year a special version of our GNAT toolchain for the free software developer, hobbyists, and students. This release is called GNAT Community, formerly GNAT GPL.
Two years ago we thought about modernizing the ecosystem. A cleaner and more familiar ecosystem with two variants: A GNAT provided and supported by AdaCore for commercial/industrial projects, GNAT Pro, and a GNAT provided by the community for open source projects with familiar licensing and without pure GPL run-times, GNAT FSF. This results in a decision by AdaCore to stop further releases of GNAT Community and have the community handle its successor.
We organized a survey to get the opinion of the community regarding the future of GNAT Community. We learned that our idea was mostly approved by the people that responded. We also confirmed our understanding that people not in favor of this idea would be concerned about the ease of use and quality. To address those concerns, we thought about solutions and ways to replace, and even improve on what GNAT Community offered.
Those thoughts led to our sponsorship and contribution to the Alire package manager created by Alejandro Mosteo from the Centro Universitario de la Defensa de Zaragoza. I said in a previous blog post that Alire is a game changer for the Ada/SPARK ecosystem and it really is. After two years of such collaboration, we feel like the project is now ready to become the main tool for the Ada/SPARK open source programming community.
Alire is a source-based package manager for the Ada and SPARK programming languages. It is a way for developers to easily build upon projects (libraries or programs) shared by the community, but also to easily share their projects for others to build upon. On top of that, everything you could do with GNAT Community you can now do with Alire: GNAT Studio, SPARK, native, cross ARM, and cross RISC-V compilers.
So today we announce the end of the GNAT Community releases with 2021 being the last one. We encourage all GNAT Community users to transition to Alire going forward. Full details and explanations on how to transition to Alire can be found at alire.ada.dev/transition_from_gnat_community.html.
Feel free to ask questions in the comment section of this blog post, or on the Ada forums such as Reddit r/ada, Telegram, Gitter, comp.lang.ada, etc. We will do our best to answer all the questions.
We are excited to embark in this exciting new era for the Ada/SPARK community.