Add section to main page about "projects to work on"?

Hi all!

I would like to propose a new section in the main of Ada-Lang.io. I want to start a conversation and get some feedback from the community before working on this idea. The feedback would need to be positive and the Website admins would have to approve it.

I would like to add a “Projects to work on” (or something similar) at the top navigation bar and mention this section in a couple of places. This section would list some projects and ideas where the community could work on in order to improve the general Ada ecosystem. Notice that I said “Ada Ecosystem” and not “Ada projects”!

For example, it could list projects such as:

  • Ada programming
    • Improve whatever thing in Alire
    • Help the IronClad kernel
    • Create some RTS for Zephyr RTOS, *BSD…
    • Create or improve high quality Ada bindings to some C libraries that people could make use of… Think of SDL2, MIDI, etc…
    • Create some highly desired Ada project
  • Quality assurance
    • Test Alire v2
    • Test Alire on Windows
    • Test GNAT/LLVM-GNAT on some systems and report bugs or improvements…
  • Integration on other systems
    • Improve Ada support in FreeBSD/NetBSD, etc…
    • Add Ada syntax support in LaTeX-lstlistings (for example, this would require very little Ada experience!)
    • Ada on Macs, Apple systems.
    • Ada and WASM
    • Ada and Android
  • Documentation
    • Write tutorials on topics such as “Getting started with Ada programming in RTEMS…”
    • Give feedback to guides or systems such as the “Learn Ada” website
  • Marketing
    • Make posts about Ada projects or news in general programming websites such as HackerNews, general subReddits, etc. (I would ask people to not be obnoxious or just post things for the shake of posting. Posts should be high quality and impactful in order to create momentum!)
    • Response accurately and nicely to comments and questions about Ada in social media
  • Help
    • Be present in forums, chats, etc in order to help new people getting started.
    • Compile a list of general Ada pitfalls that should be improved for newbees and general programmers.

This section would not be one where people just list their desires and own personal projects. It would mainly focus on general tools, outreach, easy to get-started projects for new Ada programmers, cool projects that could make Ada grow in the eyes of other programming circles, etc.

So… What do you think? I believe this is a great idea and it allows us, the community, to focus on basic structural issues, create a better “First impression/First experience” when getting started with Ada, and large projects that can be later be used to gain popularity and outreach.

Best regards,
Fer

10 Likes

Since reading about the FOSDEM24 rejection, I’ve been mulling over what we could do.

In the past year, I’ve seen Ada not only appear for the first time on the stackexchange survey, but also rank higher than Zig, Julia, and others in “Languages that I want to learn”. I’ve seen some very cool projects (including Ironclad) and watched Alire’s ecosystem grow. Yet at the same time, I’ve also seen Adacore partner with Ferrous Systems and even release GNAT Pro for Rust. I’ve seen not only the linux kernel but recently even Microsoft show more interest in Rust for “safety and security.”

I feel like this community it at a pivotal crossroads where we have the opportunity to expand into a reassurance or fade into complete obscurity while the world leaves Ada behind for other languages such as Rust. I’m seeing more and more people looking into Ada lately, but then running into trouble with tooling or learning. For example, check out the first video for Ada for Game Developers.

For a couple years now, I’ve been trying my best to get Ada’s barrier of entry to zero by building things like GetAda and I’m presently working on making it even easier so 99% of the time the person just has to paste a curl command into their terminal like what you do on rustup.rs. I’m paying for an alpine vps so I can work on figuring out how to automate builds for alire and bootstrap gnat for it. But it feels like I’m alone and just yelling into the wind.

I think this is a great idea because we need a concerted and dedicated effort on advocacy and improving the Ada community, its tooling, and building momentum. Adacore can’t be expected to prop up this language. The Alire team can’t be expected to put all of the effort into the tooling. We need to work towards this as a community.

There’s a famous marketing case study surrounding Kmart’s I shipped my pants commercials. It actually spelled the end of Kmart, not because the commercials were bad, but because they were effective. People saw the commercials, wondered “Huh, why did I ever stop going to Kmart? I think I’ll visit” and were consequently disappointed because Kmart never improved their stores or shopping experience. It was the death knoll. We need to make sure that we have good infrastructure in place as we attract more attention.

I want to see zero barrier to entry to getting a full tooling system up on Ada. While Alire has the best chance of accomplishing this, we need focus on not only getting as many versions of gnat and gprbuild built for as many families as possible for the “native” toolchain, but being able to handle cases that aren’t glibc, Apple Silicon, etc.

