Recherche de site Web

Comment un étudiant a fondé un système d'exploitation gratuit et open source


Une interview avec le fondateur de FreeDOS, Jim Hall.

Jim Hall est surtout connu comme le programmeur informatique qui a fondé le projet FreeDOS. Jim a commencé le projet en 1994 en remplacement de MS-DOS alors qu'il était encore étudiant à l'Université du Wisconsin – River Falls. Jim a créé FreeDOS en réponse à la fin du support de Microsoft pour MS-DOS en 1994. Récemment, Jim a accepté un entretien par courrier électronique. Le correspondant Joshua Allen Holm s'est joint à moi pour poser les questions suivantes à Jim.

Don Watkins : Quel type de compétences vous invite à écrire votre propre système d'exploitation ?

Je pense que même un débutant peut commencer à écrire un système d'exploitation comme FreeDOS, même s'il faudrait un programmeur plus avancé pour écrire le noyau.

Je suis un programmeur autodidacte. J'ai appris la programmation dès mon plus jeune âge en bricolant sur notre ordinateur Apple II à la maison. Beaucoup plus tard, j'ai appris la programmation en C : mon frère était étudiant en informatique quand j'étais étudiant en physique, et il m'a initié au C. J'ai appris le reste en lisant des livres et en écrivant mes propres programmes.

J'ai écrit de nombreux petits utilitaires qui ont amélioré ma ligne de commande sur MS-DOS ou même remplacé certaines commandes DOS. Et vous pouvez écrire beaucoup de ces programmes même avec un niveau de base d’expérience en programmation. Vous pouvez écrire des utilitaires de fichiers comme FIND, FC, CHOICE, TYPE, MORE ou COPY, ou des commandes utilisateur comme ECHO ou CLS, avec seulement une introduction à la programmation C. Avec un peu de pratique, vous pouvez écrire des programmes au niveau système comme ATTRIB ou le shell COMMAND.

DW : Avez-vous été inspiré par Linus Torvalds lorsque vous avez décidé d'écrire votre propre version de DOS et comment cela a-t-il contribué à votre décision de licence ?

D'une certaine manière, oui. J'aimais beaucoup DOS et je l'utilisais depuis le début des années 1980. J'ai exécuté MS-DOS sur mon ordinateur personnel à l'université. Mais en 1993, j'ai découvert Linux.

J'ai vraiment aimé les systèmes Unix dans le laboratoire informatique de notre campus, où j'ai passé une grande partie de mon temps en tant qu'étudiant de premier cycle. Lorsque j’ai entendu parler de Linux, une version gratuite d’Unix que je pouvais exécuter sur mon ordinateur ’386 à la maison, j’ai immédiatement eu envie de l’essayer. Ma première distribution Linux était Softlanding Linux System (SLS) 1.03, avec le noyau Linux 0.99 alpha patch niveau 11. Cela nécessitait 2 Mo de RAM, ou 4 Mo si vous vouliez compiler des programmes, et 8 Mo pour exécuter X Windows.

J'ai double-démarré Linux avec MS-DOS. J'ai démarré sous Linux la plupart du temps, mais j'ai quand même redémarré sous MS-DOS pour rédiger des articles dans un traitement de texte, pour utiliser un tableur afin d'analyser les données de mes cours de laboratoire ou pour jouer à mes jeux DOS préférés.

En 1994, j’ai entendu dire que Microsoft envisageait de « supprimer » MS-DOS. La prochaine version de Windows éliminerait le DOS. Je n’aimais pas ça et je voulais toujours utiliser DOS. J'ai décidé que si les gens pouvaient se réunir sur Internet pour écrire quelque chose comme Linux, nous pourrions sûrement faire la même chose avec DOS. Après tout, DOS était assez simple comparé à Linux.

Le 29 juin 1994, j'ai annoncé le projet « PD-DOS » pour écrire notre propre DOS. Je l'ai appelé « PD » parce que je pensais que ce serait dans le domaine public. Mais j’ai rapidement découvert la licence publique générale GNU utilisée par le noyau Linux et j’ai décidé que c’était une bien meilleure licence. Personne ne pouvait prendre notre code source et créer une version propriétaire de DOS. Nous avons changé le nom en « Free-DOS » après environ une semaine. Nous avons ensuite supprimé le trait d'union pour devenir « FreeDOS. »

Joshua Allen Holm : Quels sont les avantages de l'utilisation de FreeDOS par rapport aux autres méthodes d'exécution d'applications DOS (par exemple, DOSBox) ?

