Sprints

The list and schedules of the sprints are defined. For the latest organizational details, consult the people at the front desk or the nearby signage.

Traduction de la doc’ de Python en Français

By Julien Palard - Thursday and Friday, from 10:00 AM to 6:00 PM

Le but du sprint est d'avancer sur la traduction de https://docs.python.org/fr/.

Que vous soyez contributeur depuis longtemps ou que vous n'ayez jamais touché ni à git ni à un fichier po vous serez les bienvenus : contribuer à la traduction est un bon moyen de se familiariser avec le processus de contribution, sans risquer de casser de la prod !

Sprint sur le projet « Witness Angel »

By Pascal Chambon - Thursday and Friday, from 10:00 AM to 6:00 PM

Notre petit laboratoire citoyen s'est donné pour but de venir en aide aux victimes de violence (harcèlement moral ou sexuel, agression, maltraitance...) dans leur quête de justice ; tout en respectant la vie privée de tous.

Nous développons donc des "anges témoins", dispositifs d'enregistrement qui fonctionnent comme des "boites noires" d'avion, en empêchant leurs utilisateurs d'accéder aux données enregistrées sans passer par une procédure juridique bien encadrée.

Nous avons déjà obtenu un système cryptographique flexible(Flightbox), et de premiers prototypes sur Raspberry Pi.

Ce sprint sera l'occasion de faire prendre en main notre écosystème software/hardware, d'ajouter de petites fonctionnalités et bugfixes (une interface en ligne de commande pour la cryptographie par exemple), et de jouer avec les multiples possibilités de systèmes embarqués python/C.

On a une BD désormais : https://witnessangel.com/fr/bande-dessinee-explicative/ Et une vidéo manifeste aussi : https://www.youtube.com/watch?v=qwJ1uoUNoKo

Complete the work on Modoboa v2

By Antoine Nguyen - Thursday and Friday, from 10:00 AM to 6:00 PM

First version of the new UI has been released with v2 but is far from complete. Let's spend some time together in order to make it better and maybe find a way to deal with plugins!

Améliorer l'algorithme de détection de proximité de polygone pour l'étude du potentiel géothermique individuel (transition EnR)

By Aurélien Péré - Thursday and Friday, from 10:00 AM to 6:00 PM

Il s'agit d'une proposition orientée data-science/Sig (bibliotheque pandas, scipy) La géothermie est le parent pauvre des enr. Il s'agit pourtant de l'énergie renouvelable pour laquelle on a une ressource infinie ne dépendant pas du "peak all". J'ai développé un algorithme de détection des logements équipables en géothermie individuelle avec une hypothèse relativement simple: tout polygone de couvert végétal (source OCS GE) à proximité (3 fois le rayon du cercle de surface équivalente au logement) d'un polygone de logement (source OpenStreetmap) et d'une surface égale à la surface du polygone de logement rend le logement équipable en géothermie individuelle. L'algorithme renvoie une valeur positive pour un polygone donné si deux points d'un polygone à proximité sont à une distance inferieure au rayon défini précedemment mais on a encore de nombreux faux négatifs. Ca serait cool de le peer-tester et de l'améliorer pour mieux détecter les polygones de couvert végétal à proximité des logements et redonner de la visibilité à cette energie renouvelable oubliée qu'est la géothermie. Pour améliorer l'algorithme, il s'agit grosso modo d'un probleme de topologie mathématique pour calculer la surface d'intersection entre un polygone avec des points de coordonnées x1,...,xn et un polygone avec des points de coordonnées y1,...,yn. A noter que la bibliotheque scipy.spatial integre des algorithmes utilisables pour cette amélioration de code. A noter aussi que la vitesse d'exécution est un paramètre important: pour un département comme la haute-garonne qui comprend 1 millions d'enregistrements, l'algorithme met environ 2 jours pour tout calculer.

Amélioration de ReservoirPy, un outil simple de Reservoir Computing