I totally understand that I’m technical enough to get all this working on my system but it’s a very good look if we make things stupidly easy so everything just works on as many platforms as possible with little to no technical troubleshooting. This is why we end up with rust having such a fantastic following and momentum that it has. I’ve dug into the guts of how rustup works when trying to replicate it for GetAda, and it has a separate binary for so many different architectures off the cuff, including lesser-known ones that I know for a fact people have built Ada on before. Someone on an android phone can get the rust toolchain this way. And rustup isn’t doing anything that Alire couldn’t.

I’m sorry if this went off on a tangent, I feel very passionately for this community and I love this language. I want to see it excel to new heights. If there’s anything that I can do, please let me know. I fully support this.

7 Likes

:100:%

The problem is this, gnat doesn’t get fixes unless it’s being paid for by whichever company pays adacore or unless it’s one of the things adacore is doing anyway.

The arg refuses to remove old features or break backwards compatibility, this needs to change, other languages do it fine.

I have always been drawn to the idea of having translations of ada-lang.io, documentation, and materials on learn.adacore.com in other languages. I even have a translation of the “Ada introduction” course and part of the Ada Quality and Style Guide into Russian. However, it seems that this direction is no longer of interest to anyone. :person_shrugging:

1 Like

Hi,

This section would list some projects and ideas where the community could work on in order to improve the general Ada ecosystem. Notice that I said “Ada Ecosystem” and not “Ada projects”!

I agree with this proposal, but don’t understand why “Ada projects” cannot be included in it, or be mainly focused in the “Ada Ecosystem”. For newcomers, I think it’s a good idea to have Ada projects to work on, of any kind, and not only related to the Ada Ecosystem. Also, ada-lang.io is a good place to bring the opportunity to people willing to learn and to participate in the Ada community, to work in a wide range of projects and ideas (I cannot imagine an X-lang forum that offers only opportunities to work exclusively in the X-lang ecosystem … why?).

Other points/aspects I’d like to add to your proposal:

  1. To create a curated list of Ada projects to work on, in the Ada ecosystem or not, that are alive, maintained, producing periodical releases and with a community of participants. If a newcomer takes a look at the frameworks, libraries or embedded projects in the Awesome Ada repository, and tries to choose one of them to participate in it, she/he will discover that a vast majority of the projects look like unmaintained, with commits from many, many!, years ago (mine included).

  2. In the embedded side, it will be really awesome to see that Ada is supported in Platformio, at least in the boards currently supported, with examples and tutorials. Adding support for more boards will give Ada a lot of visibility! (e.g., one could select the Ada (riscv/ravenscar_RTS) framework for the HiFive1_rev_B board)

1 Like

I strongly support your idea. Unfortunately, I won’t be able to collaborate much until I finish some obligations I currently have.

In any case, I have some comments about your proposals:

There is a distributed way to implement this. For example, in GitHub we have a special label (good first issues) in all new repositories to mark those issues which are good for newcomers. Authors wanting collaboration could create those issues directly in their projects, and we could simply link to the appropriate search URL.

Start by Ada library wishlist

Also, encourage people to include their libraries or tools in Alire. There are still many projects not indexed.

In fact, I included Ada with syntax highlighting in a LaTeX work, unfortunately I lost the TeX file and only have the PDF output. I don’t know if I used lstlistings or another plugin, but I remember it was straightforward, it already included Ada support.

imagen

Moreover, just tested and lstlisting just worked for me, although it has only bold for keywords, so it is not the one I used, or there might be ways to customize it.

\begin{lstlisting}[language=ada]
with Ada.Text_IO;

procedure Main is
   type GUID is new String (1 .. 32)
     with Dynamic_Predicate =>
       (for all C of GUID => C in '0' .. '9' | 'a' .. 'f');

   ID_1 : constant GUID := "030000004c050000cc09000011810000";
begin
   Ada.Text_IO.Put_Line ("Reading from device " & String (ID_1) & "...");
end Main;
\end{lstlisting}
\end{document}

And do it for ada-lang.io, Wikibooks or similar, so there is an easy way for anyone to propose changes.

I’d add, improve Ada support in open-source hubs/forges, like Max did here or Mosteo here. Ideas: better navigation and more actions for GitHub. Also add Alire to the supported Packages feature.

I’d add, make sure appropriate Ada projects are listed in appropriate technology listings, like the awesome lists in GitHub or similar. Examples: awesome-emacs mqtt.org SFML wiki

