Ada advocacy ­— Ada promoting missions — any proposals?

It seems Ada’s unpopularity and borderline abandonment is unmerited. The problem is in part this “newer is better” (“latest and greatest”) mentality/fallacy that causes the masses to embrace anything new even if it is garbage, and treat all old tech as obsolete. This zombie thinking is part of what’s killing Ada.

What is being done to counter Ada losing ground? Ada never even took ground that it should have had in the first place. E.g. safety critical medical devices are still developed in C (last I checked).

If you go to fsf.org, there’s a “campaigns” page where they’ve organized projects to promote the FSF ideology. FSF also has a “High Priority Free Software Projects” list that gets updated annually:

https://www.fsf.org/campaigns/priority-projects/

That list presents projects needed to most significantly advance the FOSS movement. Is there such a list to advocate & advance the Ada language? One item on the FSF list is “Free drivers, firmware, and hardware designs”. What if there were projects to code firmware, drivers, and libraries in Ada? This would do more to promote the language than an application because it would force/coerce app developers into contact with Ada code when they develop apps. Shouldn’t something like libreboot/coreboot be a high-priority Ada project? Ada is also most suitable for low-level hardware tasks anyway, no? Would it make sense for Adacore and FSF to combine forces and mutually promote FOSS & Ada together? In principle both FSF & Adacore would benefit from filling the gap in FOSS f/w & drivers.

1 Like

Most of the things in Ada in the last couple years have been the result of a few people just working together to make something useful, so find a need and go fill it.

Don’t worry about popularity, just make and share cool stuff with it. Don’t argue with people about it, just correct misconceptions in a nice way and point them at resources.

The two biggest problems with Ada are (1) people have really bad and often wrong opinions about it, especially about it “being dead,” and (2) there needs to be better resources to learn, and projects to motivate you to learn.

A new learning site is at learn.adacore.com. It’s open source so you can contribute to improve their resources there.

A package manager was started, called Alire. There’s also a competition sponsored by AdaCore to make things for it. I won $2000 for a tool I wrote, which I’ve used for hobby and professional work just because it’s useful. That team is great about accepting pull requests.

I worked with someone to get this forum set up (most of the work was done by, and this site is run on resources freely provided by Jeremy… Thanks Jeremy!), and also made ada-lang.io . It needs more people to help writing tutorials, how-tos, etc.. I tailored the ARM output formatter to output MDX needs some help getting the last bits of formatting working.

5 Likes

The two biggest problems with Ada are (1) people have really bad and often wrong opinions about it, especially about it “being dead,”

This is a problem for sure, but to the contrary. Failing to see that Ada is on life-support at the edge of death is a big part of the problem. Identifying the problem is the 1st port of call, only after which the need for advocacy campaigns is evident.

Ada is what, 50 years old? And yet despite that history there are no job listings outside N.America & EU. There may be some non-public (unadvertised) jobs but to have no listings whatsoever is a good indication of a dying art. Ada is the top language for safety critical software and yet the car & medical industry have gone with C. That’s not a tech failure; it’s an advocacy failure. On top of Ada not taking hold where it should, ground is also being lost now that the US military projects are converting old Ada code to Java (largely due to universities teaching with Java).

and (2) there needs to be better resources to learn, and projects to motivate you to learn.

Learning is indeed part of the issue. I once asked a project manager “why are we using MS Word instead of LaTeX for our tech docs?” His answer: “because no one knows LaTeX”. Then I asked the prof of a college of science at a university: “why aren’t the students learning & using LaTeX?” His answer: “because LaTeX is not used in industry”.

Ada is caught in that same cycle as LaTeX. Some profs recognize that Ada is a good teaching language, but those profs are in a minority. Most profs are utilitarian & favor languages they see job vacancies calling for.

You suggest a lot of random ad-hoc activities unlikely to make a dent in Ada advocacy. But exceptionally the AdaCore competitions you mention are perhaps driven by an some attempt at Ada advocacy.

Simply being useful is a low bar. Among projects that are useful, some stimulate proliferation of Ada better than others.

