Microsoft à la conquête des développeurs : des succès mais quelques ratés
De WSL à winget
Le 19 août 2020 à 08h13
10 min
Logiciel
Logiciel
Microsoft veut faire de Windows 10 la plateforme idéale pour les développeurs. Pour cela l'entreprise a misé sur l'open source, allant jusqu'à racheter GitHub et npm. Cela passe également par la création d'outils comme le sous-système Linux, le nouveau Terminal ou winget. Mais tous n'évoluent pas au même rythme.
Si Windows est le système d'exploitation de référence pour les ordinateurs grand public, ce n'est plus le cas sur d'autres marchés. Il y a bien entendu les serveurs, qui exploitent massivement Linux. Mais aussi les appareils sous Android, lui-même basé sur le système libre (à travers AOSP). Mais il y a pire signal pour Microsoft.
Microsoft ❤ Développeurs
Car depuis de nombreuses années, il est devenu très courant de voir des développeurs sous Linux ou macOS (basé sur FreeBSD). Les raisons sont diverses, mais certaines tiennent directement à la stratégie du géant américain qui a négligé pendant de longues années plusieurs aspects chers à ce public particulier.
On pense par exemple à l'invite de commandes de Windows qui n'avait guère évolué, si ce n'est pour tenter d'imposer PowerShell. Au téléchargement et à l'installation de logiciels, qui est longtemps passée par des exécutables à récupérer en ligne sans aucune procédure de sécurité. À Visual Studio, un IDE très complet, mais pas franchement le plus adapté pour du développement web ou de petites applications. La liste est longue.
- Metalink, aria2 et uGet : le téléchargement, autrement
- Comment télécharger un fichier en vérifiant son empreinte via aria2
Résultat, l'écosystème maison est passé à côté de quelques révolutions, se retrouvant écarté de différentes manières. C'est ce qui l'a décidé à mener un travail de fond ces dernières années, reposant largement sur l'open source en licence MIT. Mais malgré la bonne volonté du groupe, tout ne se passe pas toujours comme prévu.
Sous-système Linux : Windows 10, nouvel OS à tout faire
Il y a tout d'abord les projets qui ont réussi. On pense notamment au sous-système Linux (WSL), récemment passé dans sa version 2 et qui a évolué dans le bon sens depuis ses débuts en 2016.
Il s'agit d'une couche de virtualisation, disponible dans toutes les éditions de Windows 10, permettant d'utiliser Linux en lignes de commandes (bientôt avec accélération GPU et interfaces graphiques) sans quitter l'écosystème Microsoft. L'ensemble est simple à installer et utiliser, ce qui devrait encore se renforcer dans les mois à venir. WSL est ouvert à différentes distributions, Ubuntu en tête, Microsoft et Canonical étant de plus en plus proches.
Surtout, cela ouvre la voie à des usages auparavant impossibles ou complexes sous Windows 10, comme la mise en place de conteneurs Docker par exemple. Les développeurs avaient aussi pris leurs habitudes avec de petits outils comme curl, wget, openssh, git, etc. Aucun n'était géré nativement dans l'OS de Microsoft.
Pour une part, cela a été corrigé. Pour une autre, on passe désormais par WSL. L'objectif est en bonne partie rempli : tout ce que vous pouvez faire sous Linux est également accessible depuis Windows 10 à quelques détails près. La virtualisation classique et des outils comme Multipass peuvent venir combler ce qui manque.
Concernant les utilisateurs voulant rester sur un système d'exploitation open source, ou loin des outils de Microsoft, aucun outil n'aurait de toutes façons permis de les « récupérer ». Même avec un véritable « Winux ».
- Windows 10 Mai 2020 : le nouveau sous-système Linux (WSL 2) est là, comment l'installer et l'utiliser
- Calcul sur GPU dans WSL 2 sous Windows 10 : la fonctionnalité disponible en test
Visual Studio Code : discrète arme de guerre (pour .Net Core)
WSL fonctionne d'ailleurs très bien avec un autre succès open source de l'entreprise : Visual Studio Code. Il y a quelques années, personne ne croyait qu'Atom pourrait se faire détrôner. Ce fût pourtant vite le cas. Très basique à ses débuts, l'outil a rapidement fédéré une grande communauté au-delà des langages maison.
Multiplateforme, complet, avec un système d'extension assez fourni, il est désormais de tous les tutoriels en ligne. Bien entendu, Atom continue d'avoir ses fans (GitHub ayant entretemps été racheté par Microsoft), tout comme d'autres IDE, de Notepad++ aux outils de Jetbrains par exemple. Mais VSC s'est fait une place de choix.
Il propose depuis sa dernière version stable une synchronisation multiposte (à activer volontairement) passant par un compte GitHub ou Microsoft. Il permet également de développer de manière collaborative via Live Share. Mais il peut aussi être relié au sous-système Linux, à un conteneur ou un serveur SSH via ses extensions « remote », est disponible en version ARM64, etc. Sa galerie d'extensions est disponible par ici.
Poser la prochaine brique sera plus difficile : convaincre les développeurs de l'utiliser avec la plateforme .Net Core, elle aussi open source et désormais géré par une fondation tierce. Elle peut être utilisée pour du web, une application console ou à interface graphique. Disponible sous Linux, compatible même avec un Raspberry Pi, pouvant générer du web assembly (via Blazor) et facile d'accès (via C# notamment), elle a de nombreux atouts.
Mais détrôner Node.js (entre autres) ne se fera pas facilement, d'autant que les versions 1.x/2.x étaient poussives et incomplètes. La route sera encore longue pour convaincre, mais les choses avancent dans le bon sens.
Le nouveau Terminal : celui que tout le monde attendait
L'année dernière, Microsoft surprenait son monde avec son nouveau Terminal. Là aussi, de nombreux outils avaient pris le relai – tant l'invite de commandes était dépassé – comme l'excellent Cmder. Il fallait donc réagir.
Après avoir modifié en profondeur son OS pour préparer le terrain, le projet était lancé (nom de code Cascadia, gardé pour sa nouvelle police). Évoluant vite, fédérant là aussi une communauté autour de lui, il a rapidement gagné en fonctionnalités, parfois vitales ou tenant du très drôle (mais totalement inutile), avec une grande capacité de personnalisation. Le tout développé en open source (sous licence MIT là encore).
La version 1.0 était publiée à la Build 2020, mais le projet était encore loin d'être finalisé. Prêt pour un usage quotidien, le nouveau Terminal manque encore d'un panneau de configuration, de nombreuses facilités et autres raccourcis, par exemple pour démarrer un onglet avec les droits Administrateur lorsque l'application n'a qu'un simple accès Utilisateur, organiser les onglets, ouvrir un panneau de commandes, etc.
Des éléments déjà dans les tuyaux, parfois disponibles en préversion (1.2.x). Mais pour réellement en profiter, vous avez intérêt à aimer manier des fichiers de configuration en JSON. Il n'a d'ailleurs pas encore été intégré à Windows 10 et doit encore être installé séparément.
winget : une belle promesse, sans plus pour le moment
Reste le parent pauvre de la stratégie de Microsoft envers les développeurs : la distribution des applications. Empêtrée dans ses applications universelles (désormais via le projet Réunion) et son Store depuis des années, l'entreprise n'avait au départ rien intégré pour y diffuser des applications classiques.
Rien non plus pour les amateurs de lignes de commandes. Pour rappel, dans de nombreuses distributions Linux, installer et mettre à jour toutes les applications et le système est aussi simple que ça :
La mise à jour sous Fedora/Ubuntu :
===================================
dnf upgrade
apt update && apt full-upgrade
L'installation d'applications sous Fedora/Ubuntu :
==================================================
dnf install vlc
apt install vlc
Trouver et installer de nouvelles applications se fait de la même manière. Des interfaces graphiques, sous forme de pseudo-boutiques, sont également proposées. On peut y utiliser des dépôts tiers et autres miroirs, faisant de l'ensemble une infrastructure décentralisée, avec une couche de sécurité assurée par des empreintes et GnuPG.
Bref, le retard était énorme. Plusieurs projets ont émergé ces dix dernières années, mais aucun n'a réellement donné de résultats probants. C'est finalement un outil tiers qui s'est imposé comme une référence dans l'écosystème Windows : Chocolatey. Puis, à la Build 2020, Microsoft a dévoilé son winget.
La promesse était celle d'un gestionnaire de paquets complet, fonctionnant pour des applications classiques comme pour le Store officiel, avec installation, mise à jour et désinstallation. Une première version 0.1 était diffusée, la feuille de route était claire : une nouvelle mouture chaque mois jusqu'à la 1.0 au printemps 2021.
Mais voilà, un trimestre plus tard nous en sommes toujours à la v0.1.42101-preview, la troisième sortie depuis mai. Les nouveautés se comptent sur les doigts d'une main et ne sont pour la plupart qu'une préparation du terrain pour ce qui doit suivre. Comme feature toggle
, ajoutée en prévision de prochaines nouveautés devant être testées avant d'être généralisées. Ou settings
, qui... ouvre le fichier JSON contenant les paramètres.
Pour le reste, c'est aussi creux que lors de notre premier essai, même si une application correspondant exactement au nom tapé dans la commande sera désormais installée directement. Mais pour disposer d'une possibilité aussi basique que l'installation de plusieurs applications en une seule ligne de commandes, nous avons dû développer notre propre script PowerShell en attendant une gestion native...
Sur GitHub, un contributeur, employé de Microsoft, nous a confirmé que les dates étaient « ambitieuses » et que la feuille de route serait mise à jour d'ici quelques semaines. La v1 est toujours attendue entre mars et mai 2021.
Il y a néanmoins quelques bonnes nouvelles sur le front de winget. D'abord, l'implémentation des manifestes pour l'installation d'applications depuis le Store est achevée et en test. Cela ne devrait plus tarder. Il nous a été confirmé qu'il s'agissait de l'une des priorités actuelles avec la mise à jour, la désinstallation, l'import/export et la gestion des dépendances (quand une application nécessite qu'une autre soit également installée).
Depuis cette première version, peu d'évolutions...
Les évolutions en cours montrent qu'il en est de même pour la gestion des applications avec plusieurs canaux (stable, beta, dev, etc.). Idem pour celles n'ayant pas d'installeur et distribuées sous forme d'un exécutable unique, d'une archive (.zip ou autre) ou même une Progressive Web App (PWA).
Autre point appréciable : la liste des applications gérées s'allonge quotidiennement. On y trouve désormais 710 éléments selon notre dernier décompte, avec toutes celles dont on peut avoir besoin au quotidien, que ce soit pour un utilisateur lambda, un joueur ou un développeur. On y trouve aussi bien des outils propriétaires qu'open source. Vous pouvez d'ailleurs contribuer en publiant vous-même votre propre manifeste.
Microsoft à la conquête des développeurs : des succès mais quelques ratés
-
Microsoft ❤ Développeurs
-
Sous-système Linux : Windows 10, nouvel OS à tout faire
-
Visual Studio Code : discrète arme de guerre (pour .Net Core)
-
Le nouveau Terminal : celui que tout le monde attendait
-
winget : une belle promesse, sans plus pour le moment
Commentaires (32)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 19/08/2020 à 08h36
Même si ça reste toujours dans un objectif purement commercial, ça reste sympathique de voir Microsoft proposer de nouveaux outils pour les dev, WSL, WT et VsCode étant vraiment agréables à utiliser au quotidien :)
Le 19/08/2020 à 08h38
Merci pour ce récap, j’était passé a coté de pas mal de chose.
Pour ma part j’utilise chocolatey, mais si ils arrivent à sortir un winget solide pourquoi pas.
Le 19/08/2020 à 08h39
Je suis toujours là pour aider chacun à se mettre à niveau alors que la rentrée arrive
Le 19/08/2020 à 08h41
Je développe des applis (pas mal de python, mais parfois aussi du web ou de l’android) sous Linux, et je joue sur Windows. Je vois que ça devient possible de tout faire sur Windows, mais j’imagine que c’est au prix de quelques heures à passer à configurer sa machine pour que ça sois transparent par rapport à mon utilisation de Linux.
Peut-être que je me laisserai tenter, à réfléchir.
Le 19/08/2020 à 09h16
C’est un truc que je ne précise pas, mais Python est disponible via le Microsoft Store désormais (et winget). Fun fact : VSCode n’est pas dans le Microsoft Store
Oui la couche réseau reste encore un des points problématiques de WSL, mais des travaux sont en cours là dessus (c’est aussi pour ça que Remote Containers/WSL a été développé je suppose).
Oui, depuis quelques versions déjà de mémoire. Windows + CTRL + D pour créer, Windows + CTRL + fleche gauche/droite pour naviguer.
Le 19/08/2020 à 08h44
Bonjour,
Sans être un fan-boy j’apprécie la plate-forme win10. Cependant il reste du chemin à faire.
WSL2 + docker fonctionne quand il n’y a rien d’autre sur le poste c’est vrai, mais quand il y a 1 VPN + 1 firewall + 1 antivirus (Ce qui est le plus souvent le cas dans une entreprise) cela deviens très difficile de faire fonctionner tout cela ensemble.
J’ai aussi rencontré pas mal de problème d’erreurs (assez inexplicables) au démarrage des containers.
Enfin le répertoire “home” de l’utilisateur WSL2 est localisé …. Quelque part sur le disque. Donc si vous voulez y accéder avec votre explorateur de fichier win, il vaut mieux oublier.
Bref on a quand même plus l’impression d’avoir une VM séparé sur son poste (ce qui est techniquement le cas) qu’un environnement unique/unifié pour travailler.
Le 19/08/2020 à 11h01
Il ne faut surtout pas essayer d’y acceder via ton ton disque dur car tu bypasserais la couche de traduction des ACL entre Windows et Linux.
A la place, tu as un partage réseau administratif que tu peux utiliser pour accéder à tous les fichiers de ta distrib. Par exemple pour ton home tu peux utiliser ca :
\\wsl$\Ubuntu\home\me
Le 19/08/2020 à 08h44
Je n’ai accès à un windows qu’au boulot (et c’est un 7…), ma question en tant que dev est la suivante: y a-t-il dans 10 du multi-bureaux dynamique (ou est-ce dispo autrement)? Pour moi (et de ce que je vois là plupart de mes collègues, car oui, nous sommes tout un département à développer sur Red Hat ) c’est un prérequis catégorique !
Le 19/08/2020 à 08h48
Merci pour cet article très complet. Ça ne me fera clairement pas abandonner mon Linux mais il y a de bonnes choses côté W—–s. En attendant l’installation d’applications et surtout leur maintenance est toujours très en retard sur les plateformes proprio que sont macOS et Windows.
Si tu parles des bureaux virtuels oui ça existe depuis 2015. Ils ont présenté ça comme une révolution à l’époque. Mouarf.
Le 19/08/2020 à 08h56
C’est bien cela. Je verrai si c’est dispo (autorisé DSI) quand l’on m’aura fourni mon nouveau terminal d’accès à Outlook sous W10
Le 19/08/2020 à 09h28
Les multi-bureaux étant natifs à W10 et accessibles pour tout user, y a pas de raison que tu ne puisses le faire.
Ctrl+Win+D pour créer un bureau, Ctrl+Win+Gauche ou Droite pour naviguer entre bureaux, le Win+Tab offre une vue générale des fenêtres dans tous tes bureaux.
A noter une lenteur de Win+Tab en multi-screen, au point de croire que le raccourci n’a pas été pris en compte ^^
Arf. grilled par notre ami David
Pour en revenir à la news, si ma tour reste sous W10 (LTSC, nothing else) c’est uniquement pour le jeu.
J’ai joué sous Linux avec cette même tour pendant 6 mois mais les pertes en perfs, la configuration indispensable pré-lancement d’un jeu ou encore les jeux non supportés m’ont fait revenir sous W10.
On peut parfaitement développer sous Linux sans Windows, autant s’en passer pour du dev.
Mon laptop tourne sous Mint Cinnamon et ce n’est pas prêt de changer.
Concernant les utilisateurs voulant rester sur un système d’exploitation open source, ou loin des outils de Microsoft, aucun outil n’aurait de toutes façons permis de les « récupérer ». Même avec un véritable « Winux ».
Le 19/08/2020 à 10h42
Et TypeScript ! Microsoft nous a bluffé tout de même là dessus ! Il joue quand même sur 2 tableaux avec .Net et le JavaScript typé. Pas sur qu ils veuillent enterrer nodejs, au contraire !
Et que dire de Teams qui est full JS aussi, Office 365 qui suit le même chemin…
Le 19/08/2020 à 14h11
J’imagine que ça fait partie des changements depuis l’ère Balmer, MS lâche la bride à ses ingénieurs qui du coup, avec une plus grande autonomie qu’avant, peuvent innover là où on ne les attend pas. Ce qui donne peut-être une stratégie d’ensemble moins homogène et des divisions qui peut-être, parfois, entrent en concurrence comme TypeScript / .NET. À un moment on se rend compte que la concurrence est bénéfique et que tout n’est pas qu’une histoire de parts de marché.
Le 19/08/2020 à 10h48
Pour ce qui est des sous-systèmes linux, c’est pas encore ça… J’ai rencontré un bug avec rsync (blocage du process, il faut envoyer un signal ou redimensionner la fenêtre pour le débloquer… Puis ça re-bloque quelques ms après), l’issue est ouverte sur github depuis 2018 de mémoire, et pas de nouvelle… Ça fait pas très sérieux, de développer de nouvelles choses et de laisser les précédentes dépérir.
De toutes façon, j’ai arrêté windows il y a 10 ans, et depuis, dès que j’ai touché à un windows, je n’ai fait qu’apporter des plantages que même les meilleurs n’arrivent pas toujours à expliquer
Le 19/08/2020 à 12h25
Ce genre de bugs est en cours de résolution, mais ça prend énormément temps vu que WSL 2 tourne dans une VM et qu’il y a toute une couche de traduction d’appels systèmes pour faire la liaison avec Windows.
C’est ce qui fait que les performances de WSL 2 sur le système de fichiers natif de Windows en NTFS sont aussi mauvaises d’ailleurs, mais Microsoft travaille dessus.
Le 19/08/2020 à 11h13
Pour Terminal, il lui manque la fonctionnalité de rouvrir la session précédemment fermée. Sans ça je reste sur Cmder.
Le 19/08/2020 à 11h50
La prochaine étape serait de pouvoir modifier le gestionnaire de bureau, de fenêtre, de fichiers (explorer.exe). S’il y avait un équivalent de i3/sway sur Windows ça pourrait m’intéresser.
Le 19/08/2020 à 12h26
Fancy Zones de PowerToys ne ferait-il pas le taf ?
GitHub
Le 19/08/2020 à 12h56
“À Visual Studio, un IDE très complet, mais pas franchement le plus adapté pour du développement web”
Quels sont les griefs envers la version actuelle (hors support php)?
Le 19/08/2020 à 14h14
Ce que je dis c’est que pour pas mal de projets, un VSC suffit. À l’époque, cela n’existait pas, d’où la création et la coexistence des deux outils
Le 19/08/2020 à 14h14
Alors, disclaimer ça fait des lustres que je ne l’ai pas utilisé, mais comme ça je dirais, la lourdeur / conso mémoire / temps de démarrage ? (Comparé à vscode)
Le 19/08/2020 à 16h53
A fonctionnalités “équivalentes” (donc VS Code avec les plugins qui vont bien vs VS 2019) je préfère VS 2019 pour gérer mes projets. Pas vraiment plus long à démarrer, finalement pas plus lourd.
Le 19/08/2020 à 15h05
Je ne trouve pas Visual Studio Code trés bon après je me doute que pour faire de l’informatique de surface genre des sites web en php ou encore pour visualier des json ce genre de trucs.
Le 19/08/2020 à 15h29
VSCode a su générer un énorme écosystème de plugins qui le rend attractif bien au-delà de ça. Je le vois utilisé pour du JS, du Go, du Rust, même du Java. Après, les goûts et les couleurs bien sûr …
Le 19/08/2020 à 15h31
Je suis full Windows 10 dans ma boîte actuelle (enfin ça fait 4 ans quand même) alors que j’avais toujours bossé sous Linux et … Linux me manque.
Mais il faut quand même bien reconnaître que Microsoft va dans une très bonne direction et y va très très vite.
Mon seul reproche en tant que dev web front c’est TypeScript qui devient une usine à gaz. Le langage en lui même est vraiment sympa mais le compilateur/parseur a tendance à monter très haut dans les tours en emportant avec lui l’IDE (point bonus si c’est vscode) sur des projets de taille tout a fait raisonnables (moins de 1M de LOC).
Netcore j’en fait pas quotidiennement mais à chaque fois que je dois en faire je suis à la fois fasciné par la simplicité, l’excellente documentation et la maturité des frameworks fournis et tout aussi horrifié par … la documentation, aussi.
Je sais pas comment ils font : la doc est parfois hyper claire, exhaustive et parfois totalement alambiquée, sans exemples ou extrêmement complexes, mélangeant les sujets et le tout parfois en traduction automatique sans l’indiquer clairement.
En bref, je suis mitigé, mais mitigé chaud 🙂
Le 19/08/2020 à 20h56
Ok pour les efforts avec VsCode, .Net core, …
Mais le terminal, on ne peut pas dire qu’on l’attendait. Il est même assez décevant en fait.
Mais c’est vrai que ce n’est as spécialement une priorité.
Par ailleurs, j’ai du mal avec les initiatives Ms tous azimuts côté Linux, Azure, on ne sait plus trop où donner de la tête.
Le 20/08/2020 à 11h26
Depuis cette première version, peu d’évolutions…
Il est pas bien le nouveau terminal pour utiliser Winget?
Le 20/08/2020 à 11h39
Si mais j’avais fait la capture avec l’invite classique ;)
Le 20/08/2020 à 12h57
Eh bien après quelques péripétie, j’ai finalement réussi à migrer mon environnement de dev (principalement du PHP/JS) au complet sur WSL / Ubuntu et je dois dire que c’est plutôt pas mal.
Au lieu de me prendre la tête à configurer WAMP et accéder à ma DB via putty, maintenant tout est centralisé, et ya pas à dire, linux pour les update / installation de framework et j’en passe c’est quand même plus simple.
Le 20/08/2020 à 13h24
Pas de quoi, heureux que ça serve
Le 20/08/2020 à 13h34
Quel était l’intérêt d’accéder à la bdd avec putty ? Je me tâte aussi à passer de wamp vers WSL
Le 20/08/2020 à 14h23
Pour mon projet actuel je travail avec un MariaDB hébergé sur une VM linux, du coup j’accédais au serveur via putty.
Du coup j’ai cloné la DB sur la distrib WSL comme ça j’ai tout au même endroit, ce qui m’évite de jongler avec les IP