FOSDEM 2019 - Ada Developer Room - Sat 2 Feb 2019 - Brussels

Started by Dirk Craeynest January 10, 2019
-----------------------------------------------------------------------

         Ada-Belgium is pleased to announce the program for its

                 9th Ada Developer Room at FOSDEM 2019
(Ada at the Free and Open source Software Developers' European Meeting)

                      on Saturday 2 February 2019

   Universit� Libre de Bruxelles (ULB), Solbosch Campus, Room AW1.125
     Avenue Franklin D. Roosevelt Laan 50, B-1050 Brussels, Belgium

                Organized in cooperation with Ada-Europe

   www.cs.kuleuven.be/~dirk/ada-belgium/events/19/190202-fosdem.html
                   fosdem.org/2019/schedule/track/ada

-----------------------------------------------------------------------

*** General Information

FOSDEM, the Free and Open source Software Developers' European Meeting,
is a free and non-commercial two-day weekend event organized early
each year in Brussels, Belgium.  It is highly developer-oriented and
brings together 8000+ participants from all over the world.

The goal is to provide open source developers and communities a
place to meet with other developers and projects, to be informed
about the latest developments in the open source world, to attend
interesting talks and presentations on various topics by open source
project leaders and committers, and to promote the development and
the benefits of open source solutions.

The 2019 edition takes place on Saturday 2 and Sunday 3 February.
It is free to attend and no registration is necessary.

In this edition, Ada-Belgium organizes once more a series of
presentations related to the Ada Programming Language and Free or
Open Software in a s.c. Developer Room.  The "Ada DevRoom" at FOSDEM
2019 is held on the first day of the event, Saturday 2 February 2019.

This year FOSDEM has a total of 15 Ada-related presentations by 12
authors from 7 countries!  A mini-poster about the Ada DevRoom [1],
as well as a one-page Call for Participation for the Ada DevRoom [2]
is available; they can be used to help announce the event, and to
give an idea about its scope.

[1] www.cs.kuleuven.be/~dirk/ada-belgium/events/19/190202-fosdem-cfpart-poster.jpg
[2] www.cs.kuleuven.be/~dirk/ada-belgium/events/19/190202-fosdem-cfpart-a4.pdf

*** Ada Programming Language and Technology

Ada is a general-purpose programming language originally designed
for safety- and mission-critical software engineering.  It is used
extensively in air traffic control, rail transportation, aerospace,
nuclear, financial services, medical devices, etc.  It is also
perfectly suited for open source development.

Awareness of safety and security issues in software systems is
increasing.  Multi-core platforms are now abundant.  These are
some of the reasons that the Ada programming language and technology
attracts more and more attention, among others due to Ada's support for
programming by contract and for multi-core targets.  The latest Ada
language definition was updated early 2016.  Work on new features is
ongoing, such as improved support for fine-grained parallelism, and
will result in a new Ada standard scheduled for 2020.  Ada-related
technology such as SPARK provides a solution for the safety and
security aspects stated above.  More and more tools are available,
many are open source, including for small and recent platforms.
Interest in Ada keeps increasing, also in the open source community,
and many exciting projects have been started.

The Ada DevRoom aims to present the facilities offered by the
Ada language (such as for object-oriented, multicore, or embedded
programming) as well as some of the many exciting tools and projects
using Ada.  FOSDEM is an ideal fit for an Ada Developer Room.  On the
one hand, it gives the general open source community an opportunity
to see what is happening in the Ada community and how Ada technology
can help to produce reliable and efficient open source software.
On the other hand, it gives open source Ada projects an opportunity to
present themselves, get feedback and ideas, and attract participants
to their project and collaboration between projects.

*** Ada Developer Room Presentations (room: AW1.125, 76 seats)

The presentations in the Ada DevRoom start after the opening FOSDEM
keynote.  The program runs from 10:30 to 19:00.

10:00-10:30 - Arrival & Informal Discussions

  Feel free to arrive early, to start the day with some informal
  discussions while the set-up of the DevRoom is finished.

10:30-10:35 - Welcome to the Ada DevRoom
              by Dirk Craeynest - Ada-Belgium

  Welcome to the Ada Developer Room at FOSDEM 2019, which is organized
  by Ada-Belgium in cooperation with Ada-Europe.  Ada-Belgium and
  Ada-Europe are non-profit organizations set up to promote the
  use of the Ada programming language and related technology,
  and to disseminate knowledge and experience into academia,
  research and industry in Belgium and Europe, resp.  Ada-Europe has
  member-organizations, such as Ada-Belgium, in various countries,
  and direct members in many other countries.

10:35-11:20 - An Introduction to Ada for Beginning and Experienced
              Programmers - by Jean-Pierre Rosen - Adalog

  An overview of the main features of the Ada language, with special
  emphasis on those features that make it especially attractive for
  free software development.  Ada is a feature-rich language, but what
  really makes Ada stand-out is that the features are nicely integrated
  towards serving the goals of software engineering.  If you prefer
  to spend your time on designing elegant solutions rather than on
  low-level debugging, if you think that software should not fail,
  if you like to build programs from readily available components
  that you can trust, you should really consider Ada!

11:30-11:50 - Sequential Programming in Ada: Lessons Learned
              by Joakim Strandberg - Mequinox

  What's hot right now in the proposal for Ada 2020 is increased
  support of safe parallelism.  However, the support for sequential
  programming in Ada 2012 is absolutely great and probably
  underestimated.  This presentation will demonstrate lessons
  learned from making an Ada binding to the Wayland Client API:
  how to leverage nested subprograms, pragma Unmodified, subpools,
  Gnatcheck and GPS to provide a flexible/enjoyable way of working
  and at the same time maximize compile-time error checking when
  developing sequential algorithms.

12:00-12:50 - Autonomous Train Control Systems: a First Approach
              by Julia Teissl - FH Campus Wien

  Numerous small villages in Austria have lost their connections
  to the railway network because it was no longer cost-effective to
  operate under a regular schedule.  To re-establish these connections,
  FH Campus Wien started the project "autonome, schienengebundene,
  on-Demand, open-Track Systeme" AuSoDoTS (Autonomous rail bound
  on-Demand Open Track systems).  The project's objective is to develop
  a concept for how to safely operate small autonomous trains, without
  a fixed schedule.  Trains are only approaching to stations when
  a passenger explicitly requests them by pressing a button at the
  station or using a mobile app.  A short track from Liesing at the
  edge of Vienna to Kaltenleutgeben, a small town in Lower Austria,
  could be one of the first test locations.

  As a first approach a small model railway has been built.  The model
  has two purposes.  One is to find the optimal placement for passing
  loops where trains can pass each other, since the connection is
  mostly single track.  The other is to test different scheduling
  algorithms for on-Demand service.  To fulfill the strict safety
  aspects of a passenger transportation system, the programming
  language Ada is used and in following versions SPARK will be used
  as it can be formally verified to be correct then.

