Apprendre à développer des logiciels libres

Résolu/Fermé
killeurludo Messages postés 3 Date d'inscription jeudi 17 mai 2012 Statut Membre Dernière intervention 29 juillet 2016 - Modifié par baladur13 le 30/07/2016 à 10:15
MiniApp Messages postés 654 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 22 février 2019 - 2 août 2016 à 18:03
Bonjour,
Je souhaite apprendre des connaissances avancées en informatique et ne sais pas par où commencer ! Je pense avoir des bases solides, j'ai pas mal programmé en C, C++, Php, SQL, Linux, Python, Caml, et j'ai des notions d'Html, CSS, Basic, Assembleur. (quand je dis "pas mal" tout est relatif : j'ai travaillé le tuto principal du site du zéro en C, C++, Linux, je sais manipuler les classes/pointeurs en C++ mais je n'ai jamais fait de "gros projets", quelques jeux du genre labyrinthe, ou morpion).
Je cherche à savoir ce que je peux apprendre à partir de ce que je sais, qui serait intéressant pour ses applications concrètes ! J'aime beaucoup tout ce qui touche à la sécurité et au hacking, je suis en train de lire le cours sur les réseaux TCP/IP d'OpenClassrooms et je suis déçu du manque de programmation qu'il contient, j'ai l'impression d'apprendre beaucoup de choses, mais descriptives, sans vraiment savoir "ce qui se passe dans la machine", sans pouvoir créer des petits programmes qui feraient des tests (créer un réseau, tester la sécurité etc).
Dans l'idéal, j'aimerais beaucoup pouvoir modifier mon linux à ma guise (Ubuntu), et apprendre dans cet espace de liberté (changer le menu déroulant quand on fait un clic droit sur un fichier, changer le fonctionnement d'applications comme "gedit" ou Firefox etc), mais je ne sais absolument pas par où démarrer ... Après de nombreuses recherches sur internet, je ne trouve rien après le stade "apprendre les bases du C/C++", en dehors de réponses très spécifiques pour résoudre des problèmes précis.
J'ai lu beaucoup d'articles exposant "ce qu'est un hacker", cet objectif m'attirant beaucoup, et je ne vois pas comment l'atteindre, j'aimerais beaucoup aider à débugger des logiciels libres, ou en développer moi-même, ou modifier des logiciels existants. Voila donc je cherche si possible un cours assez complet qui expliquerait comme faire ce genre de choses, du genre "la suite du site du zéro", avec, si possible beaucoup de programmation (et je n'ai pas peur des maths).
J'avais pensé à "Linux from Scratch" mais je ne sais pas si cela correspond à mes attentes.

Merci d'avance pour vos réponses,
Nom supprimé Modération CCM
A voir également:

2 réponses

Célien Messages postés 5729 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 9 septembre 2021 1 991
29 juil. 2016 à 01:21
Salut,

Tu as des tutoriels programmation ou réseau avancés ici : Cours avancés en programmation et réseaux cependant si tu veux te lancer à fond autant aussi apprendre à lire l'anglais et à lire des tutos en anglais, certains tutos sur le hacking existent pas forcément en Français par exemple.
0
killeurludo Messages postés 3 Date d'inscription jeudi 17 mai 2012 Statut Membre Dernière intervention 29 juillet 2016
29 juil. 2016 à 15:32
Merci, c'est bien en anglais que je cherchais des cours sur le hacking.
0
MiniApp Messages postés 654 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 22 février 2019 49
29 juil. 2016 à 11:09
Bonjour, je te laisse un long message qui j'espère sera l'étincelle de la flamme pour de nouvelles connaissances pour toi... et en premier que cela t'aidera

Tu as visiblement de bonnes compétences j'ai l'impression (tout dépend de ton niveau dans chacun de ces langages également). Et il y a connaître le langage et les librairies qui vont avec (si tu maîtrise le premier tu peux tout faire mais il faudra toujours avoir des connaissances sur "les" seconds)

Pour la programmation de socket (connexion internet, ...) je te conseille la partie Winsock MSDN de microsoft (je suis en train de crée une suite de composant internet pour Lazarus/Delphi, des logiciels de programmations qui permettent de placer des composants directement sur les fiches et de programmer en Pascal a coter. C'est des vrai langages conçu pour la vrai programmation, Lazarus utilise FreePascal qui est gratuit, le second est payant mais n'a pas grand chose à envier au libre) tout ce qui n'est pas WSA... fait partie des API Bekerley qui est multiplateforme (dont Linux). C'est tout a fait normal que les cours TCP/IP ne contienne pas de programmation mais sont toujours utiles.

