Planet

 

Mozilla, au travers du projet Persona, veut proposer une solution au problème des mots de passe sur le Web. Je trouve que c'est un très bon projet, c'est justement pour cette raison que je commence à y contribuer, et il mérite que l'on s'y intéresse.

Je vais humblement tenter de vous le présenter pour, je l'espère, que vous le mettiez en place sur votre site!

 

L'un des grands problèmes de la sécurité, c'est qu'elle s'accompagne souvent de contraintes vis-à-vis des utilisateurs. Mots de passe longs et complexes. Chiffrement. Changement de mot de passe pour chaque site. Tout ceci, c'est long, c'est chiant. Donc on ne le fait pas et on utilise le même mot de passe partout.

Le problème, c'est que quand des gros sites se font pirater et que les mots de passe sont diffusés (comme Linkedin ou Yahoo!), on peut voir son compte se faire compromettre sur d'autres sites si on y utilise le même login/mot de passe que sur le site piraté.

L'autre problème des mots de passe, c'est pour les développeurs, puisqu'il faut les stocker de façon sécurisée pour éviter la perte d'informations pour l'utilisateur.

Des solutions existent, comme s'authentifier en utilisant un service externe, comme Facebook ou Twitter. Cependant, on exporte nos données chez des services tiers, et on ne garde l'accès à notre compte que tant que le tiers est disponible et propose la solution d'authentification.

 

La solution est Persona. Ce nouveau "service" apporte de la sécurité, de l'indépendance, et une facilité d'installation et d'utilisation. En pratique, comment est-ce que ça marche ?

Dans Persona, vous possédez une (ou plusieurs) identité(s). Cette identité est identifiée par votre adresse email. Au moment de l'authentification, au lieu de devoir donner un mot de passe à chacun des sites Web, le site va, au moyen de Persona, faire une requête à votre Identity Provider, le site tiers qui gère votre identité. Ensuite, vous prouvez à ce site que vous êtes bien celui que vous dîtes que vous êtes, et ce dernier va alors annoncer au premier site que vous êtes identifié.

En pratique, les choses ne se passent pas exactement de cette façon. Je ferais un autre article pour expliquer plus en détail le fonctionnement et la sécurité derrière Persona.

Avec ce système, au lieu de donner le même (ou des différents) mot de passe à 50 sites différents, et ainsi multiplier les risques de fuites de données, vous n'avez qu'un seul mot de passe à retenir. La connexion est aussi beaucoup plus simple. Il suffit de cliquer sur le bouton "Login with Persona", puis sélectionner l'identité avec laquelle vous voulez vous connecter. Ce n'est pas plus compliqué que pour n'importe quel autre système d'authentification.

Pour les développeurs, les avantages sont multiples : plus besoin de maintenir à jours des politiques de stockage de mots de passe, n'y même de vous demander si l'adresse email qui vous a été donné par l'utilisateur est correcte ou non. Persona, de par son fonctionnement, vous assure que l'adresse email est valide et utilisée par l'utilisateur.

 

Enfin, on peut noter un autre problème, plutôt d'ordre pratique. Sur chaque site où l'on doit s'enregistrer, on doit ensuite configurer son compte, pour fournir certaines informations, comme son nom, son site Web, son âge, etc... Un des projets qui sera une fonctionnalité future (des gens travaillent actuellement dessus), est Picl (prononcez Pikeule), ou Profile In The Cloud. Cela permettra, quand vous vous identifiez, de fournir à un site de récupérer automatiquement des informations sur votre compte depuis PiCL plutôt que vous ayez à les saisir.

Ce système est encore en cours de développement et n'arrivera pas avant fin 2013 je pense.

 

Pour finir, parlons Vie Privée.

Comme tous les projets Mozilla, Persona est un projet Libre, diffusé sous la Mozilla Public Licence. Tout le monde peut (et doit! ;)) donc l'utiliser et l'intégrer à son site, pour reprendre le contrôle de ses données et se simplifier la vie, tant côté utilisateur que développeur!

Persona, en plus d'augmenter la sécurité, vous permet de redevenir maître de vos données. Puisque le service n'a pas vocation à être hebergé chez Mozilla. Au contraire, chaque personne (ou organisation) aura son propre Identity Provider chez lui.

En fait, ce n'est pas vraiment ça. Vous êtes identifié par votre adresse email. C'est donc le service qui vous fournit votre adresse email qui devient votre Identity Provider, et c'est chez lui que toutes vos données sont sauvegardées. Donc, si votre adresse est chez GMail, on ne gagne pas grand chose niveau vie privée, si vous avez votre propre serveur de mail, c'est déjà beaucoup mieux puisque vous gérez vous même vos informations.

 

À l'heure actuelle, plusieurs sites proposent l'authentification avec Persona, notamment Jocly, site de jeux Html5 et la plupart des sites et services de mozilla.

Au niveau des services qui sont Identity Providers, je crois que Yahoo l'est. Je n'ai pas trop d'autres noms en tête, mais n'hésitez pas à demander à votre fournisseur de supporter le service. C'est Open-Source, c'est libre, et c'est sécurisé! Sachez que Mozilla a mis en place un Identity Provider de secours qui vous permet d'utiliser le service même si, dans mon cas par exemple, Google ne gère pas encore Persona.

 

Pour plus d'infos, voilà une bonne présentation de Persona (un peu technique) par Francois Marier

Image d'en-tête

