bas de page
 

Des routes et des ponts (3 et 4)

Nadia Eghbal
 

Après l'introduction du livre Des routes et des ponts de Nadia Eghbal (si vous avez raté le début...) que le groupe Framalang vous traduit au fil des semaines, voici un aperçu tout simple des composants de base d'un logiciel.

Nos lecteurs les plus au courant n'y trouveront rien qu'ils ne sachent déjà, mais l'intérêt de cette présentation c'est justement qu'elle rend abordables et compréhensibles au grand public des objets techniques qui peuvent s'avérer très complexes à comprendre (... et à maîtriser !). On peut dire que la démarche choisie ici, pragmatique et imagée, ne manque pas de pédagogie.

Merci à nos lecteurs soucieux des valeurs du libre de noter que l'auteur n'introduit les notions que progressivement : c'est seulement dans quelques chapitres qu'elle établira clairement une distinction claire qui nous est chère.

De quoi sont faits les logiciels

   Tous les sites web ou les applications mobiles que nous utilisons, même les plus simples, sont constitués de multiples composants plus petits, tout comme un immeuble est fait de briques et de ciment.

   Imaginez par exemple que vous désiriez poster une photo sur Facebook. Vous ouvrez votre appli mobile Facebook, ce qui déclenche le logiciel de Facebook pour vous afficher votre fil d'actualités.

   Vous téléchargez une photo depuis votre téléphone, ajoutez un commentaire, puis vous cliquez sur « Envoyer ». Une autre partie du logiciel de Facebook, en charge du stockage des données, se souvient de votre identité et poste la photo sur votre profil. Finalement, une troisième partie de ce logiciel prend le message que vous avez saisi sur votre téléphone et le montre à tous vos amis à travers le monde.

   Bien que ces opérations aient lieu sur Facebook, en réalité, ce n'est pas Facebook qui a développé toutes les briques nécessaires pour vous permettre de publier sur son application. Ses développeurs ont plutôt utilisé du code libre, public, mis à disposition de tous sur Internet par des bénévoles. Facebook ne publie pas la liste des projets qu'ils utilisent, mais une de ses filiales, Instagram, le fait et remercie certains de ces projets sur sa page d'accueil [1] et dans son application mobile

   Utiliser du code public est plus efficace pour des entreprises comme Facebook ou Instagram que de développer à nouveau tous les composants par elles-mêmes. Développer un logiciel est comparable à la construction d'un immeuble. Une entreprise du bâtiment ne produit pas ses marteaux et ses perceuses, et n'ira pas non plus chercher du bois pour découper les troncs en planches.

   Elle préférera les acheter à un fournisseur et se fournir en bois auprès d'une scierie pour finir le travail plus rapidement.

   Grâce aux licences permissives, les sociétés telles que Facebook ou Instagram ne sont pas obligées de payer pour ce code, mais sont libres d'en profiter grassement. Ce n'est pas différent d'une entreprise de transport (Instagram) qui utilise les infrastructures routières publiques (code public) pour acheminer ses produits à des fins commerciales (application Instagram).

   Mike Krieger, un des cofondateurs d'Instagram, a insisté sur ce point en 2013 et encouragé d'autres entrepreneurs à :

emprunter plutôt que construire à chaque fois que c'est possible. Il existe des centaines d'excellents outils qui peuvent vous faire gagner du temps et vous permettre de véritablement vous concentrer sur le développement de votre produit. (source) [2].

   Voici quelques-uns des outils utilisés par une entreprise de logiciels :

Frameworks (environnements de développement)

Les framewoks offrent une base, une sorte d'échafaudage, une structure. Imaginez cela comme un schéma pour toute une application. Comme un plan, un framework définit la manière dont l'application se comportera sur mobile, ou comment ses données seront sauvegardées dans une base de données. Par exemple Rails et Django sont des frameworks.


Ruby on Rails,
RefineryCMS & Heroku,
image par Erin Khoo
(CC-BY 2.0).

Langages

Les langages de programmation constituent l'épine dorsale de la communication des logiciels, comme la langue anglaise (NdT : aux USA bien sûr) qu'emploient les ouvriers du bâtiment sur un chantier pour se comprendre. Les langages de programmation permettent aux divers composants du logiciel d'agir et de communiquer entre eux. Si par exemple vous créez un compte sur un site internet et que vous cliquez sur « S'enregistrer », cette application peut utiliser des langages comme le JavaScript ou le Ruby pour sauvegarder vos informations dans une base de données.

Parmi les langages de programmation les plus populaires on peut mentionner le Python, le JavaScript et le C.

Bibliothèques