13:00-13:20 - Controlling the Execution of Parallel Algorithms in Ada
              by Jan Verschelde - University of Illinois at Chicago

  Tasking in Ada provides an effective tool for shared memory
  parallelism.  An "any time" algorithm is an algorithm that, given
  some more resources, will improve the accuracy of an estimate.
  For example, consider the estimation of Pi by a Monte Carlo method.
  With multitasking, the status of the running of an "any time"
  algorithm can be monitored without interrupts.  The programming
  concepts will be illustrated with examples of algorithms in
  polyhedral geometry.  The demonstrated code belongs to the free
  and open source PHCpack.

13:30-13:50 - Persistence with Ada Database Objects
              by Stephane Carrez - Twinlife

  The presentation describes how Ada Database Objects helps in
  connecting to an SQLite/MySQL/PostgreSQL database from Ada.
  It explains how by mapping SQL tables in Ada records, it simplifies
  saving and updating database records and makes the application more
  safe and reliable.  The presentation will briefly describe the Ada
  code generator (Dynamo) that is behind this.

14:00-14:50 - Shrink your Data to (almost) Nothing with Trained
              Compression - by Gautier de Montmollin - Ada-Switzerland

  We will show a new Trained Compression generic plug-in, which can
  leverage prior information about the data to be transmitted for
  reducing further raw compressed streams.  We will also present
  a pick-and-choose technique feature called "Preselection" for
  improving the Zip archiving process.  The Zip-Ada library has met
  over the years the needs of several professional users who need the
  file archiving features, or the data compression features to reduce
  storage and shorten transmission times.  We will show the evolution
  of this full-Ada portable library and the advantages of using it.