3 Likes

I thought it’d be a Good Idea to write up some of the pitfalls and workrounds for Alire on Mac (especially those on newer Apple silicon).

Downloaded ada-lang.io, and Node & Yarn from Homebrew. Unfortunately,

$ yarn start
/Users/simon/Developer/ada-lang-io/.yarn/__virtual__/webpackbar-virtual-871060ede2/0/cache/webpackbar-npm-5.0.2-70d85f1a62-214a734b1d.zip/node_modules/webpackbar/dist/index.cjs:621
const NEXT = " " + chalk__default.blue(pointerSmall) + " ";
                                  ^

TypeError: chalk__default.blue is not a function
    at Object.<anonymous> (/Users/simon/Developer/ada-lang-io/.yarn/__virtual__/webpackbar-virtual-871060ede2/0/cache/webpackbar-npm-5.0.2-70d85f1a62-214a734b1d.zip/node_modules/webpackbar/dist/index.cjs:621:35)
    at loadCJSModule (node:internal/modules/esm/translators:260:3)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:294:7)
    at ModuleJob.runSync (node:internal/modules/esm/module_job:209:17)
    at require (node:internal/modules/esm/translators:245:9)
    at Object.<anonymous> (/Users/simon/Developer/ada-lang-io/.yarn/__virtual__/@docusaurus-core-virtual-7264c45998/0/cache/@docusaurus-core-npm-2.2.0-7ed3f550ad-ff47e6cf85.zip/node_modules/@docusaurus/core/lib/webpack/plugins/LogPlugin.js:10:46)
    at loadCJSModule (node:internal/modules/esm/translators:260:3)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:294:7)
    at ModuleJob.runSync (node:internal/modules/esm/module_job:209:17)
    at require (node:internal/modules/esm/translators:245:9)

Node.js v21.1.0

Any suggestions? (also, where in the existing document, if anywhere, would such a page fit?)

I’ve got this too. Fortunately I was able to downgrade Node to 18 (because I did it in a docker) and then it worked. It probably worth an issue at ada-lang-io repo.

Oh boy, this got a bit of traction going :smiley: Thank you all!
I will try to reply to all points. This is going to be a long answer…

The Ada vs. Rust debate is a long and complex topic. I hope to voice my opinion about it another time, but I would not be worrying about it too much. As a summary, I would say “lets focus on making Ada great, other will do the same with their own tools” :slight_smile:

This is one of the reasons that motivated me to create this proposal.

PM if you want access to an Alpine box. I can create a user (SSH) for you in my personal server. Nonetheless, thank you for testing it! I agree that the experience should be as smooth as rustup (ideally).

THIS is the main goal of this thread! :smiley: Thank you for understanding it ^^

I fear the same may happen to us. We cannot say that we are a great language with great tools but then people can’t easily use them. This sudden change in expectation/reality is not a nice first impression.

Your message does hammer a very important point in my opinion. We need to improve the first experience and the initial investment should be as low as possible (for users). I thank you for working on this! This topic should have priority. Nonetheless, I do thank the entire Alire team, testers, independent people patching things up and AdaCore for getting us closer every year. But some more work has to be done and only the community can face the new challenges…

I hope that more and more people and companies get involved. But that would be on the tail end of my list of wishes. Lets get the basics right, then lets punch upwards :smiley: This also applies to the ARG comment.

As a non-native speaker, I also thought that translation work would be incredibly important. But as you mention, it does not seem to be that anymore. I feel that new programmers do have a good grasp of english to the point where reading documentation in it is no longer an issue… Nonetheless, I think this is a very interesting point.

I wanted to point out that this is not only about programming in Ada (Ada Projects) but that other activities, such as helping newbees, translation, advocacy and other activities are just as important. Of course that direct Ada projects are also in there, they are the core of this issue. Sorry if I did not explain myself correctly :slight_smile:

YES! I forgot to point this out, thank you! There could be a section in the vein of “Try to code something and help the community in the meantime!” I think is an important point.

Yes, one of my goals is to make this site a “community organisation platform” where the community can come together and hack things up for themselves and the greater Ada community.

Yup, that is what I would like to do. Also, I would like to take the stigma of unmaintained Ada projects. I know that young people want to see that projects are actively developed. However, Ada, due to its nature, makes it so that once the goal of the project is reached, it barely needs extra maintainance :slight_smile:

