You are here -> Home » linkdd's journals » GnuSrc et Cream-Browser

GnuSrc et Cream-Browser

Le 27/01/2010 à 22h34 by linkdd, See the Journals, 5 commentaries

Bonjour chers internautes de Logram,

Je me suis absenté durant 2-3 semaines car j'étais en voie de "dégeekisme". Mais ceci a échoué. Comment le sais-je ? Tout simplement parce que quiquonque créé une distribution Linux blindé d'outils BSD n'est qu'un gros geek :)

Donc GnuSrc comme je l'ai appellé est une distribution linux (pour l'instant toujours pas fini car je suis un grand flemmard, elle est dans mon disque dur externe et n'attend que son geek pour l'entretenir). Bon quel interêt me direz vous ? Pourquoi je m'occupe pas de la LFS de logram ?

Ici l'interêt est que cette distribution mixe les outils GNU avec les outils BSD, pour faire simple :

  • Gestionnaire de paquet pkgsrc (celui de NetBSD)
  • Pas de SysVinit, mais plutot OpenRC (encore une fois NetBSD)
  • Pas de LFS mais le stage3 de Gentoo épuré de portage/emerge.
  • Et d'autres choses pas encore prévu, comme par exemple l'installation sur mon PC local.

Elle n'est pas disponible au téléchargement, sinon j'aurais quitté ma Debian :)

Qu'en est-il de Logram ?

Nonon je ne l'abandonne pas, je vais m'en occuper n'ayez crainte. Il faut juste que je prenne le temps de le faire (flemme quand tu nous tiens). Je me suis fixé de faire cette foutu LFS pendant les prochaines vacances (d'ici une semaine et demie) et d'y installer Setup, après il ne me restera plus qu'à créer les paquets si steckdenis me confirme que la structure des paquets ne changera plus (il serait domage de créer une cinquantaine de paquet pour devoir les refaire car la structure change).

Et le reste ?

Et bien j'ai repris le développement de Cream-Browser, mon navigateur internet. Mais désormais d'une manière bien plus propre, souple et efficace. J'ai séparé la partie navigateur (l'interface) de la partie intégration, cette seconde partie est donc situé dans une librairie statique (libcream.a) qui contient un objet CreamView (widget GTK), cet objet va choisir selon l'URL qu'on lui donne le module à utiliser. S'il s'agit d'un FTP, on utilisera le module FTP situé dans libcream-module-ftp.a, si c'est une page about:xxx on utilisera le module About situé dans libcream-module-about.a et pour le reste on utilisera le module WebView situé dans libcream-module-webview.a. Résumons :

  • Cream : le navigateur
    • libcream.a : CreamView
      • libcream-module-about.a : AboutModule
      • libcream-module-ftp.a : FTPModule
      • libcream-module-webview.a : WebViewModule
  • creamctl : Programme permettant de manipuler le navigateur en externe
    • Il permettera donc de créer des plugins dans nimporte quels langage de la même manière que UZBL

La structure risque d'évoluer avec le temps, par exemple, j'ai fini l'objet CreamView, bientot fini l'objet ModuleWebView, et je me heurte à un problème : L'utilisateur affiche une page HTTP (utilisation de WebKit), il clique sur un lien en ftp:// (nécessite le module FTP). Je réfléchis donc à comment faire pour changer de module (je pense à emettre un signal GTK et le CreamView s'occupe du reste).

Le code est disponible ici, bien que le code progresse lentement cela n'empèche pas au navigateur d'évoluer dans ma tête.

Les avantages de cette structure sont les suivants :

  • Le développeur souhaite coder un navigateur sans faire d'intégration de WebKit, il a libcream-module-webview.a à sa disposition.
  • Le développeur souhaite intégrer un FTP dans son navigateur déjà codé, il a libcream-module-ftp.a à sa disposition.
  • Le développeur souhaite voir comment est constitué une application Vim-like, il regarde le code de l'interface sans être dérangé par toute la partie intégration de WebKit et autres.
  • etc...