L'équipe du design en charge d'Ubuntu Touch a récemment publié une vidéo présentant les animations de l'interface. Son nom de code ? "Paper" (papier). La vidéo expose certaines des animations principales de l'interface du futur Ubuntu Touch : animation lors du changement d'applications, lors du déverrouillage de l'écran, lors de l'interaction avec des bulles d'alertes (popups) ou avec des interrupteurs... L'expérience que souhaite implanter l'équipe de design en est une semblable à celle de la manipulation du papier. Par exemple :
  • lorsque trop d'applications apparaissent dans la barre des lanceurs (Launcher), les icônes s'empilent et se déplient à la manière d'un accordéon ;
  • lorsqu'une application est chargée ou rechargée, celle-ci apparaît à partir de la droite avec un effet semblable à celui de tourner une page ;
  • lorsqu'une bulle d'alerte apparaît, les actions permettant d'interagir avec elle se déplient par le dessous, comme s'il s'agissait d'une lettre que l'on ouvre.

Rappelons qu'une première version finale d'Ubuntu Touch est attendue dès octobre 2013. Les appareils pris en charge officiellement seront ceux de la gamme Nexus (Galaxy Nexus, Nexus 4, Nexus 7 et Nexus 10). De nombreux autres modèles devraient être pris en charge par des portages effectués par des membres de la communauté des développeurs d'Ubuntu. ---------- Sources : OMG! Ubuntu! et UbunTouch

Il était en place depuis quelques temps, tout est finalement pleinement fonctionnel aujourd'hui, je peux donc vous l'annoncer, le blog a aujourd'hui un nouveau nom de domaine!

On oublie donc l'ancien nom qui était chez No-IP.com, et on passe à un vrai nom de domaine : quack1.me

Notez que l'ancien NDD (quack1.no-ip.org) est toujours valable, et je ne pense pas le couper avant un bon moment, afin d'assurer une rétro-compatibilité pour les gens qui auront déjà un flux RSS ou autres marque-pages sauvegardés.

Cependant, n'hésitez pas à vous mettre à jour, notamment pour le flux RSS : http://quack1.me/feeds/all.atom.xml!

Il était en place depuis quelques temps, tout est finalement pleinement fonctionnel aujourd'hui, je peux donc vous l'annoncer, le blog a aujourd'hui un nouveau nom de domaine!

On oublie donc l'ancien nom qui était chez No-IP.com, et on passe à un vrai nom de domaine : quack1.me

Notez que l'ancien NDD (quack1.no-ip.org) est toujours valable, et je ne pense pas le couper avant un bon moment, afin d'assurer une rétro-compatibilité pour les gens qui auront déjà un flux RSS ou autres marque-pages sauvegardés.

Cependant, n'hésitez pas à vous mettre à jour, notamment pour le flux RSS : http://quack1.me/feeds/all.atom.xml!

24 Mai 2013 à 22:28

UDS Virtuel 13.05 via Ubuntuser

Le second Ubuntu Developer Summit (UDS) de l'année s'est déroulé du 14 au 16 mai. Dans leur nouvelle formule entièrement en ligne, les UDS sont désormais programmés tous les trois mois -- plutôt qu'aux six mois dans l'ancien format. Cette manière de repenser les UDS est notamment l'une des expressions de la transformation du processus de développement d'Ubuntu, plus fluide et moins centré sur les versions semestrielles.

SESSION D'OUVERTURE

Le premier jour a été marqué par une courte présentation, marquant le départ de l'UDS. Jono Bacon a ouvert la plénière par un bilan d'Ubuntu 13.04, incluant une petite revue de presse, et par une sommaire des défis qui attendent les développeurs et testeurs pour le prochain cycle. Il a continué avec un rappel du nouveau format de l'UDS et du fonctionnement des sessions à l'intention des participants. Rick Spencer a ensuite pris le relais avec  une comparaison entre Ubuntu 9.04 et 13.04, afin de présenter l'évolution de la distribution durant les quatre dernières années : Au niveau organisationnel, le développement d'Ubuntu 9.04 était grandement basé sur une nouvelle planification à chaque six mois. Les logiciels et services étaient publiés en une version fonctionnelle, puis améliorés par la suite selon les retours des utilisateurs. A contrario, pour Ubuntu 13.04, la planification du développement était continue. Chaque projet pouvait adopter des objectifs à atteindre sur une étendue de temps plus grande que la prochaine publication. Les objectifs étaient aussi suivis de manière plus précise. Au niveau du design, le travail accompli sur la version 9.04 consistait globalement à modifier quelques éléments de l'interface de GNOME. Canonical n'employait à ce moment que deux personnes à cette tâche. La version 13.04 d'Ubuntu permet d'apprécier les importants changements qui sont survenus depuis : Canonical emploie désormais des équipes entières spécialisées dans différents domaines du design, et Unity est l'application de leur travail. Ubuntu fait grande place au design dans sa conception, et des expérimentations sont régulièrement menées auprès des utilisateurs pour obtenir des critiques précises. Au niveau de l'assurance qualité, là-aussi, de grosses différences sont observables. Pour Ubuntu 9.04, le processus d'assurance qualité consistait essentiellement à gérer les bogues rapportés par la communauté et à mettre en pause à quelques reprises l'intégration de nouveautés (feature freeze) pour permettre la correction des bogues. Avec la version 13.04, on constate un travail plus professionnel avec un développement centré sur les tests (toute nouvelle fonctionnalité doit avoir réussir une série de tests automatisés), une intégration contrôlée et continue des nouveautés permettant d'avoir tous les jours une image utilisable de la version en développement, et des tests généraux de la distribution avant de la rendre disponible en production. Enfin, les mises à jour sont progressives suivant les retours automatisés quant aux bogues rencontrés par les utilisateurs. On observe une réelle évolution d'Ubuntu depuis les quatre dernières années, même s'il reste encore beaucoup de chemin à parcourir. Avec Ubuntu 13.10, l'un des objectifs sera donc de terminer la version 1.0 d'Unity Next pour les téléphones mobiles et les tablettes, offrir un moyen d'essayer Unity Next sur poste de travail et mettre à disposition pour la première fois la version 1.0 du SDK d'Ubuntu.  

