Revue de presse Inno #8

Spécial PyCon Canada 2017

Un numéro spécial PyCon cette semaine ! Fier commanditaire de la PyCon Canada 2017 qui se déroulait du 18 au 21 novembre à Montréal, Savoir-faire Linux vous partage dans cette nouvelle édition, les retours de nos spécialistes Python qui étaient sur place.

PyCon 2017

L’équipe de Savoir-faire Linux à la Pycon

Tutoriel : Writing Tests that Write Themselves ! Par David Kua

Par Ernesto Rodriguez Ortiz

Vous allez aimer la puissance des tests basés sur les propriétés !

Je viens de découvrir les tests basés sur les propriétés lors de la récente PyCon Canada 2017. Un grand merci à David Kua qui a préparé, présenté et partagé avec nous un excellent tutoriel autour des tests basés sur les propriétés en utilisant la librairie Hypothesis (Welcome to Hypothesis!). Le test basé sur les propriétés a été popularisé par la bibliothèque Haskell Quickcheck. Une belle découverte donc, qui me fait désormais oublier les contraintes liées aux tests !

Comment ça marche ?

L’hypothèse génère des données aléatoires correspondant à vos spécifications et vérifiant que votre garantie est toujours valable pour chaque cas de test. Regardez cet exemple vraiment simple :

# FILE NAME division.py

#! / usr / bin / env python
# - * - codage: utf-8 - * -

from hypothesis import given, settings
import hypothesis.strategies as st


# On a écris ces deux lignes trop vite ...
def division (x, y):
    retour x / y


# Hypothèse va nous montrer nos erreurs ...
@given (st.integers (), st.integers ())
@settings (max_examples = 1000)
def test_commutativity_pbt (x, y):
    affirmer la division (x, y) * y == x

Ensuite, lancez :

pytest --hypothesis-show-statistics division.py

Vous devriez voir comment Hypothesis a trouvé le cas :

ZeroDivisionError: division by zero

C’est un outil vraiment puissant, surtout si vous feuilletez l’excellent tutoriel de David Kua et consultez la documentation de Hypothesis.

Closing Keynote – Mariatta Wijaya

Par Sébastien Blin

Lors de la conférence de clôture, Mariatta Wijaya – Core Developer de Python – nous a présenté Python 3.6, en mettant de l’avant une PEP de cette version : la PEP 498: Literal String Interpolation. Mariatta est revenue sur l’histoire de cette PEP, en partant du courriel reçu de la liste de diffusion, il y a quelques années. Les “f-string” permettent d’améliorer la construction de chaînes de caractères contenant des variables, le tout de manière plus performante et plus lisible que l’opérateur % ou la fonction str.format :

>>> import datetime
>>> name = 'Fred'
>>> age = 50
>>> anniversary = datetime.date(1991, 10, 12)

>>> f'My name is {name}, my age next year is {age+1}, my anniversary is {anniversary:%A, %B %d, %Y}.'
'My name is Fred, my age next year is 51, my anniversary is Saturday, October 12, 1991.'

>>> f'He said his name is {name!r}.'
"He said his name is 'Fred'."

Elle a ensuite énoncé les autres PEP releasées avec Python 3.6 (dont la PEP 628 pour math.tau, qui n’existe pas, mais tau vaut 6.28). La liste complète des PEPs pour Python 3.6 est visible ici : Python 3.6 Release Schedule.

Dans tous les cas, Mariatta nous invite à passer à Python 3.6, dès aujourd’hui, ainsi qu’à contribuer à l’évolution de ce langage, au travers l’écriture de PEPs, sur ce dépôt Github.

Contributions

GitHub dévoile son outil de discussion par équipe

Par Romain Bertozzi

La contribution au logiciel libre, c’est avant tout du partage où la communication prend une place essentielle. Dans ce contexte, GitHub a annoncé lundi 20 novembre dernier, le déploiement de discussions par équipe avec Introducing Team discussions.

L’idée est de soulager les issues et pull requests de conversations dont certaines n’ont pas forcément leur place. Ces issues et PR gagneront donc en efficacité et en lisibilité.

De plus, ces nouvelles discussions, publiques ou privées, auront leurs URLs dédiées et pourront être efficacement partagées et citées. Chez Savoir-faire Linux, nous accueillons cette nouvelle avec enthousiasme.