What the Ada community needs is a focused organized list of projects that are not only useful but also maximize promotion of the language. It’s questionable whether Adacore would have that drive, since they are quite fine just going along with the flow:

You suggest a lot of random ad-hoc activities unlikely to make a dent in Ada advocacy.

I’m baffled by this straight up dismissal of what has already started to begin some pickup in the language. Seeing this sort of massive disconnect in the Ada community over and over again, between what other languages have done and what Ada needs to do makes me just want to drop the language and move on.

No company in its right mind is going to jump on an aging technology which has tools and resources which look like they’re from the 90s. The resistance to modernization of basic elements around the ecosystem is absolutely ridiculous. You’re not going to advocate your way of this, you’re going to have to build your way out of it.

Most language advocacy is done as a result of open source software. Projects pick languages that people have experience in, or are excited about. People outside of university learn languages and bring their advocacy to work. Most languages aren’t handed down, they’re built up from grassroots or a few big names using it. The big name companies also rely on a lot of open source libraries, as it simplifies picking up the language and minimizes the investment required in it.

IIUC, you seem to be talking about the aesthetics of web design. Do you really think the look and feel of a web-based tutorial influences whether a project selects a language? Then to suggest that a company is “out of their mind” if they select Ada despite these aesthetics being “90s looking”. I find that quite absurd. What I see is project managers looking at CVs, and seeing countless graduates with Java training and very few with formal Ada training.

You’re not going to advocate your way of this, you’re going to have to build your way out of it.

That’s a false dichotomy. You can try to ad-hoc build Ada things without regard to advocacy, or you can build Ada things under the guidance of a mission for Ada advocacy. Just like you can start coding any FOSS project you want, you can also first look at the FSF list of high-priority projects and choose something that has been determined to be relatively more impactful.

People outside of university learn languages and bring their advocacy to work. Most languages aren’t handed down, they’re built up from grassroots or a few big names using it.

After 50 years there should no longer be a need for grassroots efforts. It should be far beyond that. And the fact that it’s not— that we still need a grassroots effort really says a lot about the struggling state of Ada. There’s nothing wrong with university outsiders learning Ada but that’s not where the biggest impact is made. The biggest impact on learning (learning that leads to utilization) is made in the university, which leads to “Ada” appearing on CVs under formal training. Recruiters and hiring managers tend to disregard skills that were not developed formally or on the job, unfortunately.

I do not see a lack of Ada learning resources either. There are several good books on the topic and universities tend to teach primarily from books. Any online tutorials would be a supplemental extra.

Hi @codeTripr

I fail to see the point you are getting to with this post.

When you say things like “What if there were projects to code firmware, drivers, and libraries in Ada?” it looks like you don’t know at all what is going on in the Ada community.

So in the end, your first message here and then your answers to Paul seems to undermine the efforts of many people actively contributing to the Ada community and doing Ada advocacy all year long.

The fact that you post this message on a brand new website that several people spent hours building is kind of ironic.

4 Likes

I was off-the-cuff speculating that f/w, drivers, & libs would be top priority candidates for Ada advocacy. It was an example. AFAICT, it’s undocumented. Can you link to a list of f/w & h/w driver projects that have been short-listed for being most impactful or most needed in terms of Ada promotion?

Some people are tinkering in their garage with various embedded Ada projects but that’s not what I’m talking about because that’s really more to advance the skills of the developer involved than it is to proliferate the language. It helps proliferation from the academic side of things but that’s not likely the optimum investment of effort (as opposed to something like coreboot which would have a more widespread effect).

So in the end, your first message here and then your answers to Paul seems to undermine the efforts of many people actively contributing to the Ada community and doing Ada advocacy all year long.

You’ve misunderstood. Of course every contribution helps promote the language to some extent, but I’m not looking for the disorganized “go build something random” plan. I’m looking for a methodical, organized, & reviewed project agenda to Ada advocacy. If someone has been working that agenda all year long, then this thread would be a good place to share the outline of the plan so new contributors can participate in the mission. Where is the high-priority Ada projects list documented?

When did you ask this? Many students are using LaTeX, especially now that platforms like overleaf.com exist, which make collaborating and getting started much easier.