RÉSUMÉ DE QUELQUES POINTS INTÉRESSANTS

Trois jours, une centaine de sessions réparties autour de trois grands thèmes : développement d'applications, communauté, fondations [du système], informuagique et serveur, et client. Nous ne pouvons pas résumer chacune d'elles ; vous pouvez voir une vidéo de chaque session et les notes de travail les accompagnant dans le site de l'UDS 13.05. Ci-dessous, nous vous présentons un sommaire de quelques points qui ont su nous intéresser.

Quelques nouveautés pour les cartes graphiques dans Ubuntu 13.10

Bonne nouvelle aux possesseurs de cartes graphiques Radeon utilisant le pilote libre : l’accélération matériel pour la lecture de vidéo H.264 et VC-1 devrait être activée, suite à l’implémentation récente de code dans le pilote pour prendre en charge l'unité de décodage UVD. De même, la nouvelle génération de cartes AMD devrait également enfin prendre en charge de manière plus avancé la 3D. Du côté du pilote nVidia propriétaire, on pourrait voir arriver la prise en charge de PRIME pour le traitement graphique simultané sur plusieurs puces dans les ordinateurs dotés de plusieurs puces ou cartes vidéo.  

Un nouveau format de paquet

Pour faciliter la distribution de petites applications sur les téléphones et tablettes, l'équipe d'Ubuntu va développer un nouveau système de paquets simplifié. L'idée proposée serait de passer outre le gestionnaire de paquet habituel et la gestion de nombreuses dépendances pour se centrer sur une solution simple, à l'image des paquet APK pour Android. Les applications n'auraient alors plus que des dépendances à la base d'Ubuntu (à travers le SDK). Les fichiers seraient stockés dans un répertoire spécifique, et l'ensemble de l'application fonctionnerait dans un bac à sable (sandbox) pour une meilleure étanchéité et une meilleure sécurité. Cette proposition ne vise pas à remplacer les système des dépôts, qui resteront la solution préférée pour tous les paquets systèmes, mais d'offrir aux développeurs une alternative additionnelle simplifiée pour distribuer des applications pour plateformes mobiles.  

Ubuntu Touch

Nous avons appris quelques nouvelles à propos d'Ubuntu Touch :
  • les applications principales sont maintenant en plein développement. On retrouve : l'horloge, le calendrier, l'afficheur de prévisions météorologiques et la calculatrice. D'autres pourraient être ajoutées, comme un gestionnaire de fichiers, un lecteur de flux RSS et un terminal ;
  • un nouveau panneau de configuration devrait être disponible en Qt pour Ubuntu Touch ;
  • L'isolement des applications devrait egalement arriver pour la 13.10. Tout comme sur les autres OS pour tablettes et téléphones, les applications doivent demander des droits sur l'usage des fonctions spécifiques du système lors de l'installation et ne peuvent utiliser d'autres fonctions sans autorisation. Actuellement une application installe sous Linux a globalement accès a l’ensemble du système.
Rick Spencer a déplacé le code d'Ubuntu Touch des PPA vers les archives réelles ; ceci signifie que Ubuntu Touch profite désormais des mêmes outils de tests et d'assurance qualité que la version d'Ubuntu pour postes de travail. Les premières images réellement utilisables devraient être disponibles à la fin du mois de mai, afin que les développeurs puissent identifier et corriger rapidement les éventuelles régressions rencontrées au quotidien.  

Unity

Le développement d'Unity 8 -- précédemment annoncé sous le nom Unity Next -- a été abordé lors de l'UDS. Unity 8 sera développé en priorité pour les plateformes mobiles (téléphone et tablettes), et le but est d'intégrer le tout dans une version finale d'Ubuntu Touch au mois d'octobre. Ubuntu 13.10 pour postes de travail sera livrée par défaut avec Unity 7, soit la même version que celle d'Ubuntu 13.04. Toutefois, Unity 8 pourra être installée et testée avec Mir sur PC. Le but visé ici est de rendre disponible rapidement Unity 8 et Mir pour les postes de table, afin que des tests et des retours d'expériences puissent être remontés aux développeurs et aux concepteurs d'interface. Certes, il ne s'agira que de l'exact même Unity 8 que pour Ubuntu Touch, prévue pour les interfaces tactiles. La prise en charge des actions par la souris et le clavier va être intégrée au SDK, et l'adaptation d'Unity 8 pour une utilisation sur une station de travail débutera dans le prochain cycle de développement. Dans Ubuntu 13.10 pour postes de travail, ce sera donc encore Unity 7 qui sera l'environnement bureautique par défaut. L'ensemble du travail pour le présent cycle de développement devrait consister à affiner davantage Unity et à améliorer ses performances. On verra poindre aussi quelques nouveautés qui ont été repoussées d'Ubuntu 13.04, à savoir le service Smart Scopes, un gestionnaire de vie privée plus élaboré et l'arrivée du paiement directement à partir du tableau de bord. Aucune nouvelle, par contre, concernant les menus intégrés localement (Locally Integrated Menus), une fonctionnalité qui rend les menus d'applications accessibles dans la barre de titre des fenêtres -- les LIM sont repoussés depuis Ubuntu 12.04 LTS.  