By Nathan Trouvain, Xavier Hinaut, Deepayan Das - Thursday and Friday, from 10:00 AM to 6:00 PM

Le Reservoir Computing (RC) regroupe un ensemble de méthodes d’apprentissage artificiel (machine learning) pour les réseaux de neurones artificiels récurrents. Ici, pas de machine learning complexe, seulement des méthodes mathématiques et statistiques simples; mises en oeuvres correctement, elles permettent par exemple de concevoir des outils de reconnaissance automatique de son, de prédiction de mouvement, ou d’interprétation du langage.

reservoirpy est un outil Python conçu pour faire du RC rapidement et simplement. Il est développé pour s’intégrer le plus possible à l’écosystème scientifique Python, en utilisant uniquement numpy et scipy, ses outils de base, et en se fondant à l’univers de scikit-learn, la librairie de machine learning Python standard.

Au cours de ce sprint, nous — Xavier Hinaut, chargé de recherche, Nathan Trouvain, doctorant, et Deepayan Das, ingénieur, tous trois dans l’équipe Mnemosyne de l’Inria et principaux développeurs de reservoirpy — vous proposons de prendre en main cet outil pour tenter de l’améliorer. Ce sprint sera l’occasion pour les participants de pratiquer leur Python au sein d’un projet logiciel scientifique tout en (re)découvrant et (re)pratiquant un peu de machine learning en Python.

Vous aurez l’occasion de participer au projet à plusieurs niveaux. Certains sont très accessibles, même à des débutants en Python ou en machine learning !

  1. Refactoriser, documenter, expliquer

    • Amélioration de la documentation (Sphinx, ReStructuredText);
    • Vérification de la cohérence de la documentation vis à vis du code;
    • Ecriture d’exemples ou de tutoriels (notebooks Jupyter, matplolib);
    • Nettoyage du code, refactorisation, amélioration de la structure du projet.
  2. Améliorer, tester, déployer

    • Corrections de l’affichage des barres de progression (tqdm);
    • Réfléchir et tester l’intégration de scikit-learn au projet, uniformiser l’API pour se conformer aux standards de scikit-learn;
    • Amélioration du taux de couverture des tests (pytest, Coverage);
    • Création de tests d’intégration multi-plateforme (Docker, GitHub Actions)
    • Déployer la librairie pour conda;
    • Remonter/corriger des bugs.
  3. Augmenter

    • Intégrer de nouvelles méthodes de RC à reservoirpy en se basant sur la littérature ou sur des implémentations faites avec d’autres langages/outils;
    • Tester ces méthodes sur des données;
    • Documenter ces méthodes et écrire des tutoriels/exemples.

Prérequis:

Ce sprint est ouvert à tous les niveaux, débutants comme experts !

  • Avoir un environnement Python 3.8 installé sur son ordinateur.
  • Avoir installé Git sur son ordinateur, si ce n’est pas déjà le cas.
  • Disposer d’un compte sur GitHub.