This is an effort to modernize the online presence of Ada. This is needed to attract new users. Fortran had the same problem and is applying the same solution. Go read [2109.07382] Toward Modern Fortran Tooling and a Thriving Developer Community

2 Likes

To be fair, less and less companies put languages in their hiring requirements. Particularly leading edge companies like Amazon and Google. They don’t talk about languages at all. Their interview process is completely language agnostic. So to suggest that Ada job listings is significant anymore is a bit overstated IMO.

1 Like

I often joke that the answer to “Tell me you don’t know about Ada without telling me you don’t know about Ada” is “I find Rust exciting”.

Now without taking that too far, what I really mean by this is that the issue of Ada popularity is a lot less about its features or age, and a lot more about just general awareness.

I have done a lot of truly grass-roots Ada advocacy including from within organizations, and with CS undergrads. From my anecdotal experience, people who are properly introduced to Ada tend to really love it.

I don’t agree with this push to “fix” Ada as a solution to greater adoption. I think we need to find a way to make more people aware of it. And in that process we need to be careful and critical when we listen to detractors, because trying to satisfy them is impossible, and might dilute Ada.

3 Likes

2019 Denmark. Some students were using Overleaf on their own initiative apparently not to favor LaTeX but rather because of the collaboration capability of Overleaf. Google docs seemed to be preferred & whenever groups didn’t agree gdocs was the default winner as students couldn’t pressure others to do something more complex. Profs and mentors did not encourage LaTeX & many even discouraged it.

~2006 US, science profs at two different universities I was aware of forced students to submit MS Word docs.

Suppose you see a listing for an SWE to work on a project that’s either safety-critical or large amounts of money are on the line (the kinds of jobs for which Ada would be most appropriate). The job req. is language-agnostic. You apply and get the interview. And because the interview is language agnostic they don’t tell you what language or tools you would be using. If you don’t ask, you could find yourself in a contract reporting to a C, C# or java gig using only MS Windows platforms. Or if you do ask and they say “C#, javascript, …Windows”, you’ve already invested time in the application and interview. Are you okay with that?

The employer shouldn’t care too much about what languages a new hire has used, but the evaluation is both ways. The employer evaluates the candidate while the candidate evaluates the employer. I see a lot of a projects that make poor choices on tools and languages. Vague job requirements are more of a risk to the candidate than to the employer. Ada experience would be misfocused as a /requirement/, but Ada should be mentioned so candidates know what they’re signing up for.

The other factor here is that companies like Amazon don’t likely recruit the kind of staff who would care much about the competency of the organization. These are largely people just showing up for a paycheck at a company with an avg annual turnover rate of 100%. Caveat: I only hear from those working in Amazon’s the slave labor dept.… not sure if the tech sector at Amazon is managed differently.

1 Like

I think you make a lot of great points. I agree that Ada should be mentioned, but not as a requirement. Any competent engineer can learn Ada in no time.

1 Like

Thanks for the link @onox, it is very interesting!

Fortran is the oldest high-level programming language that remains in use today and
is one of the dominant languages used for compute-intensive scientific and engineering
applications. However, Fortran has not kept up with the modern software development
practices and tooling in the internet era. As a consequence, the Fortran developer experience
has diminished. Specifically, lack of a rich general-purpose library ecosystem, modern tools
for building and packaging Fortran libraries and applications, and online learning resources,
has made it difficult for Fortran to attract and retain new users.

There is a lot in common with the conclusion we reached years ago that lead to learn.adacore.com, programming competitions, promotion/contribution/support of Alire, advocacy blog posts, new licensing policy, etc.

5 Likes

I once asked a project manager “why are we using MS Word instead of LaTeX for our tech docs?” His answer: “because no one knows LaTeX”. Then I asked the prof of a college of science at a university: “why aren’t the students learning & using LaTeX?” His answer: “because LaTeX is not used in industry”.

You’re going to have to clarify “in industry”.

I wouldn’t use LaTeX to do technical docs compared to any of the available hosted or free wiki solutions, Google docs, docusaurus, mdbook, or just general support for Markdown doc preview, with associated version control inside a (git) repository, or something like Hugo. A lot of these also support MathJax or other LaTeX-like mathematical notations.