Chromium en tant que navigateur par défaut

Jason Warner, le gestionnaire de l'équipe en charge de l'expérience sur postes de travail, a animé une session de discussion concernant la possibilité de remplacer le navigateur Web par défaut. Actuellement Mozilla Firefox, Ubuntu pourrait le remplacer par Chromium. Le souhait de l'équipe en charge d'Ubuntu pour postes de travail est de livrer la distribution avec des logiciels utilisés par le grand public. En ce sens, la question du remplacement du navigateur par défaut est légitime. Google Chrome et Chromium ont dépassé le nombre d'utilisateurs de Firefox au cours des dernières années. Il y a demande claire des utilisateurs, qui utilisent beaucoup Chromium. Enfin, un changement de navigateur vers l'un utilisant le moteur WebKit apporterait une constance dans l'expérience Web entre celle sur postes de travail et celle sur système mobile. Durant la discussion, plusieurs zones d'ombre ont toutefois été soulevés quant à la proposition. D'abord, Chromium n'est pas disponible pour certaines architectures matérielles (PowerPC et ARM64). Toutes les extensions de Firefox n'existent pas sur Chromium, et la migration d'un navigateur à l'autre n'amène pas les extensions. Chromium ne fonctionne pas avec le lecteur d'écran Orca, ce qui le rend moins compatible avec les solutions d'accessibilité mises de l'avant par Ubuntu. Enfin, dû à son mode de fonctionnement, Chromium est davantage gourmand en ressources que Firefox. Des évaluations supplémentaires seront accomplies durant le cycle de développement, et le mainteneur de Chromium pour Ubuntu, Chad Miller, s'attaquera à certains de ces points négatifs. Une décision sera prise plus tard, suivant l'évolution de Chromium.  

Version en développement continu

Comme cela avait été discuté, il sera désormais possible de suivre constamment la dernière version de développement. Le mécanisme finalement choisi est la création d'un lien symbolique (symlink) qui sera mis à jour au moment où un nouveau cycle de développement débutera. Certains éléments à ce sujet ont été soulevés durant une session. D'abord, il faut encore choisir un nom pour ce lien symbolique. Ce nom doit refléter l'état du produit -- à savoir : qu'il est la toute dernière révision du code d'Ubuntu, mais qu'il est aussi instable. De plus, les noms issus de Debian sont proscrits, pour éviter la confusion entre les deux distributions -- ce qui élimine d'office testing et unstable. Plusieurs suggestions sont déjà évoquées ; il reste à faire un choix parmi celles-ci. L'autre point à évaluer est la manière de rendre disponible l'accès à ce lien de développement continu. Il a été proposé qu'une modification à au gestionnaire de sources de logiciels facilite ce choix. Cependant, il est aussi désiré qu'il soit facile de repasser ses sources sur l'actuelle branche de développement. Enfin, le moment de changer la destination du lien symbolique a aussi été évoqué. Il a été proposé que le changement ne soit effectué qu'une fois que les dernières importations depuis Debian ont été effectuées. En résumé, beaucoup d'efforts pour ce cycle seront investis dans Ubuntu Touch. La version pour postes de travail bénéficiera certes de quelques nouveautés, mais sera davantage concernée (encore) par une stabilisation de l'ensemble de ses composantes.

 

Depuis plusieurs années, j'ai envie de contribuer à un projet Open-Source. Aujourd'hui, les choses commencent à devenir réalité. J'ai trouvé le projet que je veux aider : Mozilla Persona. Mais je fais les choses dans le désordre puisque j'écrirais bientôt un article pour vous le présenter un peu mieux.

Ici, je vais détailler les étapes pour se monter un environnement de développement complet sur un système GNU/Linux, et plus précisément sur Ubuntu 13.04.

Devenir pote avec GitHub

La première chose à faire avant de contribuer est de s'inscrire sur GitHub, et forker le projet, disponible à https://github.com/mozilla/browserid.

Quand vous avez fait ça, clonez le répertoire sur votre machine :

╭────<quack@spiderman >───< ~/work/workspace/mozilla > ╰───[18:11:29] $ git clone https://github.com/quack1/browserid.git

Puis, rendez vous dans ce répertoire pour y rajouter un nouveau remote. Celui-ci sera le repository "officiel" à partir duquel on récupérera les mises à jour du code :

╭────<quack@spiderman >───< ~/work/workspace/mozilla > ╰───[18:13:49] $ cd browserid ╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:13:55] $ git remote add mozilla https://github.com/mozilla/browserid.git

De cette façon, pour se mettre à jour, on fera simplement :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:14:12] $ git pull mozilla dev

Et, pour pousser nos modifications sur notre dépôt :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:14:20] $ git push origin dev

On proposera nos commits à l'équipe de développement au travers du système de Pull Request inclut dans GitHub.

Travailler avec Nodejs

Persona étant écrit en Node.js pour les parties serveur, on doit l'installer pour pouvoir tester notre code.

Cependant, avant cela, on doit installer quelques autres outils :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:15:02] $ sudo apt-get install python-software-properties git-core libgmp3-dev g++ libssl-dev