Pour en apprendre sur le fonctionnement des OS ce tuto (en C même s'il faut un peut d'assembleur) explique comment crée un miniOS console : http://a.michelizza.free.fr/pmwiki.php?n=TutoOS.TutoOS (ps:passe d'abord par la FAQ car il faut des exécutables en 32B). Sinon LinuxFromScratch semble d'après l'etiquette répondre pile poil à tes besoins !

Pour modifier des applications il faut (tu le sais peut être déjà) les recompiler. Mais il faut les sources ! Si tu ne connais le principe de paquets Debian je te l'explique plus loin. Autrement sur ton Ubuntu un simple
apt-get source <nom paquet>
suffit (ici de la doc sur les paquets sources, je te conseille fortement d'installer Synaptic qui offre une gestion plus avancée que la logithèque, pour le navigateur de fichier c'est le paquet "nautilus") : Debian et ses dérivée (dont Ubuntu ;-D) utilise un système de paquet. Ces paquets peuvent des logiciels, bibliothèques, traduction, pages de man, recettes de cuisines, etc (tu met ce que tu veux). Il existe des "dépôts" il y a les dépôts officiels et des dépôts tiers (appelée PPA) qui les proposent. Ce système permet d'installer de définir des dépendances (dépendances, conflits, remplacement, ...) mais permet d'avoir de "centraliser" les mises à jour (pas besoin d'updater !) et d'offrir une interface unique pour l'installation, gestion et désinstallation de logiciels. Des recherches sur internets permettront de compléter tes connaissances (notamment cette article qui te montrera comment compiler le paquet source que tu as télécharger)

Pour finir et Célien a entièrement raison là-dessus... j'espère que tu maîtrise l'anglais car pour atteindre ton objectif l'anglais est une obligation (je passe en première et je n'ai pas de gros problèmes de compréhension de l'anglais, donc un anglais scolaire suffit, en plus avec la programmation on apprend de l'anglais ! Au pire les traducteurs automatique permettent d'avoir un texte compréhensible)

Moi perso pour apprendre tout ce que je sais, quand j'avais un problème j'allais sur Google mais je n'hésitai à lire des pages connexes. Par exemple je me suis demander comment changer les icones sur un type de fichier sur Windows et j'ai découvert le registre ! Tu m'a aussi fais découvrir que tous les programmeurs sont des hackers dans le bon sens du terme !

Bonne aventure ;-)
0
killeurludo Messages postés 3 Date d'inscription jeudi 17 mai 2012 Statut Membre Dernière intervention 29 juillet 2016
29 juil. 2016 à 15:42
Merci beaucoup :)
Oui j'ai aucun problème avec l'anglais, beaucoup de l'informatique que j'ai faite a été en anglais !
Je regarderai ce qui concerne les sockets et les OS, cependant, pour la partie "modifier des applications open source", je sais déjà trouver la source et la recompiler, le problème est davantage dans la compréhension de comment marche un programme si compliqué, dans tous les cours que j'ai vus, les programmes dépassaient pas quelques centaines de lignes, et quelques fichiers. Je ne pense pas pouvoir apprendre en autodidactie à partir de codes sources de programmes ... Comment les développeurs apprennent ils comment faire un programme du genre paint, ou gedit ?

Bonne journée,
Ludovic
0
MiniApp Messages postés 654 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 22 février 2019 49
30 juil. 2016 à 09:56
Re !

Ce que tu peux faire c'est essayer de refaire un gedit ou un paint. Après comprendre le code source d'une autre personne peut être compliquer (surtout si le code n'est pas commenté ou que le style nous paraît très étrange), on a tous des habitudes. Moi même j'ai essayer d'améliorer Synaptic mais je n'ai pas encore compris le code source.
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
2 août 2016 à 17:10
Conseiller Winsock à quelqu'un voulant développer des logiciels libres est ironique, surtout que Winsock copie les sockets BSD et rajoutent l'horreur de l'environnement Windows (initialisation statique, typedefs inutiles et pointeurs opaques nommés bizarrement).
0
MiniApp Messages postés 654 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 22 février 2019 49
2 août 2016 à 18:03
Je sais ce n'est pas ce qu'il y a de mieux. Mais c'est quelque chose. Et comme tu le dit Windows respecte la spécification BSD (avec leurs WSA avec Ex spécifiques). Donc c'est une base réutilisable (mais je te l'accorde avec du trie à faire. Je regrette par exemple le WSAAsyncSelect).
0