Utiliser DOSBox pour exécuter des applications DOS sous Linux est un excellent moyen d'exécuter certaines applications DOS. Mais DOSBox est en réalité destiné à lancer un seul programme DOS, comme un jeu. La ligne de commande DOS est assez limitée dans DOSBox.

En revanche, FreeDOS fournit une ligne de commande DOS complète. Nous incluons toutes les commandes dont vous vous souvenez du DOS classique et avons ajouté d'autres commandes et utilitaires pour faire de nouvelles choses. FreeDOS comprend également des compilateurs et des assembleurs permettant aux développeurs d'écrire de nouveaux programmes, utilitaires et outils pour rendre votre expérience DOS plus utile, des programmes Internet pour vous aider à accéder à un réseau et même des jeux open source.

JAH : En regardant les années pendant lesquelles vous avez travaillé sur FreeDOS, y a-t-il quelque chose que vous auriez fait différemment ?

Il n’y a qu’un seul événement que j’aimerais pouvoir reprendre. Je contacte occasionnellement des entreprises qui vendaient des applications DOS dans les années 1980 et 1990 et leur demande si elles publieront le code source de leurs anciens programmes DOS sous une licence de logiciel open source. C’est une excellente façon de contribuer à la communauté open source.

Un programme DOS populaire remplaçait le shell MS-DOS COMMAND. 4DOS, de JP Software, était un shell DOS extrêmement puissant et incluait de nombreuses fonctionnalités modernes. Par exemple, 4DOS prenait en charge les alias intégrés, les listes de répertoires codées par couleur et un mécanisme de « permutation » qui libérait de la mémoire plus conventionnelle pour exécuter des programmes.

J'ai contacté JP Software pour leur demander s'ils publieraient le code source sur 4DOS sous une licence de logiciel open source. JP Software avait cessé de prendre en charge DOS et s'était plutôt concentré sur un remplacement similaire du shell CMD dans Windows NT, appelé 4NT. Ils souhaitaient publier le code source sur 4DOS, mais craignaient que quelqu'un puisse prendre le code source de 4DOS et publier une version pour Windows. En effet, cela mettrait JP Software en concurrence avec son ancien produit.

Je ne comprenais toujours pas les subtilités des licences de logiciels open source et je leur donnais de mauvais conseils. J'ai suggéré qu'ils pourraient commencer avec une licence open source existante et ajouter un terme indiquant que vous ne pouvez l'exécuter que sous DOS. Ils ont ensuite publié le code source de 4DOS sous une version modifiée de la licence MIT.

Malheureusement, limiter l'endroit où vous pouvez exécuter le logiciel viole l'un des principes des logiciels open source et des logiciels libres. Les utilisateurs doivent pouvoir exécuter des logiciels open source n’importe où et pour n’importe quelle utilisation. Une licence open source n’est pas « open source » si vous êtes limité à l’exécuter sur un seul système d’exploitation.

Donc, malgré mes meilleures intentions, j’ai donné de très mauvais conseils à JP Software, et 4DOS n’est pas réellement un logiciel open source. Nous avions l'habitude d'inclure 4DOS dans FreeDOS, mais alors que nous préparons la version FreeDOS 1.3, nous voulons faire attention à n'inclure que des logiciels open source. Ainsi FreeDOS 1.3 RC4 (« release candidate 4 ») n'inclut pas 4DOS. 

JAH : Quelles sont les façons intéressantes dont les gens utilisent FreeDOS ?

Au fil des années, j’ai vu des gens utiliser FreeDOS pour faire beaucoup de choses vraiment intéressantes !

L’un des premiers exemples intéressants est celui de quelqu’un qui a construit des flippers comme on en voyait dans les salles d’arcade. Il a intégré une version de FreeDOS pour suivre le score et mettre à jour l'écran vidéo à l'arrière de la machine. Je ne sais pas exactement comment il a fait cela, mais je suppose que chaque cible ou pare-chocs sur le flipper a probablement généré un événement de clavier. Vous pouvez écrire une application DOS pour lire le « clavier » et mettre à jour la partition en fonction de cela.

Il y a quelques années, un utilisateur a trouvé une vidéo d'un système de contrôle de train en Russie fonctionnant sur un PC FreeDOS. Ils ont redémarré l'ordinateur et si vous figez la vidéo au bon moment, vous pouvez voir brièvement le démarrage du noyau FreeDOS. Il disparaît rapidement, mais vous pouvez le voir à 0:07 dans la vidéo.