Maintenant, on peut donc installer NodeJs. Mais surtout, n'installez pas nodejs directement depuis les depôts d'Ubuntu ou depuis les sources du site officiel, puisque la version currente est en 0.10., et Persona n'est compatible qu'avec les 0.8. pour le moment.

La meilleure façon de faire m'a été donnée par Shane Tomlinson, et elle consiste à déléguer la gestion des versions de Node.js installées sur le système à un simple programme : nvm. Ce dernier peut installer plusieurs versions de Node, et il est ensuite possible de lui préciser quelle version utiliser.

Pour l'installer, suivez les instructions disponibles sur le site officiel. Pour faire simple, voici les commandes à taper :

╭────<quack@spiderman >───< ~/work/softs > ╰───[18:17:47] $ git clone http://github.com/creationix/nvm.git nvm ╭────<quack@spiderman >───< ~/work/softs > ╰───[18:17:58] $ echo '. /home/quack/work/softs/nvm/nvm.sh' > ~/.zshrc

N'oubliez pas de modifier la dernière commande pour coller à l'emplacement où vous avez cloné les sources et à l'emplacement du fichier de configuration de votre shell (par défaut, sur Ubuntu, c'est ~/.bashrc). Démarrez un nouveau terminal et la commande nvm devrait marcher.

Après ceci, installez la dernière version de Node.js supportée, et définissez la comme version par défaut :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:19:30] $ nvm install 0.8.12 ╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:19:49] $ nvm alias default 0.8.12

Maintenant, vous pouvez installez tous les modules Node.JS nécéssaires à Persona. Déplacez vous dans le répertoire racine où vous avez cloné browserid, et lancez la commande suivante :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:20:15] $ npm install

Et, normallement, tous les modules sont installés et vous pouvez travailler! Si vous voulez lancer les exemples donnés dans les sources :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:20:20] $ npm start

L'application Web d'exemple est accessible à http://localhost:10001, et le serveur Browserid est à http://localhost:10002.

Mais le module bcrypt ne marche pas...

Si, durant le npm install, vous avez une erreur du type "Impossible d'installer le module 'bcrypt'", essayez d'importer la bonne version directement :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:20:20] $ npm install bcrypt@0.7.3

Refaites un npm install, et si ça ne marche toujours pas, nous allons essayer de l'installer manuellement.

Pour faire simple, les commandes suivantes vont : cloner les sources, configurer la compilation, compiler les sources, et ré-installer bcrypt avec npm.

╭────<quack@spiderman >───< /tmp > ╰───[18:20:20] $ git clone http://github.com/ncb000gt/node.bcrypt.js.git ╭────<quack@spiderman >───< /tmp > ╰───[18:21:20] $ cd node.bcrypt.js ╭────<quack@spiderman >───< /tmp > ╰───[18:22:20] $ npm install -g node-gyp ╭────<quack@spiderman >───< /tmp > ╰───[18:23:20] $ node-gyp configure ╭────<quack@spiderman >───< /tmp > ╰───[18:24:20] $ node-gyp build ╭────<quack@spiderman >───< /tmp > ╰───[18:25:20] $ cd ~/work/workspace/mozilla/browserid ╭────<quack@spiderman >───< /tmp > ╰───[18:25:22] $ rm -rf var node_modules ╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:26:20] $ npm install

Normallement, après cette dernière étape, tout devrait normalement marcher avec un npm start.

Mettre à jour ses sources

Désormais, à chaque fois que vous voudrez mettre à jour vos sources, vous devrez réinstaller les modules Node pour utiliser les dernières versions demandées par Persona.

Le processus de mise à jour sera donc :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:23:20] $ git pull mozilla dev ╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:31:20] $ rm -rf var node_modules ╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:32:20] $ npm install

Et voilà, il est temps de travailler sur le code maintenant!

 

_ Si vous trouvez quelques fautes, ou si vous voulez plus de précisions, n'hésitez pas à m'envoyer un email, me contacter sur Twitter, ou à joindre le canal IRC de l'équipe Identity : #identity@irc.mozilla.org. Les mecs qui en font partie et qui travaille sur Persona sont tous supers cools et toujours près à vous aider!_

Un merci tout particulier à Shane Tomlinson qui a passé tout son samedi après midi sur IRC à m'aider à installer cet environnement!

Pour plus d'infos, vous avez également le README disponible sur le dépôt GitHub du projet

 

Depuis plusieurs années, j'ai envie de contribuer à un projet Open-Source. Aujourd'hui, les choses commencent à devenir réalité. J'ai trouvé le projet que je veux aider : Mozilla Persona. Mais je fais les choses dans le désordre puisque j'écrirais bientôt un article pour vous le présenter un peu mieux.

Ici, je vais détailler les étapes pour se monter un environnement de développement complet sur un système GNU/Linux, et plus précisément sur Ubuntu 13.04.

Devenir pote avec GitHub

La première chose à faire avant de contribuer est de s'inscrire sur GitHub, et forker le projet, disponible à https://github.com/mozilla/browserid.

Quand vous avez fait ça, clonez le répertoire sur votre machine :

╭────<quack@spiderman >───< ~/work/workspace/mozilla > ╰───[18:11:29] $ git clone https://github.com/quack1/browserid.git

Puis, rendez vous dans ce répertoire pour y rajouter un nouveau remote. Celui-ci sera le repository "officiel" à partir duquel on récupérera les mises à jour du code :