Nous pensons en effet que cela amènera plus de clarté aux échanges qui façonnent la direction d’un projet. La centralisation et la facilité de partage des discussions sont des atouts qui permettront de favoriser la transparence et la pérennité des échanges.

Reste à voir comment cette fonctionnalité sera adoptée par les utilisateurs de Github, et si ces mêmes utilisateurs ne disposent pas déjà d’alternatives et d’habitudes bien ancrées.

Revue de presse Inno #7

Mobile

Protocoles génériques et Type Erasure en Swift

Avec Swift, vous pouvez définir des protocoles en leur associant un ou plusieurs types génériques. Ces types sont définis en utilisant le mot-clé « associatedtype ».  L’appellation « type générique » est un peu usurpée ici, nous devrions plutôt parler d’un espace réservé pour un type inconnu. En effet, nous verrons que de tels protocoles n’offrent pas une grande souplesse d’utilisation lorsqu’il s’agit de réellement les considérer comme génériques.
En savoir plus :

Développement Web

Django 2.0 Release Candidate désormais disponible

Par Kévin Barralon

Le framework Django dont la prochaine version 2.0 est prévue autour du 1er décembre vient de publier sa version Candidate ce jeudi 15 novembre. Contrairement à ce que l’on pourrait penser, cette nouvelle version ne va pas apporter d’incompatibilités majeures au sein du framework. Les changements seront donc du même acabit que les versions précédentes.

Cependant, le changement important de cette version 2 sera l’incompatibilité avec Python 2.7, dont la fin du support est programmée pour 2020. Django 2.0 supportera donc au minimum la version 3.4, même s’il est chaudement recommandé de passer directement à la dernière version de Python (3.6 actuellement).

Routage d’URL

Au niveau des nouveautés, la nouvelle fonction django.urls.path() rend la syntaxe du routage des URL beaucoup plus simple et lisible. Ainsi, au lieu d’écrire : url(r'^articles/(?P[0-9]{4})/$', views.year_archive)

vous pourrez écrire : path('articles/<int:year>/', views.year_archive)

Cette nouvelle syntaxe permettra également de recevoir dans la vue (views) les arguments avec le typage défini (un nombre entier dans le cas de year au lieu d’une string).

Dans cet exemple, il n’y a toutefois pas de possibilité d’ajouter une contrainte (une année à 4 chiffres dans notre exemple). Pour cela, la fonction actuelle django.conf.urls.url() sera remplacée par django.urls.re_path(), qui permettra de conserver la possibilité de mettre des expressions régulières dans la définition de l’URL.

La fonction django.conf.urls.include() sera également directement disponible via django.urls. Pour pourrez ainsi importer vos modules de la manière suivante from django.urls import include, path.

Autres nouveautés

  • Pour les autres nouveautés : L’admin de Django 2.0 sera désormais responsive, donc adapté aux appareils mobiles.
  • Une nouvelle classe Window a été ajoutée afin de permettre l’utilisation du mot-clé OVER dans les requêtes SQL.
  • Une liste de tous les ajouts mineurs est disponible dans le communiqué officiel.
En savoir plus :

Déployer des services entiers avec Docker Swarm et Gitlab CI

Chez Savoir-faire Linux, je travaille (entre autres) sur l’infrastructure de déploiement pour plusieurs services que l’on héberge, et je suis toujours à l’affût de méthodes innovantes pour améliorer notre pratique DevOps. Présentement, le système de déploiement est axé autour de l’utilisation de Ansible pour « provisioner » un service dans une machine virtuelle, et l’ajuster au besoin après. Mais pour améliorer la stabilité de nos builds, de déploiements et l’agilité avec laquelle on peut faire des déploiements en continu, nous regardons d’autres approches DevOps, comme l’utilisation des containeurs Docker hébergés dans un Registry et déployés par un outil comme Gitlab CI.
Parmi les outils disponibles pour déployer une architecture de « microservice » (créée avec docker-compose), nous trouvons Docker Swarm. En utilisant un certain nombre de serveurs proprement configuré, on peut déployer un « stack » de containeurs avec un simple docker stack deploy. Docker va choisir par la suite la meilleure configuration pour le déploiement des différents containeurs à travers l’infrastructure du Swarm. Il va même aller jusqu’à configurer la réseautique entre les containeurs automatiquement, comme si tu utilisais docker-compose sur un ordinateur en local.
 
