Au programme cette semaine le shitstorm autour de Hacktoberfest, le lancement de trois nouvelles fonctionnalités de sécurité et de contrôle d’accès pour S3 et enfin la gestion des montants en devises en Go.

Le couac du Hacktoberfest

Une fois n’est pas coutume, je commence cet article avec la news qui ne concerne ni AWS ni Go. Je te parlais la semaine dernière de l’événement Hacktoberfest. Il se trouve que DigitalOcean, l’organisateur, s’est retrouvé au beau milieu d’un véritable shitstorm.

J’ai commencé à en entendre parler jeudi, en lisant cet article. L’auteur est mainteneur de plusieurs repo sur GitHub. Passablement énervé, il accuse Hacktoberfest d’être une attaque de déni de service distribué contre la communauté open source. Rien que ça ! En cause une avalanche de PRs de mauvaise qualité, pouvant être qualifiées de spam.

Quelques jours plus tard, j’ai découvert un autre article qui explique la chronologie des événements. Le flot de PR spam semble avoir pour origine une vidéo de Youtube. L’auteur de cette vidéo a plus de 600 mille abonnés. Dans la dite vidéo, il démontre à quel point il est facile de faire une PR sur un repo open source. Son erreur a été de faire une PR triviale dans cette vidéo, mettant ainsi la barre très bas pour son audience qui a ensuite copié exactement ce qu’il a fait.

Ce qui intéressant c’est la façon dont GitHub et DigitalOcean ont réagis. Dès le premier octobre, GitHub a déployé une fonctionnalité permettant de contrôler les personnes qui interagissent avec les repos publics. Des limites d’interaction temporaires peuvent ainsi être mise en place pour 24 heures, 3 jours, 1 semaine, 1 mois ou 6 mois. Je trouve que la rapidité avec laquelle cette fonctionnalité a été déployée en dit long sur l’agilité des équipes GitHub ! De leur côté Hacktoberfest et DigitalOcean ont revus les règles de prise en compte des pulls request. Seuls les projets participant explicitement à l’événement seront comptabilisés. J’espère maintenant que les choses vont se calmer et que l’événement va pouvoir se dérouler plus sereinement. Car je pense qu’il est bénéfique pour la communauté open-source et permettant à des novices de franchir le pas et de commencer à contribuer.

Du nouveau pour S3

Du côté de AWS la news la plus marquante est pour moi le lancement de trois nouvelles fonctionnalités de sécurité et de contrôle d’accès pour S3.
Tous les détails sont disponibles sur le blog de AWS.

Ces trois fonctionnalités sont conçues pour donner plus de contrôle et plus de souplesse dans la gestion de la sécurité des buckets :

Object Ownership
On peut désormais s’assurer que les objets nouvellement créés dans un bucket ont le même propriétaire que celui-ci.

Bucket Owner Condition
On peut désormais vérifier la propriété d’un bucket lorsque l’on y ajoute un nouvel objet.

Copy API via Access Points
On peut désormais accéder à la copie de l’API de S3 via un point d’accès.

La gestion des montants en devises en Go

La chose la plus passionnante que j’ai lue cette semaine est l’article publié par Bojan Zivanovic. Bojan est le concepteur du module currency, qui permet de gérer des montants en devises, fournir des informations sur les devises et les mettre en forme.

Le module ayant gagné en popularité Bojan s’est dit que c’était le bon moment pour expliquer les concepts et réflexions qui l’ont amené à construire ce projet. En mars dernier, il a commencé à utiliser Go pour quelques side projects, et il a rencontré le besoin de représenter et de gérer des montants en devises. Après quelques recherches, il a réalisé qu’il manquait une solution complète à l’écosystème Go.

L’article est vraiment bien fait. On y aborde le fait qu’en tant que de développeur on découvre très tôt qu’il ne faut jamais utiliser de nombres à virgule flottante, car ils sont imprécis, et à mesure que les montants sont multipliés, divisés, arrondis et additionnés, ces imprécisions s’additionnent, devenant rapidement de véritables problèmes. Il explique aussi la problématique liée à la localisation et comment il a utilisé une denylist pour exclure par exemple l’affichage en esperanto.

Il conclut son article en expliquant qu’il a réussi à concevoir un module Go relativement petit (~2500 lignes de code, ~30kb de données) et qu’il espère voir dans le futur un type de données pour les nombres décimaux inclus nativement dans Go (comme BigDecimal en Java).


Si tu es arrivé jusqu’ici, merci beaucoup d’avoir lu cet article !
Photo de couverture par Roman Kraft.