╭────<quack@spiderman >───< ~/work/workspace/mozilla > ╰───[18:13:49] $ cd browserid ╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:13:55] $ git remote add mozilla https://github.com/mozilla/browserid.git

De cette façon, pour se mettre à jour, on fera simplement :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:14:12] $ git pull mozilla dev

Et, pour pousser nos modifications sur notre dépôt :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:14:20] $ git push origin dev

On proposera nos commits à l'équipe de développement au travers du système de Pull Request inclut dans GitHub.

Travailler avec Nodejs

Persona étant écrit en Node.js pour les parties serveur, on doit l'installer pour pouvoir tester notre code.

Cependant, avant cela, on doit installer quelques autres outils :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:15:02] $ sudo apt-get install python-software-properties git-core libgmp3-dev g++ libssl-dev

Maintenant, on peut donc installer NodeJs. Mais surtout, n'installez pas nodejs directement depuis les depôts d'Ubuntu ou depuis les sources du site officiel, puisque la version currente est en 0.10., et Persona n'est compatible qu'avec les 0.8. pour le moment.

La meilleure façon de faire m'a été donnée par Shane Tomlinson, et elle consiste à déléguer la gestion des versions de Node.js installées sur le système à un simple programme : nvm. Ce dernier peut installer plusieurs versions de Node, et il est ensuite possible de lui préciser quelle version utiliser.

Pour l'installer, suivez les instructions disponibles sur le site officiel. Pour faire simple, voici les commandes à taper :

╭────<quack@spiderman >───< ~/work/softs > ╰───[18:17:47] $ git clone http://github.com/creationix/nvm.git nvm ╭────<quack@spiderman >───< ~/work/softs > ╰───[18:17:58] $ echo '. /home/quack/work/softs/nvm/nvm.sh' > ~/.zshrc

N'oubliez pas de modifier la dernière commande pour coller à l'emplacement où vous avez cloné les sources et à l'emplacement du fichier de configuration de votre shell (par défaut, sur Ubuntu, c'est ~/.bashrc). Démarrez un nouveau terminal et la commande nvm devrait marcher.

Après ceci, installez la dernière version de Node.js supportée, et définissez la comme version par défaut :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:19:30] $ nvm install 0.8.12 ╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:19:49] $ nvm alias default 0.8.12

Maintenant, vous pouvez installez tous les modules Node.JS nécéssaires à Persona. Déplacez vous dans le répertoire racine où vous avez cloné browserid, et lancez la commande suivante :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:20:15] $ npm install

Et, normallement, tous les modules sont installés et vous pouvez travailler! Si vous voulez lancer les exemples donnés dans les sources :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:20:20] $ npm start

L'application Web d'exemple est accessible à http://localhost:10001, et le serveur Browserid est à http://localhost:10002.

Mais le module bcrypt ne marche pas...

Si, durant le npm install, vous avez une erreur du type "Impossible d'installer le module 'bcrypt'", essayez d'importer la bonne version directement :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:20:20] $ npm install bcrypt@0.7.3

Refaites un npm install, et si ça ne marche toujours pas, nous allons essayer de l'installer manuellement.

Pour faire simple, les commandes suivantes vont : cloner les sources, configurer la compilation, compiler les sources, et ré-installer bcrypt avec npm.

╭────<quack@spiderman >───< /tmp > ╰───[18:20:20] $ git clone http://github.com/ncb000gt/node.bcrypt.js.git ╭────<quack@spiderman >───< /tmp > ╰───[18:21:20] $ cd node.bcrypt.js ╭────<quack@spiderman >───< /tmp > ╰───[18:22:20] $ npm install -g node-gyp ╭────<quack@spiderman >───< /tmp > ╰───[18:23:20] $ node-gyp configure ╭────<quack@spiderman >───< /tmp > ╰───[18:24:20] $ node-gyp build ╭────<quack@spiderman >───< /tmp > ╰───[18:25:20] $ cd ~/work/workspace/mozilla/browserid ╭────<quack@spiderman >───< /tmp > ╰───[18:25:22] $ rm -rf var node_modules ╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:26:20] $ npm install

Normallement, après cette dernière étape, tout devrait normalement marcher avec un npm start.

Mettre à jour ses sources

Désormais, à chaque fois que vous voudrez mettre à jour vos sources, vous devrez réinstaller les modules Node pour utiliser les dernières versions demandées par Persona.

Le processus de mise à jour sera donc :

╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:23:20] $ git pull mozilla dev ╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:31:20] $ rm -rf var node_modules ╭────<quack@spiderman >───< ~/work/workspace/mozilla/browserid > ‹dev› ╰───[18:32:20] $ npm install

Et voilà, il est temps de travailler sur le code maintenant!

 

_ Si vous trouvez quelques fautes, ou si vous voulez plus de précisions, n'hésitez pas à m'envoyer un email, me contacter sur Twitter, ou à joindre le canal IRC de l'équipe Identity : #identity@irc.mozilla.org. Les mecs qui en font partie et qui travaille sur Persona sont tous supers cools et toujours près à vous aider!_

Un merci tout particulier à Shane Tomlinson qui a passé tout son samedi après midi sur IRC à m'aider à installer cet environnement!

Pour plus d'infos, vous avez également le README disponible sur le dépôt GitHub du projet

