Saturday, October 31, 2020

First beta release of Alire, the package manager for Ada/SPARK

A few years ago we real­ized that hav­ing a pack­age man­ag­er for the Ada/SPARK com­mu­ni­ty would be a game chang­er. Since then, Ada­Core has been spon­sor­ing and con­tribut­ing to the Alire project cre­at­ed by Ale­jan­dro Mosteo from the Cen­tro Uni­ver­si­tario de la Defen­sa de Zaragoza. With this blog post I want to intro­duce Alire and explain why this project is impor­tant for the Ada/SPARK community.

What is a pack­age man­ag­er? #

There are many dif­fer­ent kinds of pack­age man­agers, Alire is a source-based pack­age man­ag­er focused on the Ada/SPARK pro­gram­ming language.

This means that the goal of Alire is to pro­vide an easy way to get, build and use Ada/SPARK projects in source form. It is a tool for devel­op­ers, as opposed to bina­ry pack­age man­agers which are pro­vid­ing ready to use appli­ca­tions for end-users. It is com­pa­ra­ble to opam for the OCaml ecosys­tem, or Cargo for Rust.

What are the ben­e­fits of Alire for the Ada/​SPARK ecosys­tem? #

In my opin­ion, the main ben­e­fit of a pack­age man­ag­er is to improve the col­lab­o­ra­tion with­in a com­mu­ni­ty of developers.

This is achieved in mul­ti­ple ways:

  • Alire is a cen­tral place to look for exist­ing projects. If you are look­ing for a library to pro­vide a giv­en fea­ture in your project, a quick search on the alire.ada.dev web­site will tell you if some­one from the com­mu­ni­ty already imple­ment­ed it.

  • The corol­lary is that Alire is a cen­tral place to con­tribute projects and make them avail­able to oth­er devel­op­ers in the community.

  • Alire pro­vides a com­mon and easy way to inte­grate projects from the com­mu­ni­ty in your own projects.

What does it mean in prac­tice? #

Let’s take a sim­ple sce­nario from per­son­al expe­ri­ence: I am writ­ing an appli­ca­tion in Ada, and I want my appli­ca­tion to pro­duce PDF reports.

We will look at dif­fer­ent steps of this sce­nario and com­pare how to achieve them with­out and with Alire. I will use the alr com­mand line tool from the Alire project.

1st step: find­ing an Ada PDF library #

  • Before Alire: I will search the web for a project that match­es my needs. Search engines are pret­ty pow­er­ful so if there is some­thing out there (on GitHub, Source­Forge, Git­Lab, or else­where) I will like­ly find it. ​Ada PDF” doesn’t yield good results, but ​Ada PDF library” does the job.

  • With Alire: A sim­ple search on the alire.ada.dev web­site gives me a list of Ada/​SPARK projects avail­able right now match­ing the PDF key­word: https://alire.ada.dev/search/?q=pdf Or on the com­mand line:

     $ alr list | grep pdf
    

2nd step: use APDF in my project #

  • Before Alire: Once I have found the APDF project (https://​apdf​.source​forge​.io/) I can either get the source from tar­ball or check­out the repos­i­to­ry. From that I have to under­stand how to use the source code in my project. Maybe I have to set the GPR_PROJECT_PATH, maybe I have to build and install the library.

  • With Alire:

    $ alr with apdf
    

    The alr with com­mand auto­mat­i­cal­ly fetch­es the lat­est ver­sion of APDF and makes it avail­able in my project.

3rd step: updat­ing APDF when new releas­es are avail­able #

  • Before Alire: I have no auto­mat­ed way to know if a new ver­sion of APDF is avail­able. I can fol­low forums and mail­ing lists in hope of catch­ing the infor­ma­tion, but this is not very reli­able. If I do get the infor­ma­tion that a new ver­sion of APDF is avail­able, I have to redo the 2nd step (down­load tar­ball, extract, set project path, etc.).

  • With Alire:

    $ alr update
    

    With the alr update com­mand, Alire will let me know if new ver­sions of my depen­den­cies are avail­able and auto­mat­i­cal­ly update them for me, if I wish to do so.

4th step: Oth­er devel­op­ers want to build my project #

  • Before Alire: I have to doc­u­ment in the README file all the steps to get and set up my depen­den­cies (down­load tar­ball, extract, set project path, etc). Any­one inter­est­ed in com­pil­ing my project has to fol­low all the steps, and do so tran­si­tive­ly for all dependencies.

  • With Alire:

    $ alr get my_project
    

    If I con­tributed my project to the Alire index, any­one can get the project and its depen­den­cies with a sim­ple com­mand. Oth­er­wise, one can check­out the repos­i­to­ry and use alr update to fetch the dependencies.

5th step: pub­lish­ing my project for oth­ers to use in their projects #

  • Before Alire: I have to doc­u­ment how to inte­grate my project in anoth­er project. I can then announce the project on an Ada/​SPARK com­mu­ni­ty forum like Red­dit r/​ada and hope that this or the repos­i­to­ry will show up in a Web search when peo­ple need my project.

  • With Alire:

    $ alr publish
    

    Alire pro­vides a com­mand to help pub­lish­ing projects in the Alire index. Once my project is in the index, a ded­i­cat­ed page will be cre­at­ed on the alire.ada.dev web­site and my project will be avail­able for Alire users. Of course it is still a good idea to announce it in the forums.

How many projects are avail­able in Alire? #

As of Octo­ber 2020, there are 130 projects (“crates” in the Alire vocab­u­lary) avail­able. You can browse through the list on the web­site: alire.ada.dev/crates.

There is also a net­work graph view of the Alire ecosys­tem: here.

How do I start? #

The first beta release of Alire was pub­lished a few days ago. Go to alire.ada.dev for instruc­tions on how to install and use the tool.



from Hacker News https://ift.tt/3eh5hyM

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.