YES! I would like people to be able to use Ada in any system/platform, just like what AJ said. But also, I want to help people realise that Ada is alive and kicking. For example, the HiFive1 Rev B board that you mention, is supported by Ada! Take a look at Gabrielle Galeotti’s SweetAda framework or Ada_Drivers_Library ^^ We already have some nice things outhere :slight_smile:

I know and understand it. Another motivation for my proposal was that I am no programmer, I cannot work on the tools other do. I may help with some testing, feedback and a patch or two. I also do not have much time. We mostly do not have much time. That is why I would like to increase our efficiency by focusing on specific important targets and work together! :smiley:

That is a great idea. I will take note about it, but also make sure to remind us about it!

I had not seen that thread, thanks. While I really like it, my goal with this proposal (as said earlier) is to focus on the important community tasks. I do realise that someone may want a specific libary or tool in Ada that is useful for a given task. However, specific tools may not suit what I had in mind. My proposal would focus on projects that have a direct and needed impact on the community.

YES! That is another important topic. We could/should transform Alire into a central repository of all Ada projects. Don’t get me wrong, Alire does not work for everyone and everything, but it is a good starting point. I also do not like heavily centralising power :stuck_out_tongue:

There is indeed basic support for it. However, some languages have some very nice stylistic additions that we could also use. I used LaTeX as an example of something that does not require pretty much any Ada knowledge but that someone interested in typsetting could get their hands on :wink:

I agree. learn.adacore.com could be a place to learn general Ada and this place one where specific things/guides are integrated.

I agree, but I would like this proposal to focus on tools/projects/actions that work towards improving the community at large, not any Ada project that exists :slight_smile:

That would be nice… Or even better (I am just daydreaming here), make it just work out of the box! I know that requires more than just patching Alire up, but that would be the ideal case :slight_smile: Thank you Simon for being our Ada + Apple expert!

Next steps?

Since this proposal/idea seems to have gathered quite a bit of positive feedback I think we could start working on it, don’t you think? I do not have much free time and I am doing some other Ada thingies in the background, but if anybody wants to get started, please, go ahead! We could start by creating a PR/Issue in Github and take things from there :slight_smile:

Best regards,
Fer

3 Likes

This was in the context of proposing actions to the community in the context of Marketing. It is important that when we have a binding or implementation for some specific technology, we announce it, as anyone else does, in those pages. For example, the majority of visits to the ASFML repository come from Bindings (SFML / Download) Sometimes, we live in a self-imposed isolationism.

1 Like

I had to run it in a docker to make it work: Docker

New page under how-tos? ada-lang-io/docs/learn/how-tos at main · ada-lang-io/ada-lang-io · GitHub Or under getting-started? ada-lang-io/docs/learn/getting-started at main · ada-lang-io/ada-lang-io · GitHub

Funding, it’s an issue. AmigaOS used to have bounties for particular projects, still kind of does, and libre-soc also does this.

Definitely one thing I would like is to be able to work on my stuff, once I get my head sorted, full time, but with this crap government threatening what they are threatening, lack of funding adds extra stress.

:100:

Every time I download a “community edition” Ada compiler, I run up against a bug. Worse, I think that one of them is the same bug I first reported a couple of years ago. If not, it’s awfully similar. (I can’t check b/c I’m no longer a member of GAP.) And I don’t mean a merely annoying bug: I mean a show-stopping, compiler-crashing bug that asks me to report the bug to the gcc project… and user account creation at gcc’s Bugzilla has been restricted.

Here, for example, is one I recently encountered. I’m quite sure I either reported it 2+ years ago, or it’s so close to one I reported 2+ years ago that I’m amazed they didn’t fix this in the process.

   procedure Boom (V : Int_Vecs.Vector) is
      A : array (1 .. V.Length) of Integer
         := (others => for Each in 1 .. Natural (V.Length) => Each);
      --                   ^--- BOOM

If that happens at compile time, how can I trust the compiled code at run time?

It bears repeating that I’ve never once encountered that kind of thing in the 2 years I’ve been using rust full-time at work. Sure, I have encountered 1 or 2 bugs in the Rust compiler, but never of this severity… and again, that’s from using rust full-time at work. I use gnat a lot less than I’d like, though when this happens to me I often wish I’d done [insert project here] in Rust instead of Ada.

We can talk till we’re blue in the face about Ada’s safety guarantees: when the compiler’s behavior suggests that its its own developers can’t guarantee stability and reliability, what will most developers conclude? Especially when it’s a bug that was reported quite some time back?

That still crashes GCC 14.0.0 20231008 (experimental) and GCC 13.1.0.