Plus récemment, j'ai vu que quelqu'un avait réussi à démarrer un IBM PC 5150 original avec FreeDOS à partir d'un disque vinyle, en utilisant le port de stockage de cassette rarement utilisé du 5150. C'est vraiment cool de voir FreeDOS être utilisé de cette façon. C’est une méthode que je n’aurais jamais pensé essayer, mais parfois il faut faire quelque chose juste pour le plaisir.

JAH : Pourquoi travailler sur DOS en 2021 ?

Nous travaillons toujours sur DOS en 2021 pour plusieurs raisons. Je suppose que la première raison est que le DOS est toujours intéressant. Nous avons beaucoup ajouté à FreeDOS au fil des ans. Alors que le MS-DOS d'origine disposait d'un ensemble limité de commandes, FreeDOS comprend des dizaines d'utilitaires et d'outils utiles, notamment des éditeurs, des compilateurs, des assembleurs, des jeux et d'autres programmes intéressants.

Mais cela doit être plus qu'un simple passe-temps sympa. Je trouve que travailler sur FreeDOS constitue un défi de programmation très intéressant. Dans les systèmes modernes comme Linux, vous pouvez profiter d’une grande quantité de mémoire à la fois et vous pouvez tout gérer en un seul gros bloc. En conséquence, de nombreux programmeurs chargeront de nombreuses bibliothèques et autres codes pour créer leurs projets. C’est un moyen très simple de construire un projet compliqué. De cette façon, vous pouvez construire un système très complexe en très peu de temps. Et pour de nombreux systèmes, le délai de mise sur le marché est le facteur le plus important.

Cependant, charger un tas de bibliothèques et d’autres blocs de code est très inefficace. Vous pouvez avoir la même fonctionnalité de base implémentée d'une demi-douzaine de façons dans les différentes bibliothèques, car chaque bibliothèque implémente quelque chose à sa manière. Votre code grandit donc et nécessite plus de mémoire.

Ce n'est peut-être pas un problème sur un ordinateur de bureau. J'utilise Linux et mon ordinateur de bureau moderne dispose de 32 Go de mémoire. Charger un tas de choses en mémoire n’est pas un gros problème. Mais sur un serveur partagé, sur lequel plusieurs instances de ce projet peuvent être en cours d’exécution, vous rencontrerez rapidement des limitations de mémoire. Combien d’instances pouvez-vous exécuter en même temps sur un serveur ? Ces 32 Go de mémoire commencent à paraître plutôt minces.