Les bibliothèques sont des fonctions pré-fabriqués qui accélèrent l'écriture du code d'un logiciel, tout comme une entreprise du bâtiment achète des fenêtres préfabriquées au lieu de les assembler à partir des composants de base. Par exemple, au lieu de développer leur propre système d'identification pour les utilisateurs de leur application, les développeurs et développeuses peuvent utiliser une bibliothèque appelée OAuth. Au lieu d'écrire leur propre code pour visualiser des données sur une page web, ils ou elles peuvent utiliser une bibliothèque appelée d3.

Bases de données

Les bases de données stockent des informations (profils d'utilisateurs, adresses électroniques ou codes de cartes bancaires par exemple) qui peuvent être utilisées par l'application. À chaque fois qu'une application a besoin de se souvenir d'une information qui vous concerne, l'application la stocke dans la base de données. Parmi les systèmes de gestion de bases de données (SGBD) les plus populaires on trouve notamment MySQL et PostgreSQL.


Database par gnizr
(CC BY 2.0).

Serveurs web et d'applications

Ces serveurs gèrent certaines requêtes envoyées par les utilisateurs sur Internet : on peut les voir comme des centrales téléphoniques qui répartissent les appels. Par exemple, si vous saisissez une URL dans la barre d'adresse de votre navigateur, un serveur web vous répondra en vous envoyant la page concernée. Si vous envoyez un message à un ami sur Facebook, le message sera d'abord envoyé à un serveur d'applications qui déterminera qui vous essayez de contacter puis transmettra votre message au compte de votre ami.

Parmi les serveurs web très répandus, citons Apache et Nginx.

   Certains de ces outils, comme les serveurs et les bases de données, sont coûteux, surtout à l'échelle d'une entreprise, ce qui les rend plus faciles à monétiser. Par exemple, Heroku, une plate-forme sur le cloud (sur un serveur distant) qui fournit des solutions d'hébergement et de bases de données, propose une offre de base gratuite, mais il faut payer pour avoir accès à plus de données ou de bande passante. De grands sites reposent sur Heroku comme ceux de Toyota ou de Macy, et l'entreprise a été rachetée en 2010 [3] par Salesforce.com pour 212 millions de dollars.

   Il est plus difficile de faire payer d'autres types d'outils de développement, tel que les frameworks, de nombreuses bibliothèques et langages de programmation, qui sont souvent créés et maintenus par des bénévoles.

   Ce type d'outils ressemble plus à des ressources qu'à des services qui peuvent être activés ou désactivés : les rendre payants limiterait fortement leur adoption. C'est pourquoi n'importe qui, que ce soit une entreprise milliardaire ou un adolescent apprenti développeur, peut utiliser gratuitement ces composants pour créer ses propres logiciels.

   Par exemple, selon la page d'accueil d'Instagram, l'une des bibliothèques utilisées par l'entreprise est Appirater. Il s'agit d'une bibliothèque qui facilite les fonctions de rappels automatiques pour l'évaluation d'une application, à destination des utilisateurs d'iPhone. Elle a été créée en 2009 par Arash Payan, un développeur indépendant basé à Los Angeles. Le projet n'apporte aucun revenu à Payan.

   C'est comme si des scieries, des centrales à béton et des magasins de matériel donnaient leurs matériaux de base à une entreprise du bâtiment, puis continuaient à approvisionner cette entreprise.

La gratuité pour changer le monde

Avec le logiciel libre, la production de logiciel est plus simple et considérablement moins chère

   Uber, un service de transport de personne, a annoncé récemment que des développeurs avaient créé un système permettant de réserver une voiture en utilisant Slack (une application de développement collaboratif) et non l'application mobile Uber. Le projet a été bouclé en 48 heures par une équipe de la App Academy, une école de programmation.

   Uber a constaté que l'équipe avait été capable d'achever le projet rapidement car elle « avait utilisé des bibliothèques ouvertes telles que rails, geocoder et unicorn pour accélérer le développement tout en travaillant sur une base solide. »

   En d'autres termes, la quantité de code que l'équipe a dû écrire par elle-même a été fortement réduite car elle a pu utiliser des bibliothèques libres créées par d'autres.

   Ruby Geocoder, par exemple, est une bibliothèque réalisée en 2010 et maintenue par Alex Reisner, un développeur indépendant. Geocoder permet à une application de chercher facilement des noms de rues et des coordonnées géographiques.

   Unicorn est un serveur datant de 2009, il est administré par une équipe de sept contributeurs (leurs noms sont visibles sur le site web d'Unicorn) encadrés par Éric Wong, un développeur.

   Créer un nouveau logiciel n'a jamais été aussi simple, car il existe de plus en plus de portions de code « prêtes à l'emploi » dont on peut se servir. Pour en revenir à la métaphore de l'entreprise de bâtiment, il n'est plus nécessaire pour construire un immeuble de fabriquer soi-même tout ce dont on a besoin, il est plus simple d'acheter du « préfabriqué » et d'assembler fondation, structure porteuse et murs comme des Legos.

   Du coup, il n'est plus nécessaire de savoir comment construire un logiciel à partir de zéro pour être qualifié de développeur. le service des statistiques sur le travail des USA (Bureau of Labor Statistics) estime que l'emploi des développeurs va augmenter de 22 % entre 2012 et 2022, soit bien plus rapidement que la moyenne dans les autres professions.

Le logiciel libre est directement responsable de la renaissance actuelle des startups

   Les coûts de lancement d'une entreprise ont énormément baissé depuis la première bulle internet de la fin des années 90. Le capital-risqueur et ex-entrepreneur Mark Suster évoquait son expérience dans un billet de blog de 2011 [4] :

« Quand j'ai monté ma première entreprise, en 1999, l'infrastructure coûtait 2,5 millions de dollars, simplement pour commencer, et il fallait y ajouter 2,5 millions de dollars de plus pour payer l'équipe chargée de coder, lancer, gérer, démarcher et vendre notre logiciel. [...]

Nous avons à peine perçu le premier changement d'ampleur dans notre industrie. Il a été porté par l'introduction du logiciel libre et plus précisément par ce que l'on a appelé la pile LAMP. Linux (au lieu de UNIX), Apache (un logiciel de serveur web), MySQL (à la place d'Oracle) et PHP. Il y a bien sûr eu des variantes – nous préférions PostgreSQL à MySQL et beaucoup de gens utilisaient d'autres langages de programmation que PHP.

Le libre est devenu un mouvement, un état d'esprit. Soudain, les logiciels d'infrastructure étaient presque gratuits. Nous avons payé 10 % du tarif normal pour l'achat des logiciels et le reste de l'argent est allé dans le support. Un tel effondrement de 90 % des coûts engendre de l'innovation, croyez-moi. »

   La disponibilité actuelle des composants logiciels libres et gratuits (associée à des services d'hébergement moins chers comme Amazon Web Services et Heroku) permet à une startup technologique de se lancer sans avoir besoin de millions de dollars. Les entrepreneurs peuvent tout à fait sortir un produit et trouver un marché sans dépenser un seul dollar, la levée de fonds auprès de capital-risqueurs se faisant seulement après avoir montré la viabilité de leur projet.

   Alan Schaaf, qui a fondé Imgur, un site populaire de partage d'images faisant partie des 50 sites les plus consultés au monde, a justement déclaré que les sept dollars nécessaires à l'achat du nom de domaine représentaient la seule dépense indispensable au démarrage de son entreprise. Imgur était rentable et avant de lever 40 millions de dollars en 2014 auprès de l'entreprise de capital-risque Andreessen Horowitz, Schaaf n'a eu recours à aucun fond extérieur pendant 5 ans [5].

   Les capital-risqueurs ainsi que les autres acteurs de l'investissement ont, à leur tour, commencé à investir des montants moindres, développant ainsi de nouvelles formes de fond d'investissement dont voici trois exemples.

Fonds spécialisés dans le capital d'amorçage : sociétés de capital-risque préférant financer la première levée de fond, plutôt que de participer à une augmentation de capital ultérieure.

Fonds de micro capital-risque : une définition assez large sous laquelle on regroupe les sociétés de capital-risque disposant de moins de 50 millions de dollars d'actifs.

Accélérateurs de startup : des sociétés qui financent de petites sommes, souvent inférieures à 50 000 dollars, et qui également conseille et parraine les toutes jeunes entreprises.

   Aujourd'hui, avec 10 millions de dollars, on peut financer cent entreprises contre seulement une ou deux dans les années 90.

Le logiciel libre a simplifié l'apprentissage de la programmation, rendant la technologie accessible à tous, partout dans le monde

   Si aujourd'hui vous voulez apprendre à coder chez vous, vous pouvez commencer par étudier Ruby on Rails. Rails est le nom d'un framework et Ruby est un langage de programmation. N'importe qui disposant d'un accès internet peut installer gratuitement ces outils sur n'importe quel ordinateur. Parce qu'ils sont libres et gratuits, ils sont également très populaires, ce qui signifie qu'il existe énormément d'informations en ligne permettant de bien démarrer, du simple tutoriel au forum d'aide. Cela montre qu'apprendre comment coder est aussi accessible que d'apprendre à lire et écrire l'anglais ou le français.

   Pour comparer, l'utilisation de frameworks et de langages non open source impliquaient : de payer pour y avoir accès, d'utiliser un système d'exploitation et des logiciels spécifiques, et d'accepter des contraintes de licence susceptibles d'entraver le dépôt d'un brevet pour un logiciel construit sur la base de ce framework. Aujourd'hui il est difficile de trouver des exemples de frameworks qui ne sont pas publics. L'un des plus célèbres exemples de framework propriétaire est le .NET, développé et sorti en 2002. En 2014, Microsoft a annoncé la sortie d'une version publique de .NET, appelée .NET Core.

   Audrey Eschright [6], une développeuse, a décrit comment les logiciels open source l'ont aidée à apprendre la programmation à la fin des années 90.

« Je voulais apprendre à programmer mais je n'avais pas d'argent. Pas la version "étudiante fauchée" : ma famille était pauvre mais également dans une situation chaotique.... Cela peut sembler étrange aujourd'hui, mais à l'époque il y avait en fait deux options pour quelqu'un qui voulait écrire de véritables logiciels : on pouvait utiliser un ordinateur avec Windows et payer pour les coûteux outils de développement de Microsoft, ou on pouvait avoir accès a un système Unix et utiliser [le compilateur] gcc... Mon but devint donc d'avoir accès à des systèmes Unix pour pouvoir apprendre à programmer et faire des trucs sympas. »

   Jeff Atwood [7], un développeur .NET de longue date, a expliqué sa décision d'utiliser Ruby pour un nouveau projet, Discourse, en 2013 :

« Quand on habite en Argentine, au Népal ou en Bulgarie par exemple, il est vraiment très difficile de démarrer en programmation avec les outils fournis par Microsoft. Les systèmes d'exploitation, les langages et les outils open source permettent de mettre tout le monde au même niveau, ils constituent le socle sur lequel travaillera, partout dans le monde, la prochaine génération de programmeurs, celle qui nous aidera à changer le monde. »

   Le nombre de startups a explosé et dans leur sillage sont apparues de nombreuses initiatives pour enseigner la programmation aux gens : aux enfants et aux adolescents, mais aussi aux membres de communautés défavorisées, aux femmes ou aux personnes en reconversion professionnelle. Parmi ces initiatives on retrouve Women Who Code, Django Girls, Black Girls Code, One Month et Dev Bootcamp.

   Certaines de ces organisations offrent leurs services gratuitement, tandis que d'autres les font payer. Toutes se reposent sur des logiciels libres et gratuits dans leur enseignement. Par exemple, Django Girls [8] a appris à coder à plus de 2 000 femmes dans 49 pays. Bien que l'organisation n'ait pas développé Django elle-même, elle a le droit d'utiliser Django, que les étudiantes téléchargent et utilisent gratuitement dans leur programme d'apprentissage.


Django Girls hackathon à Rome – Photo Django Girls CC-BY-2.0.

   Dev Bootcamp apprend à programmer aux personnes qui veulent changer de carrière, et prépare n'importe qui, du professeur d'anglais au vétéran, à devenir développeur professionnel. Le programme coûte entre 12 et 14 000 dollars. Dev Bootcamp enseigne entre autres Ruby [9], JavaScript, Ruby on Rails et SQL. Les étudiants peuvent télécharger et utiliser tous ces outils gratuitement, et Dev Bootcamp n'a pas besoin de payer pour les utiliser. Dev Bootcamp a été acheté par Kaplan en 2014 pour un prix inconnu.

   Si des logiciels aussi importants n'étaient pas gratuits, beaucoup de gens seraient dans l'incapacité de participer à la renaissance technologique actuelle. Il existe encore de nombreux obstacles économiques et sociaux qui empêchent qu'ils soient encore plus nombreux à participer, comme le prix du matériel nécessaire pour avoir un ordinateur portable et une connexion Internet, mais les outils de programmation eux-mêmes ne coûtent rien.

Nadia Eghbal

Paru sur Framblog les 26 septembre et 10 octobre 2016.
https://framablog.org/2016/09/26/des-routes-et-des-ponts-3-de-quoi-est-fait-un-logiciel/
https://framablog.org/2016/10/10/des-routes-et-des-ponts-4-la-gratuite-pour-changer-le-monde/

Cet article est sous licence Creative Commons (selon la juridiction française = Paternité - Pas de Modification). http://creativecommons.org/licenses/by-nd/2.0/fr/

NOTES

[1] https://instagram.com/about/legal/libraries

[2] https://instagram.com/about/legal/libraries

[3] http://techcrunch.com/2010/12/08/breaking-salesforce-buys-heroku-for-212-million-in-cash/

[4] http://www.bothsidesofthetable.com/2011/06/28/understanding-changes-in-the-software-venture-capital-industries/

[5] http://articles.latimes.com/2014/apr/03/business/la-fi-tn-imgur-40-million-funding-20140402

[6] http://lifeofaudrey.com/essays/love_and_money.html

[7] https://blog.codinghorror.com/why-ruby/

[8] https://djangogirls.org/

[9] https://www.ruby-lang.org/fr/

haut de page
Association EPI
Janvier 2017

Accueil Linux et Logiciels libres Articles