Add AdaCore's Training material to Ada-Lang

Hi all,

AdaCore maintains a repo with quite a lot of Ada training material. Its contents are licensed under CC BY 4.0. This repo IS DIFFERENT from that of https://learn.adacore.com/ The repo is mostly composed of tons of slides regarding the different parts of Ada is self-contained units. I see that @ohenley is one of the main contributors/maintainers. I am pinging @Fabien.C, @pyj and @JeremyGrosser too just for good measure.

I had known of its existance since… a long long time. However, I had never actually taken a good look at the contents until yesterday. And oh, boy, what a gold mine! It has some really high quality slides in a somewhat bite-sized extension. They are down to the point, readable, clean, and with straight to the point examples. They are great. And I think we ought to have them in one way or another in the Learn page of Ada-Lang.

I believe a lot of people do not know of the existence of these resources, as I never saw them mentioned anywhere! I think this is one of the missing key points of literature/learning resources of Ada. Simple, broken down examples with a short explanation text. So. What do you think? Should we maybe have a section under Learn that lists these slides? We should have a system that automatically downloads their latest versions and puts them in the server in an ordered and discoverable manner for people to easily find them.

Best regards,
Fer

6 Likes

I think having some way to find them from ada-lang is a good idea. I do also think that however we do it, it should be easier to go directly to the slides so a new person doesn’t have to sit there going through folders to find the good stuff.

2 Likes

Yes! The contents would have to be organised in a way that people can quickly find what they want :slight_smile:

And I was thinking just right now… I had in mind to put the PDFs in Ada-Lang and let people read those (they are processed through LaTeX and the quality shows) but… I just came to the realisation that they are written in RST format… which could be somewhat easily transformed to Markdown and then be processed by the build infra (docusaurus) from Ada-Lang… Mmmmm… Maybe we could have our own native pages for them… Mmmm…

3 Likes

Hello Irvise,

I’m a maintainer for this material. First off, thanks for the kind words, we put lots of efforts into this content, so that this shows is very cool :slight_smile:

The material can certainly be turned into md files using pandoc but take care of two things:

  1. we are using custom directives for e.g. quizzes, and as a result we have a pandoc/beamer_filter.py script that converts these into LaTeX (our own target file format).
  2. These are used through beamer for LaTeX, so the content might be formatted into a somewhat wonky markdown format.

You can use and take inspiration from the pandoc/pandoc_fe.py script that is currently our wrapper around pandoc for RST → tex → PDF conversion.

Let me know how that goes, PR are definitely welcome!

3 Likes

Hi and welcome @leogermond!

Thank you for the work put in the content :slight_smile:

Yes, I was thinking about using pandoc to run the translation from RST to MD. I am aware of pandoc’s and each format limitations. I was wondering how you actually managed to get such nicely formatted Beamer slides with just RST, but your explanation demystifies it :smiley:

I think we have to possible paths here…

  1. Write in JS/TS some procedures that will be triggered during the build of the website. These triggers would call pandoc on the RST files from the repo and process them so that Docusaurus can ingest them in a controlled manner.
    • This would be an automatic system. With the drawback of pulling pandoc as a build dependency and requiring a bit of work from our side.
  2. Have your files preprocessed externally, such as a manually run set of steps or a script and pull the results into our repo.
    • This would be less work, not require pandoc for Docusaurus but it would not be as automated as the other system.

I will open a PR in the Ada-Lang repo to track these ideas :slight_smile:

Best regards,
Fer