Je viens d'avoir un nouvel ordinateur professionnel. Il s'agit d'un PC portable Dell Precision M4700. Il est composé d'une carte graphique AMD FirePro M4000, de 8Go de RAM, d'un disque dur 750Go Sata et surtout d'un disque dur 250Go SSD. Bref, une petite foudre. Du coup, je me suis décidé à installer la toute dernière version d'Ubuntu (13.04) avec non pas Unity mais Gnome Shell. Depuis plus de 6 ans, j'utilisais Gnome 2. Le changement a donc été plutôt radical. Dans cet article, je vais parler de ma découverte de ce nouvel environnement et des modifications que j'y ai apporté afin qu'il me convienne.

48px-Gnome-logo.png

I. Installation et découverte de Gnome Shell

Comme Gnome Shell n'est pas installé par défaut dans Ubuntu (et que je n'aime pas Unity), j'ai déjà dû commencer par l'installer avec la commande suivante :

apt-get install gnome-shell

Une fois installé, je déconnecte ma session utilisateur et je choisis Gnome lors de ma reconnexion. Ensuite, cette préférence sera conservée automatiquement.

Ma première impression : "ah... y a que ça ?" ! J'ai été vraiment surpris du fait qu'il n'y ai rien du tout sur le bureau. Aucune icône, pas de barre des programmes en bas de l'écran, pas de menu Programmes, Raccourcis ou Système en haut de l'écran. Juste un bouton Activités qui me donne un écran presque noir en cliquant dessus. Bref, rien de chez rien. Quel changement !

vide.png

Bon, du coup, j'explore un peu tout seul. Je vois que la touche Super ouvre la même fenêtre que le menu Activités et je vois qu'en tapant le nom de mes programmes dans cette fenêtre noire, ils s'affichent. Je pense donc que c'est la nouvelle philosophie du truc : plus d'icônes, plus de raccourcis, on ouvre cette fenêtre et on tape le nom de notre application, c'est tout. Plus de barre des tâches, on gère tout avec le Alt+Tab. Bref, je n'aime pas du tout cette façon d'utiliser mon ordinateur.

En regardant un peu sur Internet, je me rends compte que pas mal d'extensions sont disponibles avec Gnome Shell. Elles permettent de personnaliser son apparence et son comportement . Ce sont ces extensions qui m'ont fait adopter ce gestionnaire de fenêtres.

II. Les extensions Gnome Shell

Il y a vraiment un truc qui m'a bluffé avec ces extensions, c'est l'interface web qui permet de les installer/configurer/supprimer. Vous pouvez tout faire directement depuis la page web en question. Voici la liste des extensions que j'ai installé et à quoi elles correspondent :

  • Activities Configurator : permet de supprimer le menu Activités en haut à gauche et de désactiver le Hot Corner. Le Hot Corner fait en sorte que quand le curseur est tout en haut à gauche de l'écran, cela éclate toutes les fenêtres du bureau en miniature (c'est super chiant je trouve) ;
  • Alternative Status Menu : modifie le menu déroulant qui permet d'éteindre l’ordinateur pour y ajouter une entrée de mise en hibernation ;
  • Applications Menu : l'équivalent du menu Applications dans Gnome 2 ;
  • Battery remaining time and percentage : affiche le pourcentage de charge de la batterie ainsi qu'une estimation du temps restant avant coupure ;
  • Dash to Dock : un dock super pratique qui se cache si une fenêtre est devant lui et qui se positionne à gauche de l'écran ;
  • Drop Down Terminal : un terminal qui descend de l'écran (comme tilda) en tapant sur la touche "carrée" (au dessus de Shift - du coup je ne peux plus taper ce caractère maintenant) :) ;
  • Hide Clock aka dateMenu : supprime la date et l'heure en haut de l'écran. Vous le verrez plus bas, je l'affiche dans la barre des tâches ;
  • NetSpeed : un indicateur des bits envoyés et reçu en temps réel ;
  • Places Status Indicator : l'équivalent du menu Raccourcis dans Gnome 2 ;
  • Remove Accessibility : supprime le menu d’accessibilité dans la barre en haut ;
  • User Themes : une extension nécessaire pour changer le thème de Gnome Shell (que j'expliquerai ensuite) ;
  • Weather : affiche une icône de la météo dans ma ville (bon ça, ça sert pas à grand chose) ;
  • Workspace Grid : permet de paramétrer l'organisation de ses espaces de travail ;
  • Workspace Indicator : affiche l'espace de travail sur lequel on se trouve dans la barre en haut.

III. La barre des tâches

Je n'arrive pas à me passer de la barre des tâches en bas de mon écran. Sans elle, je perds mes fenêtres et ça me soûle de devoir les rechercher sur mes différents espaces de travail (surtout que j'ai 4 espaces * 2 écrans, ça fait beaucoup)... J'ai vu qu'il existait une extension Gnome pour ajouter une nouvelle barre : Frippery Bottom Panel. Malheureusement, cette barre n'est presque pas paramétrable. Sa taille, sa couleur ou sa transparence ne peuvent pas être changées, du coup, elle s'intégrait mal avec mon thème Gnome. J'ai donc cherché autre chose et j'ai trouvé mon bonheur : tint2, une barre des tâches légère et très paramétrable.

Pour l'installer, c'est simple, un sudo apt-get install tint2 fera l'affaire. Ensuite pour le lancer, il suffit de taper la commande tint2 dans un terminal (ou dans Alt+F2).