15:00-15:20 - GSH: an Ada POSIX Shell to Speed Up GNU Builds on Windows
              by Nicolas Roche - AdaCore

  GSH is an implementation of a POSIX shell developed for the Windows
  platform.  The aim of the project is to speed up builds of GNU
  projects on Windows in a large automated build infrastructures.
  GSH can be used to compile projects depending on autotools, UNIX
  make, ...  It is up to 2-3 times faster than Cygwin shells for
  GCC builds.

  In this talk I will present:
  - what makes GSH faster than other Windows shells for building GNU
    projects;
  - how GSH was developed;
  - how you can use it to speed up your builds;
  - the limitations;
  - what features of Ada we benefit from in this project.

15:30-15:50 - What is Safety-Critical Software, and How Can Ada and
              SPARK Help? - by Jean-Pierre Rosen - Adalog

  We are (too much) used to software having bugs as an unavoidable
  fate.  But for safety-critical software, like the code that's driving
  planes or trains, "Failure is Not an Option".  This presentation
  exposes the constraints of such software, and how they require a
  special state of mind, special methods, and special tools - like Ada
  and SPARK.  And these can be useful for more casual programming -
  zero bug software is nice, even when not safety-critical!

16:00-16:50 - Secure Web Applications with AWA
              by Stephane Carrez - Twinlife

  Web application security is often underestimated, and using a
  secure framework can help reduce application vulnerabilities.
  Ada Web Application (AWA) is a web framework that leverages Ada's
  safety features to provide a secure environment on top of which
  safe applications are built.  AWA is based on several Java-like
  technologies such as Java Beans, Java Servlet, Java Server Faces,
  other standards such as OAuth2, REST and OpenAPI, all implemented
  in Ada.

  This presentation briefly describes the AWA architecture and how
  applications are built with it.  The presentation highlights some
  of the Ada functionalities that contribute to the safety and make
  applications secure and reliable.

17:00-17:20 - Distributed Computing with Ada and CORBA using PolyORB
              by Fr�d�ric Praca - Ada-France

  Imagine you have a fantastic Ada program or library but you want
  more!  You want it to be scalable and used by other developers
  with other languages.  The goal of this presentation is to show you
  the way to achieve it without bending to fashion. :)  As of today,
  we see distributed computing as Web services, mainly RESTful stuff.
  Some technologies exist since years and are working successfully in
  many systems.  One of these is CORBA which allows Object-Oriented
  communication between applications in languages such as Ada or C++.

  In this presentation, the chosen middleware providing CORBA
  infrastructure is PolyORB.  We will use it to make a distributed
  version of an existing piece of software, the Corporate Bullshit
  Generator (CBSG), and create client applications in C++ and Ada.
  This will allow us to put the power of Ada and PolyORB into a
  distributed system.

17:30-17:50 - Cappulada: Smooth Ada Bindings for C++
              by Johannes Kliemann - Componolit

  Writing Ada bindings for C and especially for C++ is a tedious but
  not necessarily sophisticated task.  There are several approaches
  to both C and C++ but many of them lack desired language features,
  generate non-compilable code or are project specific.  With Cappulada
  (a coinage of coupling, CPP and Ada made pronounceable) we try a
  more general approach that aims to support complex language features
  such as templates or inheritance while providing a semantically
  appropriate mapping of object structures and types.  The talk will
  also cover which features can be mapped and what is not feasible
  or possible.