Vous ne pouvez pas charger tout cela en mémoire sur une machine DOS. Pour rester compatible avec le DOS d'origine, FreeDOS possède toutes les limitations du DOS. Lorsque MS-DOS était populaire, un PC puissant pouvait disposer de 4 Mo, 8 Mo ou même 16 Mo de mémoire étendue. Mais l'ordinateur ne disposait que de 640 Ko de mémoire « principale », en raison de la manière dont le DOS abordait la mémoire. Et cela représente des mégaoctets et des kilo-octets, pas des gigaoctets. Un kilo-octet équivaut à mille octets (l'unité de base de la mémoire). Un mégaoctet équivaut à mille kilo-octets. Et un gigaoctet équivaut à mille mégaoctets. Ainsi, les ordinateurs d’aujourd’hui ont une mémoire environ 1 000 000 de plus qu’un ordinateur DOS.

En programmant sur un système limité comme FreeDOS, vous devez constamment réfléchir aux compromis. De quelle quantité de mémoire mon programme a-t-il réellement besoin pour faire son travail ? Est-il plus rapide de lire un fichier en mémoire pour travailler dessus, ou de traiter le fichier un bit à la fois ? Et vous gardez toujours à l’esprit les bibliothèques et autres codes que vous utilisez dans votre programme. Un programme DOS ne peut être qu'une taille limitée, vous devez donc faire attention à la façon dont vous écrivez un programme DOS.

Lorsque vous écrivez tout le temps des programmes DOS, vous devenez vraiment doué pour optimiser un programme. Vous envisagez la programmation d’une manière différente, car vous réfléchissez toujours à la manière de faire quelque chose de plus efficacement. C’est un défi, mais intéressant.

DW : Quelle est la taille de la communauté FreeDOS ?

FreeDOS était un projet très populaire tout au long des années 1990 et au début des années 2000, mais la communauté n'est pas aussi grande de nos jours. Mais c’est formidable que nous soyons toujours un groupe engagé et actif. Si vous regardez les actualités sur notre site Web, vous verrez que nous publions des mises à jour assez régulièrement.

Il est difficile d’estimer la taille de la communauté. Je dirais que nous avons quelques dizaines de membres très actifs. Et nous en avons quelques dizaines d'autres qui réapparaissent occasionnellement pour publier de nouvelles versions de leurs programmes. Je pense que maintenir une communauté active qui travaille toujours sur un DOS open source datant de 1994 est un bon signe.

Certains membres sont avec nous depuis le tout début et je suis vraiment reconnaissant de les compter parmi nos amis. Nous organisons des hangouts vidéo de manière semi-régulière. C’est formidable de pouvoir enfin « rencontrer » les gens avec qui j’ai seulement échangé des courriels au fil des ans.

C'est dans des réunions comme celle-ci que je me souviens que l'open source, c'est bien plus que simplement écrire du code ; il s'agit d'une communauté. Et même si j'ai toujours bien réussi avec notre communauté virtuelle qui communique par courrier électronique, j'ai vraiment apprécié de pouvoir parler aux gens sans le délai asynchrone ni le filtre artificiel du courrier électronique. Établir cette connexion en temps réel signifie beaucoup pour moi.

DW : Comment peut-on s'impliquer dans la communauté ?

Je pense que notre communauté est très accueillante, donc tout le monde est libre de la rejoindre. Nous communiquons via une liste de diffusion, que vous pouvez retrouver sur le site FreeDOS. Rejoignez la liste de diffusion des utilisateurs freedos si vous souhaitez parler de FreeDOS ou demander de l'aide. Les développeurs doivent rejoindre la liste de diffusion freedos-devel ; c'est là que se retrouvent la plupart des développeurs FreeDOS. Le volume de notre liste de diffusion est assez faible, vous ne risquez donc pas de remplir votre boîte de réception en vous abonnant à l’une ou l’autre des listes de diffusion.

Une excellente façon de commencer est de rédiger ou de mettre à jour la documentation, ou de corriger des bogues. Je pense que c’est vrai pour presque tous les projets open source. Nous avons toujours besoin de personnes pour travailler sur la documentation et corriger les bugs. Mais pour un projet comme FreeDOS, je pense que la lecture de la documentation est importante si vous débutez avec DOS. Une erreur courante des nouveaux arrivants est de considérer FreeDOS comme une version allégée de Linux, alors qu'en fait DOS utilise une mémoire et un modèle d'exécution différents. Vous pouvez en apprendre davantage en lisant la documentation, c'est pourquoi je recommande aux nouveaux contributeurs de commencer par là.

Pour les plus aventureux, nous maintenons une liste de projets prioritaires sur notre site Internet. Si vous souhaitez contribuer à FreeDOS, mais n'êtes pas sûr de ce qui nécessite du travail, vous pouvez envisager de vous lancer dans un ou plusieurs de ces projets :

  • Si vous avez une certaine expérience en programmation :

    • Portez les utilitaires FreeDOS vers OpenWatcom C et NASM, notre compilateur C et assembleur préféré pour FreeDOS. (Certains anciens programmes FreeDOS ont probablement été écrits pour Borland C ou Turbo C ou Microsoft C, ou Microsoft ASM ou Turbo ASM)

    • Portez les utilitaires GNU vers FreeDOS, comme l'utilisation de IA-16 GCC (alors que IA-16 GCC nécessite un '386 ou supérieur pour être compilé, les programmes compilés avec IA-16 GCC s'exécutent sur tous les processeurs)

    • Créez un nouveau shell alternatif, similaire à COMMAND.COM mais avec une programmation BAT étendue

    • Ajoutez la prise en charge des langues internationales à un programme FreeDOS qui ne prend actuellement en charge qu'une seule langue.

  • Si vous êtes un développeur DOS hautement qualifié :

    • Écrivez un outil invité comme VMSMOUNT pour VirtualBox

    • Écrire un pilote pour les cartes son modernes

    • Ajoutez une sorte d'émulateur BIOS d'amorçage UEFI, peut-être implémenté en tant que CSM.

Nous aimons permettre aux nouveaux contributeurs de démarrer facilement avec FreeDOS, et nous souhaitons la bienvenue à tous ceux qui souhaitent travailler sur FreeDOS. Si vous ne savez toujours pas comment contribuer, n'hésitez pas à le demander sur la liste de diffusion.

Vous pouvez trouver FreeDOS sur www.freedos.org

Rejoignez FreeDOS sur Facebook à l'adresse facebook.com/groups/freedos/ 

Suivez FreeDOS sur Twitter à twitter.com/freedos_project

Articles connexes: