Developers Italia, involving small software houses in the development of open source products

Small companies and startups are all too often excluded by the digital transformation process of public services. With Developers Italia we made them protagonists of our open source projects

--

Questo articolo è disponibile anche in italiano

Two years ago, we announced the birth of Developers Italia, a community for the developers of digital Italian public services. Now it’s hard to imagine working without Developers Italia: every week there are about 900 active users using the forum and chat channels to compare their work (and about 14,000 unique users reading the forum each week), and many others more regularly consult documents through Docs Italia and use the open source projects hosted on github.com/italia.

We followed the community daily, met with the developers in person, collected feedback from Public Administrations and citizens, and, most importantly, tried to meet the community’s different needs within a single “digital home”, thereby fostering collaboration. Today we can confirm that the need for this had been substantial and that our initial assumptions were correct.

Small companies, to promote digital transformation

The first group of developers came together during Hack.developers, the big hackathon that was held in October 2017. In the weeks that followed, many of these developers also became maintainers of the projects hosted on github.com/italia. From that point on, many Public Administrations began to unite with their suppliers to release more source code.

One of our initial objectives was to involve small businesses and startups, which are all too often left out of the digital public service adjudication process. These are historic times and a large part of the digital innovation process actually takes place through the actions of small organizations, due mostly to the fact that they tend to work with frequently updated technologies, often based on open source frameworks. For example, the web page you are looking at right now (and most, if not all, of the websites you consulted today) is based on libraries, frameworks and other components that started life in service to a small company.

This is why we’ve always believed that drawing from this range of small businesses is necessary to raising the quality of public software. Their efforts are an essential complement to the large companies already working with the Public Administration to fulfill larger contracts.

Public tenders, for contributing to open source projects

Keeping the previous in mind, in 2018 we launched competitive tenders aimed at involving small companies able to provide a new service to the world of Public Administration: contributing to open source projects. This isn’t simply a matter of developing software, but also of activating collaboration mechanisms, which means:

  • documenting appropriately;
  • reacting to the external stimuli of those who interact in real time during development;
  • accepting contributions from third parties;
  • looking for synergies with other open source projects by thinking in terms of complementarity;
  • writing regression tests;
  • preparing Continuous Integration mechanisms;
  • using pull requests to review code together with other developers.

We have launched separate tenders for four programming languages: Javascript, PHP, Python and Ruby. The tenders were held on the MEPA platform, as required by law. We invited many companies to participate, openly selecting them with the help aforementioned technological communities. Many of these companies had never participated in a public tender before. The successful tenders were Apuliasoft (Bari), Simevo (Vercelli), Nephila (Florence) and Cantiere Creativo (Florence), respectively.

After the tenders were awarded, the winning companies and their developers met in Rome for an informal kick-off. Working in open source requires a spirit of community, even when limited to a more formal framework of tenders and suppliers. This is why it was important for everyone to meet each other in person at least once.

At the meeting’s conclusion, our keyboards warm and at the ready, development began.

We asked each company to nominate a contact person to help us with the weekly planning of activities, while we followed the individual projects personally through periodic reviews. Communication between us and the developers took place integrally through public tools (issues on GitHub and through Slack channels), so that everyone could see our interactions and understand the direction of our projects:

the transparency of development activities is essential for attracting external contributions.

We intend to announce new tenders in 2019, so sign up for the newsletter to receive updates!

Now for a quick overview of the projects that the winning companies worked on last year:

SPID

A first, major thread concerns SPID: we’ve created or completed the components for integrating SPID with Ruby on Rails (including a lower-level library for Ruby), Sinatra, and PHP. The Italian public administration will never have to pay development costs for these again.

Next, we created an extremely important tool: the new test environment for SPID. This involves a Python application, easily executable (even locally) via Docker or on its own server. The application simulates an Identity Provider and therefore allows developers to test and validate their implementations, ensuring compatibility with the SPID technical rules. The test environment provides detailed diagnostic errors to help easily understand the corrections that need to be made. It also allows you to test anomalous situations, errors and malformed responses from Identity Providers, thus increasing the security level of implementations made by Service Providers.

And finally, we completed the “smart button,” that is: an evolved version of the “Enter with SPID” button, designed to offer a better user experience and better integration with Service Provider sites.

Docs Italia

Docs Italia is the platform used for publishing technical documents. Features have been created to simplify conversion and publication flow and accessibility, on all devices, has been improved. Finally, the platform’s infrastructure was strengthened through the addition of deployment scripts for testing and production environments and improved log management.

Publiccode

The new reuse model (based on open source, as outlined by the Guidelines), which we’ve been working on in the past few months and which will be ready for launch in the coming weeks, is a model based on a metadata standard of public software called publiccode.yml. We will soon be publishing a more detailed exploration of this topic. We worked with the selected companies to create three fundamental components: a web editor for guided compilation, an onboarding portal for Public Administrations and a tool for automatically reporting errors in publiccode.yml already published on the web.

Agave

We at Team Digital are great supporters of static websites. That is, websites made with systems that generate HTML pages that allow for versioning, greater scalability and better security. To encourage their adoption, we have created an open source software to help manage the contents of a Jekyll static site using a simple web interface. This project is called Agave and is available to the community.

pagoPA

We also created a new open source component for the pagoPA payment system, ready for integration with Ruby.

Design

We created an Angular toolkit that complies with the design guidelines for the public administration’s web services.

Electronic Invoicing

Electronic invoicing has been a hot topic in the Developers Community in recent months. Despite the fact that the Slack channel and the forum section are not official support channels, we thought we might help developers by creating simple tools to serve as a starting point: a PHP library, a sample application and a test interchange system.

--

--

Alessandro Ranellucci
Team per la Trasformazione Digitale

Software engineer, 3D printing pioneer, author of Slic3r.org, speaker. Curator of @MakerFaireRome and open source lead at @teamdigitaleIT & @developersITA