What the Ada community needs is a focused organized list of projects that are not only useful but also maximize promotion of the language.

There’s already a library wish list.

I’m not against trying to get people to collaborate. But which authority is there to speak for the community that “these are the things which should be done?” Who is going to do this work on a focused organized list of projects?

The Ada open source community is absolutely tiny – I’ve only talked to less than a hundred people total – with developers split between embedded and desktop work. They’re using the language to solve their problems, that’s what it’s there for, and a problem they understand means they’re more likely to succeed.

Most profs are utilitarian & favor languages they see job vacancies calling for.

I don’t fault universities for trying to teach more broadly useful skills. There’s often coordination between universities and business professionals to discuss what skills are needed, and what they’d like to see taught.

The biggest impact on learning (learning that leads to utilization) is made in the university, which leads to “Ada” appearing on CVs under formal training

AdaCore is already doing this by working with universities. They’re also doing a bunch of internships.

After 50 years there should no longer be a need for grassroots efforts. It should be far beyond that. And the fact that it’s not— that we still need a grassroots effort really says a lot about the struggling state of Ada.

Well, that’s where the language is right now. Ada was focused on closed source and when the schools stopped teaching it and the DoD stopped requiring it, there wasn’t a funnel to get people to try it or to use it anymore.

Simply being useful is a low bar.

It’s not a low bar. This is exactly how Rust is rising to dominance.

People building using things and sharing them on crates.io, and then other people picking them up and running with them. There’s a few projects, like ripgrep which are used as “cool, I use that and it’s written in Rust, I should try Rust” pieces.

Identifying the problem is the 1st port of call, only after which the need for advocacy campaigns is evident.

How are you going to advocate for Ada without improving the ecosystem first?

“Use a niche language which you’re likely going to have to write most (or all) of your own library bindings and dig through often abandoned sites looking for information?” Barnes’ book is fantastic, but a lot of people don’t want to make that much of an investment up front, since that book is pricey.

Part of the reason I’ve written up so many things about Ada online is because so many resources I came across where out of date, or I had to assemble how things worked by using multiple sites and wanted to spare other people the trouble.

It’s only the “random ad-hoc” things which have happened over the last couple years which have significantly improved the Ada developer experience in open source (Alire, Ada language server, etc.). People identifying a problem and then solving it.

No one is claiming to “fix Ada,” we’re just trying to improve our ability to work with it.

IIUC, you seem to be talking about the aesthetics of web design. Do you really think the look and feel of a web-based tutorial influences whether a project selects a language?

Then to suggest that a company is “out of their mind” if they select Ada despite these aesthetics being “90s looking”.

Yes, that’s exactly what I’m saying.

Being able to browse and search documentation is absolutely critical for most projects. Even more so when the community is tiny compared to other languages, and you’re more dependent on documentation. From a technical point of view, as a tech lead on a project, it’s your job to ensure that your people have the available resources to succeed.

From a business point of view, you need to be able to defend your technical choices to managers or investors. It’s easy to compare Ada resources to those of other languages, and even with learn.adacore.com and ada-lang.io, it’d be really hard to defend just based on the quality of references. What we have isn’t perfect, but it’s come a long way. Getting to an acceptable “modern” point is actually pretty easy with a static site generator.

They don’t need to be flashy, but they do need to be close to modern standards and up to date. Consider Donald A. Norman’s “Design of Everyday Things”, in that “Attractive things work better.”

Compare what Ada has to these:

My main point is people need to stop trying to just push advocacy and prove that the language can be used successfully to solve real visible problems. The easiest problems to understand and fix are your own, in hopes that it’s also a problem someone else has.

No one buys into a programming language, they buy into an ecosystem. The docs, the tools, the libraries, and the community. It all has to work together to provide business and programmer value in the creation of things. That’s what folks have been doing.

6 Likes

I wish my current work involved strings more as I want to build up examples of using the standard lib functions. Mimicking Gos. Gos strings lib is not better at all. Quite likely Adas is better and encourages being more efficient with memory but it takes less time to work out how to use Gos string functions.

It took me longer than it should have to realise returning fixed strings was the key. Dmitry seems to disagree with learn.adacore.com and finds fixed strings useful.

I worry some might start with Strings but not have my patience.

Perhaps I should just try to find some time to offer an edit on learn.adacore.com about returning being helpful to reduce the fixed strings limitations.

VSS, might be the other answer but I guess not for embedded or high integrity use cases?

I actually have some nice fixed string based logging on a cortex-m, which I wouldn’t have dared do with C :slight_smile:

I considered porting Bounded strings returning errors instead of exceptions. The problem on a light runtime is that exceptions can’t be propagated and some uses aren’t critical enough to warrant a reset.

All of this complexity is great but needs articulating.

I agree with the tooling and documentation angle primarily. However I have seen some say.

“You wouldn’t want to create an office suite in Ada.”

Yet Gnat studio works well.

“You can’t handle dynamic memory allocation with Ada, a necessary evil”.

To which the correct answer 99% of the time is that it is an unnecessary evil.

However, it seems to me that considering:

There are containers and Dewar has said Ada has more flexible pointer arithmetic than C.

'Address use on records could be celebrated.

Rust hides it’s unsafety in plain sight and relies on the pretence that it is used less than it is.

Borrowing is potentially a thing with Ada/SPARK now.

Then

Perhaps it could backfire e.g.
Ada isn’t safe after all neigh sayers.

However demonstration projects/write-ups of these limitation false hoods might be an idea. Considering you can always use safe Ada with great ease for a low level language, most of the time even in these cases? Ada will always be safer than and even nicer to use than C.

I do not need dynamic memory to do my job, though.

This is unrelated to the thesis supported by the example, but I have to say there are issues with these ways of managing docs.

wikis→ ½ a dozen different unstable languages not well standardized, very limiting (can’t control column widths in a table, can’t put text next to an image, figures don’t get numbered [thus no way to reference a figure number in text]), different bizarre rendering side-effects depending on browser (thus unsuitable as a deliverable when you don’t control the customer’s browser, or it requires the customer to install a wiki server just to read the doc [unless you happen to choose a format that pandoc handles - yet still unpredicable results]), no integration with Clearcase and Clearcase controlled objects wouldn’t be accessed by the wiki engine (thus code reviews that present diffs for a particular branch miss documentation, and clearcase version history searches would miss wiki changes), auto-generated docs would require scraping the wiki engine.

Google docs → gives a surveillance capitalist access to potentially sensitive company info & trade secrets; fragile (down network → employees shoot the shit around the coffee machine b/c they can’t do doc maintenance); code review of clearcase diffs miss related doc changes, finances a relatively unethical corporation.

docusaurus → Access restricted walled garden. Perhaps okay for internal use within a corporation as care would be taken to ensure all users have access, but inappropriate for any documentation that must be shared with the outside world. Distributing docs from Cloudflare is like distributing from Facebook.

mdbook → ½ a dozen different unstable markdown languages not well standardized, whichever MD flavor mdbook uses it would have most of the same problems as wikis AFAICT.

Hugo → not sure what this is, but it looks like a web server, not a document format.

Not sure what the point would be to try to avoid LaTeX to the point of bringing on some quite serious limitations & compromizes.

There’s already a library wish list.

That’d be good raw input from which to start an advocacy campaign. Needs analysis, impact review, vetting, ranking, etc.

I’m not against trying to get people to collaborate. But which authority is there to speak for the community that “these are the things which should be done?” Who is going to do this work on a focused organized list of projects?

The authority and will to work the projects would be no different than that of FSF’s high-priority list. Voluntary, but the volunteers have some confidence that the needs went through some analysis & review, thus a bit more confidence than if they arbitrarily work on something someone else says they personally would like to see.

I don’t fault universities for trying to teach more broadly useful skills. There’s often coordination between universities and business professionals to discuss what skills are needed, and what they’d like to see taught.

Universities should be leaders not followers. Academia should be at the bleeding edge and they should be ahead of industry. Following industry is backwards. Industry is risk averse because money is on the line. That risk aversion reduces potential for innovation and potential for taking the best approach.