Je n'ai presque fait aucune modification de configuration. Comme je l'ai dit, on peut aller très très loin dans sa configuration mais moi, sa conf de base me convenait très bien. J'ai juste modifié ces deux lignes du fichier de configuration (~/.config/tint2/tint2rc) :

  • panel_monitor = 1 au lieu de panel_monitor = all pour n'afficher la toolbar que sur un seul écran ;
  • task_centered = 0 au lieu de task_centered = 1 pour aligner les noms des programmes à gauche.

Voila c'est tout.

IV. Le thème

Par défaut, Gnome Shell est tout noir, partout. J'ai trouvé ça un peu trop sombre. Moi j'aime bien les barres transparentes. Du coup, après avoir un peu cherché dans les thèmes GTK 3.x, j'ai adopté un thème que je trouve magnifique : Zukitwo.

Une fois ce thème téléchargé, j'ai dû créer un dossier ~/.themes/ dans lequel j'ai le l'ai extrait. Ensuite, j'ai utilisé l'application Tweak Tool (installé via sudo apt-get install gnome-tweak-tool) pour sélectionner ce thème. Voici d'ailleurs mes paramètres de thème complets :

tweak.png

V. Le résultat

Je parle, je parle mais il est temps d'illustrer mes propos. Voici le résultat final de mes différentes modifications :

Capture_du_2013-05-24_10_56_17.png

C'est sobre, c'est simple, c'est bien :)

VI. Derniers détails

J'ai utilisé Tweak Tool pour faire d'autres modifications, comme par exemple afficher les icônes sur le bureau, je ne vais pas tout détailler ici.

Une chose importante, comme je vous l'ai dit, il faut lancer la commande tint2 pour que la barre des tâches se lance. Si j'utilise l'outil des programmes au démarrage de gnome et que je lance tint2 directement, la transparence ne fonctionne pas et j'ai une barre des tâches noire. Il semble qu'il faille un délai entre le démarrage de l'OS et la lancement de tint2. J'ai donc fait un tout petit script que je lance au démarrage (via l'utilitaire Applications au démarrage d'Ubuntu). Le voici :

#/bin/bash
#on change la disposition du clavier pour corriger le bug avec les claviers sans fil logitech
setxkbmap fr -variant oss
sleep 2
#on affiche la barre des taches en bas de l'écran
tint2
sleep 2
#on fait un trimming pour ne pas diminuer les perf du disque SSD
fstrim /

Ce qui est intéressant pour notre cas ici c'est le sleep 2 et le tint2 après, c'est à dire que le tint2 se lance 2 secondes après le lancement du script. Avec ce délai, la transparence est bien prise en compte.



Voila, je pense avoir fait le tour de mes modifications. Mon Gnome Shell me convient bien comme il est actuellement. Si vous avez des questions ou des remarques, comme d'hab', vous n'hésitez pas.

À bientôt !

24 Mai 2013 à 09:12

Tunneliser GPG dans un proxy SOCKS via Quack1

 

Au travail, ne me demandez pas pourquoi, le firewall bloque par défaut le port dédié à hkp (11371/tcp), utilisé notamment pour récupérer des clés GPG. (Bon, par contre, on peut accéder à Mega... :sifflote:). Bref, c'est un peu casse-bonbons pour fetcher des clés et surtout mettre à jour des listes de paquets sur mon Ubuntu, puisqu'apt a besoin des clés GPG pour authentifier les serveurs.

La solution à laquelle j'ai pensé est de faire passer les communications de gpg dans mon proxy SOCKS (monté par ssh, plus d'infos pour monter le proxy ici). Pour cela, on rajoute une simple option gpg pour définir l'URI du proxy socks :

╭────<quack@spiderman >───< ~ > ╰───[17:13:13] $ gpg --keyserver-options http-proxy=socks5-hostname://127.0.0.1:1080

Et, pour revenir au problème initial, pour ajouter une clé gpg pour apt, on rajoute la même option que pour gpg :

╭────<quack@spiderman >───< /etc/apt/sources.list.d > ╰───[17:25:35] $ sudo apt-key adv --keyserver-options http-proxy=socks5-hostname://127.0.0.1:1080 --keyserver keyserver.ubuntu.com --recv-keys C383CF524EE6B458

Source

24 Mai 2013 à 09:12

Tunneliser GPG dans un proxy SOCKS via Quack1

 

Au travail, ne me demandez pas pourquoi, le firewall bloque par défaut le port dédié à hkp (11371/tcp), utilisé notamment pour récupérer des clés GPG. (Bon, par contre, on peut accéder à Mega... :sifflote:). Bref, c'est un peu casse-bonbons pour fetcher des clés et surtout mettre à jour des listes de paquets sur mon Ubuntu, puisqu'apt a besoin des clés GPG pour authentifier les serveurs.

La solution à laquelle j'ai pensé est de faire passer les communications de gpg dans mon proxy SOCKS (monté par ssh, plus d'infos pour monter le proxy ici). Pour cela, on rajoute une simple option gpg pour définir l'URI du proxy socks :

╭────<quack@spiderman >───< ~ > ╰───[17:13:13] $ gpg --keyserver-options http-proxy=socks5-hostname://127.0.0.1:1080

Et, pour revenir au problème initial, pour ajouter une clé gpg pour apt, on rajoute la même option que pour gpg :

╭────<quack@spiderman >───< /etc/apt/sources.list.d > ╰───[17:25:35] $ sudo apt-key adv --keyserver-options http-proxy=socks5-hostname://127.0.0.1:1080 --keyserver keyserver.ubuntu.com --recv-keys C383CF524EE6B458

Source

Pages