Recommandé: - Créer un fork de reservoirpy (https://github.com/reservoirpy/reservoirpy). Ce fork servira à collaborer depuis le code hébergé sur GitHub. - Connaître les bases de l’utilisation de Git et GiHub (Ressources pédagogiques Git et GitHub - Documentation GitHub). - Connaître NumPy. - Lire les tutoriels et exemples pour se familariser avec le RC et reservoirpy (reservoirpy/tutorials at master · reservoirpy/reservoirpy · GitHub reservoirpy/examples at master · reservoirpy/reservoirpy · GitHub)

Quelques connaissances en machine learning peuvent être un plus, mais rien de nécessaire pour la plupart des développements proposés. Ce sprint pourra justement être l’occasion de s’initier un peu à ce domaine des sciences, ou d’élargir ses horizons en découvrant le Reservoir Computing.

Nous serons ravis de vous guider dans la découverte de notre domaine, et sans aucun doute nous apprendrons également beaucoup de vous !

Developing community plugins for Argilla: an open-source platform for data-centric NLP

By David Berenstein, Keith - Thursday and Friday, from 10:00 AM to 6:00 PM

The design of Argilla is intentionally programmable (i.e., developers can build complex workflows for reading and updating datasets). However, there are certain workflows and features which are shared across different use cases and could be simplified from a developer experience perspective. In order to facilitate the reuse of key workflows and empower the community, Argilla Plugins provides a collection of extensions to power your Argilla use cases.

We would love to work together with the PyCon community during a coding sprint on open-source development by introducing these reusable plugins. We decided to focus them on the following topics: Reporting, Datasets, Programmatic Labelling, Active Learning, and Inference endpoints. The actual issues can be found here: https://github.com/argilla-io/argilla-plugins. While most of them are short and snappy, creativity can come a long way and you might come up with some cool additions to the existing issue, or create completely new ideas for plugins.

We will be working in groups or as individuals on the different issues that have been defined, while our core team walks around for questions and help with the issues and general open-source contribution workflow.

A nice bonus is that we will donate 3 bunds to JustDiggit for each closed PR. https://www.argilla.io/blog/introducing-argilla-community-growers

Improve tests for Zou/Kitsu API (Flask)

By Nicolas Ledez - Thursday and Friday, from 10:00 AM to 6:00 PM

CGWire développe Kitsu, un logiciel libre et open-source de gestion de projets pour studios d'animation 2D/3D. Le backend est écrit en Python / Flask. Vous pouvez le trouver ici : https://github.com/cgwire/zou Nous souhaiterions y apporter des améliorations. Nos tests prennent 25 minutes, fois 3 (3.6, 3.8 et 3.9) dans notre CI cela nous prend 1h15 pour chaque push. Nous souhaiterions donc via ce sprint profiter de l'expérience de testeurs chevronnés. Et/ou alors prototyper différentes solutions.

Sardine : improvisation musicale avec Python 3.10+

By Raphaël Forment - Thursday and Friday, from 10:00 AM to 6:00 PM

Sardine (https://sardine.raphaelforment.fr) est un nouvel environnement de live-coding musical pour Python 3.10+. Il permet de contrôler et d'interconnecter des instruments électroniques (virtuels ou physiques) afin d'improviser de la musique en temps réel. Un langage spécialisé dans la description des patterns musicaux algorithmiques permet de créer des séquences dynamiques qu'il est possible de réévaluer on-the-fly au cours de la performance.

Sardine est aussi un environnement généraliste permettant d'exécuter du code Python avec des garanties temporelles strictes. Il permet de faire tourner fonctions et instructions sur un rythme défini par l'utilisateur tout en lui permettant de mettre à jour son code à tout moment au cours de l'exécution. Modulaire et extensible, Sardine est conçu pour s'interfacer facilement avec le reste de l'écosystème de librairies Python. Le logiciel est pensé comme une boite à outils modulaire dont chacun peut se saisir pour préparer une performance ou une installation artistique.

Développé depuis l'été 2022, Sardine est aujourd'hui utilisé sur scène ou dans des jams par des musiciens spécialisés dans le live-coding. Le développement se poursuit et nous cherchons aujourd'hui à explorer des pistes pour de nouveaux DSLs pour l'improvisation musicale, de nouvelles cibles de contrôle (DMX, etc..) ou pour améliorer les mécanismes déjà existants. Toute idée est la bienvenue et sera étudiée !

Développements de correctifs et tests des modules Ansible

By Michaël Scherer, Pierre-Louis Bonicolli - Thursday and Friday, from 10:00 AM to 6:00 PM

Ansible est un outil libre de configuration et d'orchestration écrit en Python.

Au cours de cet atelier de codage participatif, nous - (@pilou-) et (@mscherer) - vous proposons de contribuer à Ansible et plus particulièrement aux modules Ansible existants:

  • corrections de bug existants
  • reviews de pull-requests existantes
  • nettoyage de code, par exemple:
  • suppression des exceptions listées dans 'ansible/test/sanity/*/ignore.txt'
  • vérifications module par module que la documentation et le module sont cohérents
  • correction des tests instables
  • ajout de tests unitaires (tox/mock) et d'intégration (docker/lxc)
  • amélioration de la documentation

Ce sprint sera l'occasion pour vous:

  • d'échanger à propos du fonctionnement d'Ansible
  • de corriger des bugs éventuellement rencontrés
  • de contribuer à un logiciel libre utilisant Git et GitHub

Prérequis et configuration nécessaire

Les personnes débutant avec Python et Ansible sont les bienvenues.

Pour participer, sont requis:

  • un compte GitHub
  • un ordinateur portable supportant l'environnement de développement suivant et permettant de lancer Ansible:
  • Python (3.5+)
  • une installation Git fonctionnelle
  • un système d'exploitation Linux, *BSD ou Mac. Le nœud de contrôle Ansible ne peut pas être sous Windows, mais une version récente de WSL fonctionne, ainsi qu'une machine virtuelle Linux.

Nous vous accompagnerons si nécessaire dans la mise en place de cet environnement de développement (si votre système d'exploitation n'est pas Windows).

Il est recommandé:

  • d'avoir forké le projet GitHub Ansible
  • d'avoir parcouru le guide utilisateur (https://docs.ansible.com/ansible/devel/user_guide/index.html), plus particulièrement les sections "Ansible Quickstart Guide", "Getting Started", "Introduction To Ad-Hoc Commands", "Working with Inventory" et "Working With Playbooks".
  • d'avoir parcouru le guide du développeur (http://docs.ansible.com/ansible/devel/dev_guide ), notamment les sections "Debugging modules", "Conventions, tips, and pitfalls" et "Module format and documentation".

La documentation est en anglais, si nécessaire, nous accompagnerons les participants pour qui cela est un problème.

Release d'AnyBlok 2.0.0

By Jean-Sébastien Suzanne, Verkest Pierre - Thursday and Friday, from 10:00 AM to 6:00 PM

AnyBlok est un framework modulaire facilitant le développement d'application métier basé sur SQLAlchemy.

L'objectif du sprint est de mettre a jour AnyBlok pour utiliser et exploiter les nouveautés de SQLAlchemy 2.0. Mais aussi de nettoyer les dépréciations liés aux dépendances

Rajout de fonctionnalités et créations de démos complètes et interactives pour Taipy

By Florian Jacta - Thursday and Friday, from 10:00 AM to 6:00 PM

Taipy est un package Python Open Source low-code de création d'application complète pour la Data Science. Taipy, grâce à ses deux composants (Taipy Core et GUI), permet de créer toutes sortes d’applications interactives et performantes, tout en facilitant la gestion de data flows complexes pour de la Data Science, ML ou de l’optimisation mathématique...

Ce sprint permettra aux contributeurs de se familiariser avec le fonctionnement de Taipy. Vous pourrez aider à la création de nouvelles features pour Taipy Core mais aussi apprendre à créer une application générique.

Voici le programme du sprint:

1) Issues :

  • possibilité de dupliquer des scénarios dans Taipy Core

  • possibilité de filtrer les scénarios par date dans Taipy Core

2) Démo : création d'une application web pour la recommandation de films utilisant Taipy GUI et Core

Ce sprint sera l'occasion pour vous :

  • d'avoir une vision plus approfondie et technique de Taipy

  • de créer une démo complète sous Taipy

Pour participer, sont requis:

  • un compte GitHub et savoir utiliser git pour gérer les issues

  • un ordinateur portable supportant l'environnement de développement suivant:

  • Python (3.8+)

  • Package Taipy

Nous vous accompagnerons, si nécessaire, dans la mise en place de cet environnement de développement. La documentation est en anglais, nous accompagneront les participants pour qui cela est un problème. Il est aussi recommandé de se familiariser avec Taipy Core et Gui. Les personnes débutantes avec Python sont les bienvenues.