Et pour finir...

...je vous invite à faire un tour sur mon blog

Cordialement, linkdd

Commentaries

Author Message
steckdenis
# le 28/01/2010 à 16h38
Heureux d'être là
Avatar
Group : Administrateur

Au sujet de Cream, tu est en train de recréer Konqueror avec le système de KParts de KDE :p .

Et oui, si j'entre une url en HTTP, c'est la KPart KHTML (ou KdeWebkit) qui est utilisée. Pour du FTP ou un fichier normal, c'est la KPart FileBrowser utilisée, avec utilisation des KIO pour gérer les protocoles. Enfin, tu connais normalement ce système :) .

Sinon, rien ne presse pour le LFS de Logram. Je ne pense pas que tu auras à créer les paquets, en ce sens que si tu fais ça, je serai insupportable :p . En effet, j'ai une très bonne idée du comment je veux que les choses soient faites, et je risque de t'énnerver à te faire recommencer :p .

Non, pour aider, il te suffit de faire ce que tu fais : hacker ce que tu veux. En effet, en créant ta distro, tu vas trouver des options de compilation pour accélérer un programme, ou comment intégrer un truc, ou comment organiser des fichiers de conf, etc.

Ensuite, je te demanderai des conseils et tu saura y répondre :) .

Utilisez KDE, vous dis-je :-° .

linkdd
# le 28/01/2010 à 18h20
Logram, c'est la liberté, la liberté d'enlever KDE
Avatar
Group : Packageur

Pour ce qui est de Konqueror, en effet je m'en suis inspiré, sauf que ici c'est GTK et du C, donc saymieux™

Et pour la LFS le logram, ben faudra que tu me donne un cahier des charges précis, car je veux la faire afin que tu puisse te concentrer sur Setup (crois pas que tu va tout faire afin d'avoir tout le mérite !). De plus le travail en équipe, ben saymieux™

Il vaut mieux se taire et passer pour un con que l'ouvrir et ne laisser aucun doute

steckdenis
# le 28/01/2010 à 19h44
Heureux d'être là
Avatar
Group : Administrateur

De toute façon, la LFS ne commence pas avant la fin de Setup, et le développement de la LFS permettra de voir ce qui doit être changé dans Setup en vue d'une version 0.1.1 ou 0.2.

Ce qui m'aiderais vraiment, mais alors vraiment vraiment est une petite liste de tâches me permettant de savoir quoi faire et comment :

  • Comparer init-ng et upstart, j'hésite entre les deux (plus Init-ng, sauf si upstart a une killer-feature qu'initng n'a pas)
  • Voir s'il n'existe pas une autre LibC que la GNU GLibc, par exemple une plus rapide, mais tout aussi fonctionnelle (donc voir si uClibc est POSIX et gère tout le nécessaire)
  • Tester et re-tester Clang, compilateur de la distrib
  • IMPORTANT, surtout que ça rendrait Logram unique : voir avec les autotools, CMake, Jam etc comment générer des bytecode LLVM à la place des éxécutables et bibliothèques, pour implémenter dans ce que je décris dans mon award-winning journal LLVM dans un gestionnaire de paquets ?. Les avantages seraient multiples : optimisation pour le processeur de l'utilisateur sans une longue compilation, patches plus petits (le bytecode LLVM n'ayant pas les problèmes du binaire natif pour les deltas binaires), marketing :)
  • Savoir où en est Gallium3D, s'il est intégré à Mesa, s'il marche bien, etc
  • Si t'as une carte nVidia qui traîne, essayer Nouveau avec le tout dernier kernel de développement
  • te renseigner sur la création de thèmes graphiques GRUB 2
  • Savoir s'il existe des applis Qt qui utilisent les exceptions C++. Si non, excellent, on pourra compiler Qt avec -fno-exceptions, et ainsi diviser sa taille et son occupation RAM par deux, en multipliant sa vitesse par ~50% :D !
  • Trouver des astuces de sysadmin ancien-gentooiste, pour par exemple la compilation de Xorg, les éléments de base d'une bonne distrib, les services peu connus comme atd, crond, sshd, le système de démarrage
  • Trouver comment facilement générer un initrd.