This is OK on those two compilers (with -gnat2022):

   A : array (1 .. V.Length) of Integer
     := (for Each in 1 .. V.Length => Integer (Each));

but still gives an ICE with GCC 12.2.0.

Thank you! the second one is indeed what I expected to work. It originally had pragma Ada_2022; at the beginning of the file, with bracket-initialization syntax, which I think is the same as running with -gnat2022; is that correct?

By the way: I apologize to everyone if my post came across as overly negative. I want to write more because I appreciate the OP but had some other things on my plate.

1 Like

Just some brief thoughts, because I have started learning Ada a couple of weeks ago, so this resonates a lot.

  • My first, still very superficial impression of the community is that it’s small, but it’s active and welcoming (and especially the latter part is crucial).

  • What is a bit confusing right in the beginning is the relation between ada-lang.io, alire.ada.dev, and everything AdaCore offers. It’s like there are different entry points and how do you know which one is recommend or even where the difference is.

  • I found setting up my first project with Alire actually very easy. The hardest part was to dive into the configuration to adjust compiler warnings and stuff, but no serious hurdle there either. Maybe that’s because it’s smooth on Linux or because I was already willing to put in some serious effort.

  • „Projects to work on“ sounds great!

  • The forum is good to have, but it’s a forum. Are there any thoughts on setting up a Discord or something similar, where the threshold is much lower to ask small and stupid newbie questions (and that has a more real-time feel)? But this, of course, depends on the number of active members.

  • The other main thing that would help me is getting a pair of experienced eyes to look at my code. Not sure how much traction Exercism has, but I was actually surprised to not find Ada in the list of languages (Exercism). The nice thing about Exercism is that it has a mentor mode. It’s on small code snippets only, but it’s a great start to get feedback from someone who knows the language.

P.S. Found the Exercism discussion now…

Well, finally I have to say that I really really like Ada and I’d be happy to stick around for a while. :slight_smile:

9 Likes

Yes to both. Why pragma Ada2022; doesn’t work I don’t know :slight_smile:

Understandable. Was there a PR? (I didn’t know that GCC Bugzilla account creation was restricted)

Oh, then I completely agree! Yes, we could even have a “News” page where we list new releases or big events.

I wish for some funding too. However, this is a bit of a “chicken and egg” problem. No one is willing to donate unless the project is important and large to them. But a project may not become large and important without funding… Anyhow, I am open to funding ideas! We already have AdaCore, and having AdaCore is always a plus, they are doing a lot of heavy lifting. But it is true that we need to incentivise work on things that AdaCore may not be willing to invest their resources. That way we can complement each other :slight_smile:

I agree. These kinds of problems are a big drawback and they should be fixed ASAP… I will see what I can do… I know some users here have a Bugzila account, maybe they could help report it… It is for these kinds of bugs that I wish we had some funding :confused:

I fully agree and I would like to see that change too.

Hi and welcome :smiley:!

The open source side of Ada has had a lot of history and it shows… I know it is confusing but there are reasons behind it. We should make it less confusing even if we are not going to change it.

That is reassuring! Some people have worked hard to make things work, but there is still a bit to do in this front. Nonetheless, I (we) are happy that it worked well for you!

The most active places are the Gitter (now Matrix) room, which is like an open source Discord alternative https://matrix.to/#/#ada-lang_Lobby:gitter.im or the IRC channel (ada on libera.chat). Reddit is also somewhat active but it is a different kind of forum, same goes to comp.lang.ada USENET.

That is great to hear! Feedback is very welcomed!

Simon, sorry to ask you and sorry to ask you here. I believe you have an account… Would you be willing to open an issue there so that there is at least a tracking number?

2 Likes

What all those mulit-billion dollar/pound/euro weapons, military contract companies and banks that use Ada, they could each spare a few million :stuck_out_tongue_winking_eye: a year to fund projects. It could be sold to them as the answer to their inane and often used excuse as to why they can’t find any Ada programmers. If there’s an incentive to learn the language on their own (££) they might even be willing to go work for those companies.

1 Like

@simonjwright @Irvise

Simon, sorry to ask you and sorry to ask you here. I believe you have an account… Would you be willing to open an issue there so that there is at least a tracking number?

Whoah, I already filed it! I had forgotten / put off reporting this latest iteration and I have a ticket and even a reasonable quick response.

The issue with bugzilla is still there, I think, but you have to email and request an account. It was a quick response.

But yeah, this error kind of amazes me.