MyDesktop : un autre menu Démarrer pour Windows

Voici mon nouveau développement: MyDesktop. Cet outil permet de visualiser les applications installées sur le poste. Sur la partie gauche, on y trouve les différents groupe et les liens. La première partie droite présente le lien en détail avec son icone. Le deuxième panneau présente la totalité des applications. L’autre visualisation permet de voir les applications sous forme de carrés de couleur. Il y a une fonctionnalité de recherche aussi.

Le code est disponible sur GitHub: https://github.com/ChristophePichaud/MyDesktop

L’application est réalisée en C++ avec les MFC. Pourquoi les MFC ? Parce que les MFC permettent de développer rapidement et de manière efficace. De plus, j’avais des classes de dessin à réutiliser d’un autre projet. En effet, les carrés de couleur sont des “shapes” graphiques qu’il est possible de déplacer et de retailler en dimension. Ces classes tirent parties des MFC.

Il ne me reste plus qu’une fonctionnalité à ajouter : le lancement des applications. Ce n’est pas très dur, il suffit de faire un CreateProcess du lien…

Stay tuned.

Applications multi-plateformes ? HOWTO ?

Pour développer des applications multi-plateformes, il n’y a pas cinquante choix possibles, il n’y en a qu’un seul qui est gratuit et performant : c’est C++.

Seul le C++ permet de tirer partie des dernières nouveautés des SDK Windows, Linux, Android et iOS car le système et son environnement sont faits avec. L’avantage de C++ est qu’il <<build on the metal>> : il n’y a pas plus rapide. C++ tire partie de l’architecture logicielle des systèmes d’exploitation et matérielle des derniers processeurs x86, x64 et ARM. Cela fait quarante ans que les optimiseurs de code C++ garantissent la meilleur qualité de code possible.

C est le nouvel assembleur. C++ permet l’orientée objet : abstractions, héritage et polymorphisme (fonctions virtuelles), surcharge d’opérateurs, templates. Avec sa librairie STL (Standard Template Library) et conjointement avec une librairie comme Boost (boost.org), le C++ possède une boite à outil universelle qui gère les strings, containers (collections), algorithmes, les I/O, les threads, les smart pointers, les communications, etc.

Passez le pas. Installez Visual C++ sous Windows, GCC sous Linux, XCode sous Mac et partagez du code métier. Réalisez des interfaces graphiques riches et tirez partie du meilleur langage de développement qu’est C++.

Vous allez me dire il existe des solutions hybrides comme NET ou Java ? Ces solutions sont un ensemble de mille feuilles lourds et lents qui ne permettent pas de créer des applications de classe mondiale. En automobile, y a les Fiat 500 et les Ferrari. A prix égal (voir moins cher), vous prenez quoi? Y a pas photo…

Contribution Windows/Terminal en C++

Le projet Windows/Terminal est disponible sous GitHub en early alpha stage… Les contributions open-source sont les bienvenues. J’ai décidé de contribuer.

J’ai rempli une issue avec des trucs à faire : https://github.com/microsoft/terminal/issues/1058

et puis on m’a affecté une branche, après discussion, et puis une fois le code effectué (8j de dev), j’ai fait un Pull Request: https://github.com/microsoft/terminal/pull/1161

Après la phase de code review (Microsoft est très exigeant) et les tests unitaires, mon PR a été accepté et mergé.

Je suis officiellement contributeur sur le code source de Windows.

Fier. Content. Heureux. 🙂

La suite ? Il y a encore pleins de // TODO MSFT, je rempile…

Code Review Microsoft : Le diable se cache dans le détail

En ce moment, je contribue au code source Microsoft de Windows Terminal. Le projet est en open-source sur GitHub et Microsoft accepte les contribution externes.

J’ai commencé par observer le code source qui est assez important et puis j’ai opté pour la création d’une issue suite à des commentaires dans le code qui disaient “changer ci, changer ça, TODO MSFT, etc”.

Après plusieurs jours de réflections, j’ai commencé de jardiner dans le code. Tu modifies un fichier cpp , un ou deux fichier .h et puis les classes utilisatrices ont des changements à répercuter. Bref, tu modifies 15 fichiers au final pour un juste petit changement… Mon premier commit a été massif mais ce fut libérateur. J’ai réalisé que je pouvais le faire. D’un autre côté, cela fait plus de 15 ans que j’ai accès au code source de Windows, donc avec le temps ça serait malheureux de ne pas y arriver… ça serait une faute depuis tout ce temps !

Le temps du Pull Request est venu… C’est le moment ou tu remontes les changements de ta branche chez le projet principale et là, tu décris tes corrections et tu passes par la revue de code ou code review et là, chez Microsoft c’est impitoyable…

Exemple sur l’utilisation de smart pointers:

  • ne pas mettre de pointeur, passer un smart pointer
  • ne pas passer un smart pointeur si une réfrence suffit
  • mettre les ref en const
  • oter les copies de variables inutiles

Au départ, j’avais fait pas de changement et mis des smart pointers là ou des références pouvaient sufir… Le code a été revu. Doc ici: https://herbsutter.com/2013/06/05/gotw-91-solution-smart-pointer-parameters/

Comme je disais sur le réseau social LinkedIn, contribuer au code source Windows, c’est exigeant, c’est un autre métier… On m’en a voulu pour ces paroles car on pensait que je critiquais les sociétés de services. Non… ce n’est pas ça. Le code review de Microsoft est impitoyable, rien n’est laissé au hasard. C’est impressionnant. Et pourtant, je fais du code review, je fais même du coaching en code review. C’est mon dada et bien là, je me suis retrouvé avec pleins de requests changes…

Un PR à moi: https://github.com/microsoft/terminal/pull/1161