Développement compliqué sous Windows

Corrigez-moi si je me trompe, mais il me semble que sous MacOS (et accessoirement iOS), il n'y a qu'une méthode officielle de développement, cela consiste à télécharger Xcode incluant le SDK MacOS (et iOS). Il s'agit actuellement de Xcode 4.3.3 avec le SDK MacOS X 10.7. Une fois le développement terminé, ont obtiens un fichier .app contenant tous le nécessaire à l'utilisation de l'application. Celle-ci peut être téléchargée sur le Web, ou par le Mac App Store, si l'éditeur a pris la peine d'en fournir une version. Concernant la retro compatibilité, le SDK 10.7 permet de faire des applications fonctionnant sous MacOS 10.5.

Pour faire simple, chaque version de Xcode est livrée avec une version du SDK correspondant à la version courante de MacOS, avec la possibilité de choisir à partir de quelle version on souhaite pouvoir faire tourner son logiciel. C'est simple, efficace, et il n'y qu'a ce concentrer sur le développement.

Maintenant, voyons voir comment cela se passe sous Windows. Premièrement il existe plusieurs façons officielles de développer un logiciel. Avec l'API Win32 et ses différents wrapper (MFC, ATL, etc...), ou en utilisant le Framework .NET. Pour développer il faut télécharger Visual Studio qui est payant. Il existe des versions gratuites spécifiques à certains langages, VS Express C++ pour Win32, ou VS Express C#/VB pour .NET. Une fois l'application finie, il faut créer un Setup qui se chargera de l'installation. Et la commence les ennuis.

.NET n'étant pas forcement installé sur l'OS de l'utilisateur, celui-ci ne pourra pas faire fonctionner l'application. Par exemple .NET 4.0 (dernière version stable à ce jour) est fournis séparément ou avec Visual Studio 2010. Autrement dit, il faut que l'utilisateur, peu importe sa version de Windows (XP à 7), installe .NET 4.0 avant l'application, ou que le setup de l'application s'en charge. Pas très pratique.

En Win32 on pourrait s'attendre à plus de facilité, c'est l'API native de l'OS, il ne devrait donc rien y avoir à faire. Ce n'est malheureusement pas le cas. Prenons l'exemple d'une application développée avec Visual Studio 2010, pour fonctionner, il faut que le setup installe, en plus de l’application, le VC++ Redistributable Package 2010. Cela permet d'utiliser les dernières nouveautés fournis par Visual Studio pour C++. Il existe bien des solutions au moment de la compilation pour éviter cela, mais pour moi le problème reste entier.

Je m'explique.

Il me semble que du côté de chez Microsoft on a perdu depuis longtemps l'élément principale dans le développement et la distribution d'un logiciel, l'utilisateur. Le principe du Setup est, à mon avis, dépassé, c'est une relique de l'informatique. Cela complexifie le développement et ce n'est pas user friendly. Premièrement, personne n'est à l'abri par exemple d'un setup qui ne fonctionne pas ou qui ne propose pas une désinstallation propre, deuxièmement, cela ne devrait pas être le boulot du développeur, il y a bien assez à faire avec le logiciel en lui-même.

Alors d’accord, il est intéressant de pouvoir ajouter des fonctionnalités, ou d'utiliser de nouveaux outils lors du développement d'une application, sans pour autant devoir attendre une nouvelle version de l’OS, mais cela ne devrait en aucun cas concerner l'utilisateur. Il est rageant de devoir faire du support pour des éléments annexes. Combien de développeurs doivent expliquer comment se procurer et installer .NET, ou les Redistributable Packages, ou aider les utilisateurs lorsque l'installation de ceux-ci posent des problèmes.

Microsoft est plus ou moins en train de simplifier ce processus, les applications Windows 8 (Metro) s'installeront grâce à un Store, donc pas de Setup. Les éléments nécessaires sont directement intégrés à Windows. Mais pour que cela fonctionne cela nécessite que les nouveaux outils de sortent plus ou moins en parallèle avec le nouveau Windows.