La meilleure partie, c’est le fait que ça marche bien avec notre système d’automatisation des builds déjà existant, GitLab CI. Nous pouvons faire le pipeline « build – test – release – deploy » à travers toute notre infrastructure avec GitLab CI et le GitLab Container Registry. Il y a toujours des parties casse-têtes à régler, mais ce système représente déjà un grand bond vers l’avant pour la simplicité et l’efficacité de notre pratique DevOps.
En savoir plus :

Le logiciel de communication Ring 1.0 fait son apparition sur Android TV

Ring continue de surprendre ! Il est désormais offert sur les télévisions intelligentes et box sous Android TV. Ring devient ainsi le seul logiciel de communication disponible sur le Google Play Store Android TV, depuis l’arrêt du support et de la version TV de Skype en juin 2016. Cette offre est une déclinaison de l’application Ring, déjà disponible sur différents dispositifs tels que mobiles, tablettes, Mac et PC.

Disponible sous la licence GPLv3+, Ring est un logiciel de communication libre, distribué et universel. Les utilisateurs de Ring peuvent communiquer de différentes façons, en l’utilisant comme un téléphone, un outil de partage de médias (audio et vidéo), une messagerie, ou encore comme un socle de communication pour les objets connectés. Souvent perçu comme une alternative libre et open source à Skype, le succès et la différenciation de Ring reposent notamment sur l’utilisation d’un réseau distribué et décentralisé afin de garantir une très haute confidentialité et une meilleure protection de la vie privée des utilisateurs. En développement continu, le projet, devenu paquet GNU en 2016, bénéficie de l’appui d’une communauté de contributeurs à travers le monde et de la Free Software Foundation.

Repenser Ring pour Android TV

Afin d’offrir la meilleure expérience utilisateur, les développeurs ont retravaillé l’interface de l’application Ring Android pour s’adapter aux standards Android TV. Pour obtenir le résultat actuel, il a été nécessaire de repenser l’ergonomie  ainsi que la navigation au sein de l’application Ring pour fonctionner avec une télécommande et les composants graphiques offerts par la plateforme.

Le pattern d’architecture mis en œuvre dans l’application Ring Android a permis aux développeurs de mutualiser toute la partie métier et données de la version mobile et de se concentrer sur la partie interface graphique.

Les contraintes d’utilisabilité ont conduit les développeurs à se concentrer sur des fonctionnalités clés comme :

  • la recherche de contact
  • l’appel audio-vidéo en ligne
  • l’affichage d’écran partagés de votre interlocuteur

Ces fonctionnalités demeurent réduites, mais le développement se poursuit pour offrir dans les prochaines semaines, des possibilités d’usage élargies. Ring s’intègre pour l’instant aux  télévisions intelligentes et box sous Android TV, comme un logiciel de communication audio/vidéo simple et intuitif, dédié à un usage familial mais aussi professionnel, en se substituant aux téléphones de conférence dans les salles de réunion.

Ring sur Android TV dans les bureaux de Savoir-faire Linux

Aidez-nous à améliorer Ring !

Ring s’améliore sans cesse pour offrir le meilleur de la communication. Comme le logiciel est en processus de développement actif, quelques bugs subsistent toujours et de nombreux défis attendent encore notre équipe de développeurs. Les évaluations que nous fournissent la communauté d’utilisateurs, de testeurs et développeurs sur la qualité et l’utilisation de la plateforme sont essentielles pour nous aider à identifier les problèmes, à les résoudre et à améliorer l’expérience.

Pour la sortie de Ring sur Android TV, nos questionnements se portent sur la compatibilité des systèmes et des caméras Web autres que Logitech ainsi que sur le matériel NVHI. Aussi, nous encourageons les curieux, utilisateurs et passionnés de logiciels libres à tester Ring sur différents supports et dans différents environnements. Votre expérience a été une réussite ? ou des crashs subsistent avec votre matériel ? Faites-nous part de vos commentaires en écrivant à Ring@savoirfairelinux.com. Vous participerez vous aussi à l’amélioration de Ring !

Téléchargez Ring sur Android TV

Si vous souhaitez essayer cette nouvelle expérience de communication, sachez que Ring est dès à présent disponible en téléchargement gratuit sur le Google Play Store

Revue de presse Inno #3

Développement Web

PyCon 2017

Par Jacob Cook 