Si t'arrives à faire tout ça, t'auras largement plus de mérite que moi :) . Parce que je ne ferai que les compilations (sur des Dual Quad Core i7 à 3Ghz de mon père B-) , paquets uploadés à 3Mbps sur une connexion 100Mbps, donc j'ai le matériel nécessaire), mais que ce sera très bien fait (utilisation maximale de Setup, développement des lh_tools, comme lh_strip, lh_menu, etc. À mettre en rapport avec les debian_helpers ;) ).

Utilisez KDE, vous dis-je :-° .

linkdd
# le 28/01/2010 à 20h44
Logram, c'est la liberté, la liberté d'enlever KDE
Avatar
Group : Packageur
  • Upstart est le système d'init de Ubuntu, c'est une raison suffisante pour utiliser init-ng selon moi.
  • Pour ce qui est de la libc, on peut très bien utiliser celle de BSD qui sera certainement compatible avec Linux (au pire on trifouille un peu le code pour le rendre compatible).
  • Clang, ca c'est a faire.
  • Ca c'est relativement simple suffit de dire aux autotools de compiler avec LLVM en utilisant tel ou tel options, suffit de savoir manier ses outils et tu peux tout faire :)
  • Gallium3D, je ne connais pas. Je sens que je vais devoir googler
  • J'ai une carte nVidia MSI7300GT, quand je fut sous NetBSD il y a 6-7 mois, j'ai eu l'occasion de tester se driver (nvidia ne fait pas de driver pour cet OS), il est particulièrement bien foutu, rapide, performant (du moins pour la 2D, la 3D j'ai pas test). Donc je pense qu'à l'heure actuelle, il est encore mieux. De plus j'ai rédigé un article pour ce driver dans OpenSource Magazine, le chèque que je receverai ira en partie comme donnation pour ce projet (et je compte dailleurs utiliser ce driver une fois qu'il supportera la 3D)
  • Pour GRUB 2, pas de problème, Google est mon ami.
  • Je ne connais pas assez bien Qt et le C++ pour te répondre à ca, mais on pourrait laisser le choix à l'utilisateur.
  • Ca c'est simple, RTFM :D
  • Egalement simple : Google et RTFM

En gros, lorsque tu me dira ce que tu veux dans la LFS et que je la ferrai, il me suffira de googler un peu.

De plus j'ai pensé à une chose : La construction d'une LFS se fait en deux temps :

  • construction d'un système temporaire
  • chroot dans ce système
  • compilation de l'environement de base à l'aide de cet environement temporaire.

Ici au lieu de compiler l'environement de base, pourquoi ne pas tout simplement installer setup dans l'environement temporaire et lui faire installer les paquets nécéssaire ?

Il vaut mieux se taire et passer pour un con que l'ouvrir et ne laisser aucun doute

steckdenis
# le 29/01/2010 à 15h31
Heureux d'être là
Avatar
Group : Administrateur

Un paquet Logram doit être compilé pour Logram, donc il faut un système temporaire qui te permettra d'un peu hacker les paquets.

En fait, ce que tu peux faire, c'est une LFS, qui va jusqu'à Xorg, éventuellement Qt et KDE. Comme ça, tu ne dois pas faire les paquets (donc je ne t'embêterai pas avec :) ), mais tu peux quand-même expérimenter tout ce que tu veux et résoudre les problèmes que je pose.

Ou alors, tu fais ta distrib, et tu rencontreras les mêmes problèmes, ainsi que les problématiques liées à l'empaquetage (dépendances sources VS dépendances éxécutables, split des paquets, gestion de la version des bibliothèques, etc).

Merci en tous cas :) .

Utilisez KDE, vous dis-je :-° .