18:00-18:20 - The AZip Archive Manager: a full-Ada Open-Source Portable
              Application - by Gautier de Montmollin - Ada-Switzerland

  If you open the AZip application with a can opener, it will look
  like an Ada programmer's paradise: you'll find Ada on all levels:
  - the AZip user interface (UI framework specific);
  - the AZip abstract application layer (platform-independent);
  - the archive and data compression library (Zip-Ada);
  - the user interface framework (GWindows);
  - the run-time library (GNAT's).
  We will quantify this.

  Portability is matched on three different definitions of the word:
  - platform-independence for the abstracted part and the Zip-Ada
    library - no porting effort at all there;
  - you can easily port the user interface layer since most of the
    job is done in the abstracted part;
  - no installation needed: the version built on GWindows is contained
    in a single executable file and can be run from a USB stick;
    it can be even run in a stealth mode, without writing settings
    to the registry of the host system.

18:30-18:50 - Proof of Pointer Programs with Ownership in SPARK
              by Yannick Moy - AdaCore

  Pointers are a notorious "defect attractor", in particular when
  dynamic memory management is involved.  Ada mitigates these
  issues by having much less need for pointers overall (thanks to
  first-class arrays, parameter modes, generics) and stricter rules
  for pointer manipulations that limit access to dangling memory.
  Still, dynamic memory management in Ada may lead to use-after-free,
  double-free and memory leaks, and dangling memory issues may lead
  to runtime exceptions.

  The SPARK subset of Ada is focused on making it possible to guarantee
  properties of the program statically, in particular the absence of
  programming language errors, with a mostly automatic analysis.  For
  that reason, and because static analysis of pointers is notoriously
  hard to automate, pointers have been forbidden in SPARK until now.
  We are working at AdaCore since 2017 on including pointer support
  in SPARK by restricting the use of pointers in programs so that
  they respect "ownership" constraints, like what is found in Rust.

  In this talk, I will present the current state of the ownership
  rules for pointer support in SPARK, and the current state of the
  implementation in the GNAT compiler and GNATprove prover, as well
  as our roadmap for the future.

18:50-19:00 - Informal Discussions & Closing

  Informal discussion on ideas and proposals for future events.

*** RISC-V Developer Room Presentation (room: AW1.126, 82 seats)

In addition to the above presentations in the Ada DevRoom, there's also
an Ada-related presentation scheduled in the RISC-V Developer Room.

13:30-14:45 - Alternative Languages for Safe and Secure RISC-V
              Programming - by Fabien Chouteau - AdaCore

  In this talk I want to open a window into the wonderful world of
  "alternative" programming languages for RISC-V.  What can you get
  by looking beyond C/C++.  So I will start with a quick introduction
  to the Ada and SPARK languages, the benefits, the hurdles.  I will
  also present an overview of the applications and domains where they
  shine, when failure is not an option.  I will then do a short getting
  started session and provide all the details for you to start RISC-V
  programming with Ada/SPARK on different platforms (QEMU, HiFive1,
  FPGAs with PicoRV32).  At the end of the talk, I will give my view
  of the RISC-V architecture and community from the perspective of
  an alternative languages developer.  I will cover the good points,
  the risks, and provide some ideas on how the RISC-V can keep the
  door open.

*** More information on Ada Developer Room 

Speakers bios, pointers to relevant information, links to corresponding
FOSDEM pages, etc., are available on the Ada-Belgium site at
www.cs.kuleuven.be/~dirk/ada-belgium/events/19/190202-fosdem.html

We invite you to attend some or all of the presentations: they will
be given in English.  Everybody interested can attend FOSDEM 2019;
no registration is necessary.

We hope to see many of you there!

Dirk Craeynest, FOSDEM Ada DevRoom coordinator
Dirk.Craeynest@cs.kuleuven.be (for Ada-Belgium/Ada-Europe/SIGAda/WG9)

(V20190110.5)