I went to a university where some classes used fake languages. Every real assembly language was bound to a particular CPU and missed some concepts & constructs. Since no real assembly language was complete, they taught a virtual assembly language that served as an integrated balance of multiple languages to cover the mainstream concepts and constructs.

The idea was that students who learned that virtual language would have a minimal learning curve with whatever real assembly they encounter in industry, as opposed to a student who would be dependant on implementation specifics and helpless & alienated when they encounter something different.

The industry changes rapidly enough that when a 4-year university focuses on a snapshot of the industry at a given time and teaches with a fixation on implementation specifics, by the time the student graduates much of what they learned is already outdated.

Some projects are wiser than others, and realize that students carry some knowledge that their most experienced workers don’t have. Instead of treating entry-level devs as a vessel to indoctrinate, the more competent orgs see recent graduates as an opportunity to update the tribal knowledge of the company. And rightfully so.

Ada is a great teaching language. Much of the syntax resembles Pascal, which was purely a teaching language — designed to help students learn to program. A proper university should be focused on teaching the theory & concepts in an implementation independent way so the students can quickly adapt to whatever implementations they encounter. Profs that simply target whatever they see in industry should probably not be teaching at a 4-year university, but rather a vocational school or boot camp type of apprenticeship.

Profs who put education in the position of following industry should be faulted for keeping education behind.

Simply being useful is a low bar.

It’s not a low bar. This is exactly how Rust is rising to dominance.

People building using things and sharing them on crates.io, and then other people picking them up and running with them. There’s a few projects, like ripgrep 1 which are used as “cool, I use that and it’s written in Rust, I should try Rust” pieces.

It’s a low bar because it’s squandered potential. Why would “simply useful” be a wiser move than being “both useful and impactful”? It’s a low bar because we can do better. What you say about Rust doing better than Ada without organization is a statement of how lacking Ada advocacy is.

How are you going to advocate for Ada without improving the ecosystem first?

How are you going to improve the ecosystem without first identifying the problems with the ecosystem? If you solve a problem without first identifying it, you’ve merely benefitted from dumb luck. It’s better to identify problems, then solve them.

My main point is people need to stop trying to just push advocacy and prove that the language can be used successfully to solve real visible problems.

Proving Ada can be used successfully to solve real visible problems is part of advocacy. Advocacy is not at odds with solving problems; it’s the opposite. You seem to have this idea that advocacy is limited to marketing or something. An Ada advocacy mission potentially includes any and all activities that promote the use of Ada – everything that goes into the ecosystem as you describe it. It seems our only difference is that you think it should be disorganized.

The idea of using a modern website to document the language probably has more merit that I realized at the start of the thread, but something like that should just be one element to a whole Ada advocacy campaign.

Completely agree here. I would say that the “success” (by success I mean general public popularity = number of (new) learners) of many programming languages are not based on their merits but on the software popularity that was built upon. For example c was based on Unix, C/C++ on windows, rust came from the firefox team etc…
Talking about Ada advocacy, I remember a very very old post about Ada promotion where someone suggested to promote Ada via “contamination”. I give an example here. For example I am an old user of BeOS and logically followed the progression of the Haiku operating system (BeOS clone) for decades now. Just recently gcc 11 with ada managed to be compiled natively. The project and user base is very small too, therefore providing some important software pieces to the project will “force” people to learn ada (or at least have a look). For instance, I would like to use a wireguard client which does not exist yet and the linux/windows clients are written in go (needed version not successfully ported yet), which means to port it, a rudimentary knowledge of the go language may be necessary.
There is no “general public” software written in Ada that is not already available in another language whereas the opposite is not true. Good or bad, Ada is still mostly used by “professionals” for “professionals”.

Remark: I am using quotes for many words because the meaning I want to express is rather loose and to be honest I don’t know how to define them without writing many descriptive and exhaustive lines.

1 Like

Bit of trivia if anyone is interested:

  • PYPL (mentioned by pyj) — Ada rank: 18; based on learning doc volume/availability
  • TIOBE — Ada rank: 31; “based on the number of skilled engineers world-wide, courses and third party vendors.”
  • RedMonk (with history) — Ada not ranked; based on MS Github repos
1 Like