La NSA a publié un support de cours sur Python qu'elle utilise pour former ses ingénieurs

https://python.developpez.com/actu/294008/La-NSA-a-publie-un-support-de-cours-sur-Python-qu-elle-utilise-pour-former-ses-ingenieurs-apres-avoir-recu-une-demande-d-un-ingenieur-logiciel-conformement-a-loi-Freedom-of-Information-Act-de-1966/

Les agences gouvernementales comme la NSA et le FBI sont connues pour garder le secret sur les outils technologiques qu’elles possèdent. Mais il existe une loi dans le pays qui peut peut-être les obliger à rendre publiques des informations sur ces outils. Tout récemment, la NSA a rendu publics ses documents sur Python qu’elle utilise pour former ses ingénieurs. La NSA a publié les documents après que Chris Swenson, un ingénieur logiciel, ait adressé une demande à l’agence conformément à loi FOIA (Freedom of Information Act) de 1966.

Grâce à l’initiative de Swenson, les développeurs ont désormais une nouvelle source d’apprentissage pour le langage Python à part Microsoft et Google. En effet, selon les directives du Freedom of Information Act (FOIA) de 1966, Chris Swenson a pu convaincre l’agence de mettre à disposition du grand public ses supports de formation sur le langage Python. Même si les documents publiés par la NSA sont légèrement expurgés, cela va sans doute servir à la communauté des développeurs Python ou aux personnes qui souhaitent apprendre à coder en Python.

La FOIA est une loi américaine signée en juillet 1966 par le président Lyndon B. Johnson. La fonction fondamentale de la FOIA est de garantir des citoyens informés, ce qui est vital pour le bon fonctionnement d’une société démocratique. La NSA a publié les documents sous le nom Python COMP 3321 et ils forment un support de 400 pages. Selon Swenson, ce support a une taille de 118 Mo. Swenson a scanné les documents et a lancé un OCR sur le texte pour le rendre consultable. Ce dernier a ensuite hébergé la pile sur Digital Oceans Spaces.

« Matériel de cours Python gratuit ! J’ai fait une demande de FOIA à la NSA par rapport à leur matériel de formation Python et j’ai obtenu une impression de 400 pages de leur cours de formation COMP 3321. Je l’ai scannée et j’ai fait un OCR. Voici un PDF de 118 Mo », a fait savoir Swenson sur son compte Twitter. De même, le support de cours a également été téléchargé sur Internet Archive. Selon l’agence, le module pourrait être enseigné à un rythme plus “tranquille”. Par exemple, lors d’un déjeuner hebdomadaire, sur plusieurs mois ou lors d’un atelier de trois jours.

« Si vous ne connaissez encore aucun langage de programmation, Python représente un bon point de départ. Si vous connaissez déjà un autre langage, il est facile de choisir Python à côté. Python n’est pas entièrement exempt de frustration et de confusion, mais il est à espérer que vous pourrez éviter ces parties bien après avoir fait bon usage de Python », écrit la NSA. Selon Swenson, c’est sa curiosité qui l’a amené à faire cette demande à l’agence.

Selon lui, la NSA aurait omis d’autres parties du support. Toutefois, il a déclaré qu’il va continuer à en demander plus à l’agence. « La réponse a été bonne. Je ne peux pas dire que je suis vraiment déçu d’avoir reçu près de 400 pages de support de cours. Cependant, il y a eu quelques documents de cours qu’ils ont retirés dans leur intégralité. Je vais continuer à envoyer d’autres demandes et appels pour savoir si je peux obtenir d’autres documents similaires », a déclaré Swenson. Le scan des documents par d’autres développeurs a révélé des choses plus importantes.

Un développeur Python du nom de Kushal Das a noté quelques points clés sur son blogue. Il a trouvé que la NSA a un index interne de paquets Python, que son instance GitLab est gitlab.coi.nsa.ic.gov, et qu’elle a une galerie Jupyter qui fonctionne sur HTTPS. La NSA propose également des instructions d’installation de git pour CentOS, Red Hat Enterprise Linux, Ubuntu et Windows, mais pas pour Debian. En attendant de savoir si Swenson peut obtenir les parties manquantes, les documents publiés serviront certainement à quelqu’un.