La PyCon Canada arrive à grands pas, c’est la plus importante conférence canadienne du monde Python qui aura lieu à Montréal cette année, du 18 au
21 novembre.
  
En tant qu’entreprise de développement logiciel bien ancrée dans les communautés Python et Django de Montréal, Savoir-faire Linux y
enverra un nombre important de ses développeurs. Pour les deux premières journées de la conférence, il y aura des keynotes et des 

discours sur les développements les plus utiles dans la communauté Python, et aussi plus généralement dans le développement logiciel de nos jours. Le dimanche 19 à 11h50, je vais présenter un panel sur les façons les plus efficaces de créer une application Django qui profite de la puissance front-end de React. Avec des présentations fortes intéressantes prévues, et 70 % des billets déjà vendus, la PyCon Canada de cette année s’annonce comme la plus grande de toute son histoire !

Communautés et Projets libres

#Hacktoberfest ou comment un projet libre en dormance est maintenant plus actif que jamais

Par Samuel Sirois

Istvan Szalaï et moi souhaitaient redémarrer un projet libre en dormance que nous avions démarré l’été dernier: RingMe.js.

Pour nous motiver un peu, Istvan a proposé d’inscrire le projet dans le cadre de l’initiative Hacktoberfert de DigitalOcean. Plus une forme de ludification de la contribution pour nous deux que pour attirer des bidouilleurs•euses à contribuer au projet, (nous avons eu la surprise de voir des contributeurs proposer du code) apportant des solutions à des tâches, anomalies et fonctionnalités auxquelles l’étiquette #Hacktoberfest a été ajoutée.

La clef du succès ?

Quelques hypothèses :

  • Les tâches, anomalies et nouvelles fonctionnalités sont précises, simples et d’envergure raisonnables (merci Istvan);
  • Le JavaScript est un language sexy en 2017;
  • La base de code est suffisamment simple et embryonnaires pour qu’il soit facile à de nouvelles•aux contributrices•eurs de comprendre le code et de proposer une solution cohérente;
  • Les fichiers README, CONTRIBUTING et des gabarits de soumission de code sont présents dans le projet (merci Emmanuel);
  • Les animateurs (Istvan et moi) essaient de répondre aux demandes de contributions et aux questions dans les 48 heures;
  • #Hacktoberfest est un événement Web populaire.

Merci à:

Merci à Istvan d’avoir eu l’idée d’inscrire ce projet au #Hacktoberfest.

Merci à Jacob de nous aider à valider des demandes de contributions de façon efficace grâce à sa connaissance de l’écosystème JavaScript moderne.

Merci à toutes les contributrices•eurs au projet (en date de publication de cet article):

Mobilité

Secret: Psss…  Sais tu comment fonctionne le Android View State storing ? 

Par Loïc Siret

Qui n’a jamais éprouvé des difficultés ou des comportements « bizarres » lors du stockage/restauration de vues personnalisées ?

Voici un article de elye qui explique le système de sauvegarde des vues et comment s’affranchir de ces problèmes : A must know secret about Android View State storing mechanism!

FOSDEM 2017 : nos impressions

Un amphithéâtre plein à craquer lors de la conférence principale sur les Kubernetes

Cette année, nos envoyés spéciaux au FOSDEM étaient 5. Soizik, Cécile, Clément, Adrien et Andreas nous livrent leurs impressions, leurs coups de cœurs et leurs découvertes.


Soizik Froger, chef de projet

– Plongé : dans mon 1er FOSDEM. Ce fut une super expérience, avec un seul regret : ne pas avoir le don d’ubiquité ! Un sacré bain de techno, de passionnés et une belle leçon d’humilité face au niveau des intervenants !

– Préféré : la conférence du petit «frenchy» Matthieu Totet sur le cycle « graph » : un travail passionné et passionnant sur son module Gephy de suivi en temps réel de l’activité Twitter, ou comment saisir le potentiel fantastique de cette technologie!

– (Presque) pleuré de joie : lors de la séance de Q&A avec le Governing board OpenJDK Java : Mark Reinhold, Mario Torre, Andrew Haley, Georges Saab & Doug Lee (embedded). J’ai volé une photo devant laquelle je me prosternai chaque soir jusqu’au prochain FOSDEM.

Mark Reinhold, Mario Torre, Andrew Haley, Georges Saab & Doug Lee (en téléconférence).

– Décerné : la palme du meilleur orateur pour Christian Thalinger pour son benchmark du Compiler JIT Graal sur les services Twitter car j’ai tout compris et je ne pense pas que cela vienne de moi !

– Découvert : ce qui se cache sous le capot de Ring. On a assisté à un bel échange technique autour de l’architecture et à une immense vague d’enthousiasme pour ce projet ambitieux et modulable ! Bravo à l’équipe !


Cécile Delépine, directrice générale déléguée Europe

– Sauté à pieds joints : dans mon premier FOSDEM. Ce fut une super occasion de rencontrer l’écosystème dans un environnement à la fois détendu et très professionnel.

– Surveillé : l’orchestration de containers avec Kubernetes, la communauté Open Source qui croît plus rapidement en ce moment. Le FOSDEM est l’endroit idéal pour faire de la veille technologique, que je ne fais pas comme une ingénieure mais comme une développeuse d’affaires.

– Fait à savoir : le FOSDEM, c’est aussi l’occasion pour recruter (nous avons investi le job corner avec nos offres au Canada et en France !), faire connaître Savoir-faire Linux aux jeunes, moins jeunes et surtout donner envie aux talents de nous rejoindre. La conférence Ring y a bien sûr contribué mais aussi l’implication de Clément avec LemonLdap et notre présence sur le stand OW2.

– Entendu parler : la conférence Mozilla: What motivates the open source community? par Rina Jensen, dont les conclusions devraient être partagées.

Beaucoup de lecture en perspective !

– Décerné : le Prix spécial pour moi revient à Software Heritage, un projet porté par Roberto Di Cosmo (INRIA, membre du GTLL Systematic). Le code source de nos projets sont un COMMUN, il doit à ce titre être accessible par tous et centralisé dans une archive qui ne dépend pas d’une solution ou d’une autre (Github, Bitbucket…) .

– Dévoré : Je suis repartie avec How Linux works? et je viens de finir le chapitre 2 🙂

Clément Oudot, expert infrastructure et sécurité

– Représenté : le projet LemonLDAP::NG. J’ai pu ainsi échanger avec les communautés FusionDirectory et Spoon. La présence d’un stand OW2 pour la première année démontre que ce consortium n’est pas qu’orienté Entreprise mais est bien également un acteur communautaire.

– Enchanté : par l’affluence. Entre le kiosque Perl et la devroom bien fournie le dimanche, c’est un plaisir de sentir que ce langage attire encore du monde !

– Croisé : beaucoup de connaissances travaillant dans d’autres communautés, comme Framasoft, XMPP, OpenStack, VLC, PHP, etc.

Notre équipe France au kiosque OW2 : Clément Oudot (c), Cécile Delépine et Soizik Froger
Sous le capot de Ring avec Adrien Béraud et Andreas Traczyk

Adrien Béraud, ingénieur système projet Ring

– Excité : par ce vivier d’échanges enrichissants. Ce fut très excitant, émulant. Nous avons rencontré plein de gens avec des projets intéressants. Il y avait tellement de monde, près 8000 personnes sur les deux jours.

– Marqué : par l’intérêt du public lors de la conférence de Ring l’année dernière, les gens découvraient Ring. Cette année, ils cherchaient à en savoir plus sur la technologie autour du logiciel. D’où des échanges très intéressants dans une salle trop petite pour accueillir tout ce monde intéressé par notre solution. On observe une demande croissante pour les systèmes de communication distribués.

– Écouté : Alok Anand, qui a présenté le module dédié à Ring pour Telepathy. Il l’a développé dans le cadre de Google Summer of Code, avec l’appui de Savoir-faire Linux.

Andreas Traczyk, développeur projet Ring

– Débarqué : à mon premier FOSDEM. Venant de Montréal, j’ai été servi. Cela a dépassé mes attentes. Il y avait vraiment beaucoup de participants, de gens brillants, ce fut assez intense!

Il y avait du monde à la présentation de Ring !

– Impressionné : par la participation à la conférence de Ring. Malgré le peu de temps imparti, nous avons été bien reçus, les questions du public ont été stimulantes, en sachant que d’autres personnes n’ont pas pu assister à notre présentation, faute de place ! J’espère que nous aurons plus de temps l’année prochaine.

– Regretté : de ne pas avoir eu assez de temps pour parler de Ring !

– Assisté : à la très bonne présentation de Daniel Pocock sur le socio-financement (crowdfounding) de projets dans notre domaine.