Journal C'est en forgeant qu'on devient forgeron

Posté par  . Licence CC By‑SA.
Étiquettes :
20
2
juin
2011

Cher linuxfriens, je prends ma plus belle plume^Wmon plus beau clavier pour t'annoncer la publication officielle d'une nouvelle application révolutionnaire! Bon OK ce n'est pas vrai, elle n'a rien de révolutionnaire. Pire même, elle copie, sans vergogne aucune, sur ses grandes sœurs et grands frères comme Indefero, Trac, Redmine et j'en passe. Même pas peur d'abord.

Donc la petite dernière se prénomme "Django-Simple-Forge" et comme son nom l'indique, c'est une forge logicielle basée sur Django (donc écrite en Python) et dont la vocation initiale était d'être légère.

Donc oui c'est une nième forge logicielle et encore une fois un développeur (en l’occurrence, moi) a perdu son temps à réécrire une application au lieu d'aider à améliorer les équivalents existants. Mais on ne se refait pas et comme j'avais envie d'autre chose que les forges pré-citées et un peu de temps libre...

Pour en revenir à nos amaryllidaceae, voici quelques fonctionnalités que Django Simple Forge peut partager avec ses sœurs:

  • Multi projets
  • Multi système de gestion de versions (enfin en théorie car pour le moment, je n'ai écrit qu'un plugin subversion et git m'est trop étranger pour que je me lance à écrire le plugin qui va bien...)
  • Projets publics ou privés (gestion d'ACL pour restreindre l'accès à un projet)
  • Une page de présentation par projet
  • Page de téléchargement de fichiers (archives par exemple)
  • Un bug tracker (très épuré)
  • Un résumé des logs de la gestion de versions du projet
  • Des vues détaillées des changements dans le code
  • Une vue d'exploration du code source
  • Le support multilingue (français et anglais à cette heure)

En revanche Django-Simple-Forge n'a pas pour vocation de gérer le référentiel du système de gestion de version. L'application s'appuie sur un référentiel existant (local ou distant) et apporte quelques extras, mais la gestion des droits de lecture/écriture sur le référentiel par exemple, reste à la charge de l'administrateur habituel.

Pour la partie javascript, DSF s'appuie sur Jquery et pour les bases CSS, sur Blueprint. En dehors de ces librairies incluses, il vous faudra avoir un projet Django (>= 1.2) opérationnel avec les dépendances python suivantes:

  • PySVN (pour le plugin Subversion
  • Pygments (pour la coloration syntaxique qui est réalisée en 'best effort')
  • Django-tagging (pour les tags sur les tickets même si DSF n'exploite pas ces fonctionnalités pour le moment)

Le tout est sous licence GPLv3. Donc tout un chacun peut apporter sa pierre à l'édifice, notamment pour écrire un plugin GIT ou pour d'autres systèmes de gestion de version ou encore nettoyer un peu mes pâtés de code, tester, documenter, traduire etc...

Pour ceux qui n'ont pas encore décroché et que ça intéresse, une démo (avec quelques échantillons de code) est accessible. C'est une version intégrée à un autre site, mais en gros si on omet la colonne de gauche, c'est la même interface. Le projet Django-Simple-Forge est directement hébergé sur cette démo: /p/django-simple-forge.

Ah et pour finir (j'entends bailler au fond de la salle... Oui toi!), c'est à l'occasion du premier tag nommé avec beaucoup d'originalité: "v0.1" que je me permets ce petit journal.

À bientôt.

  • # Enfin !

    Posté par  (site web personnel, Mastodon) . Évalué à 9.

    Enfin un journal bookmark correctement argumenté. Ça donne bien envie d'essayer ton truc à battre le fer chaud des lignes de code portées au rouge par le frappement du Vim.

    • [^] # Re: Enfin !

      Posté par  . Évalué à 4.

      Ça se voit tant que ça que je code avec vim? (/me est démasqué)

  • # J'abandonne…

    Posté par  . Évalué à 2.

    L'initiative est bonne, je voulais contribuer (faire un plugin mercurial et/ou git).

    Je vous promet j'ai essayé de persévérer :

    Déjà, c'est un dépôt SVN \o/ . Okay, allé, git svn -r3 clone …

    D'abord, j'ai un peu bataillé pour installer pysvn dans un virtualenv. Il n'est pas sur pypi, et il a besoin de tout un tas de paquets turc-devel pour être compilé et installé. J'ai réussi plutôt simplement (alors qu'il y a un djangosvn et des truc comme ça sur pypi).

    Ensuite, j'ai essayé de faire tourner le projet. Impossible de savoir quel paquet fournissait le module « ovsvn ». Après j'ai compris qu'en fait, il fallait que le projet s'appelle « ovsvn » et l'application django « django_simple_forge » \o/ (oui tout est en dur dans le code) .

    Et là :
    File "ovsvn/django_simple_forge/functions.py", line 7, in <module>
    from login import *
    ImportError: No module named login

    J'abandonne.

    Bonne chance.

    Knowing the syntax of Java does not make someone a software engineer.

    • [^] # Re: J'abandonne…

      Posté par  . Évalué à 3.

      J'ai rien dis ; j'ai persévéré, et découvert qu'il y avait un readme sur le site officiel. J'aurai du RTFM, mea-culpa.

      Knowing the syntax of Java does not make someone a software engineer.

      • [^] # Re: J'abandonne…

        Posté par  . Évalué à 2.

        Nop. Cela dit, tu n'as pas tord, il y a du ménage à faire.

    • [^] # Re: J'abandonne…

      Posté par  . Évalué à 3.

      Je crois que c'est pour ça que je l'ai signalé dans le README:

      Edit scm/subversion.py and change the following line according to the python path of application:
      from ovsvn.django_simple_forge.functions import *

      Mais je suis conscient que c'est loin d'être propre et que pas mal de points méritent d'être améliorés dont celui-ci. "Y'a qu'à faut qu'on" comme on dit...

      • [^] # Re: J'abandonne…

        Posté par  . Évalué à 2.

        nan, mais j'ai vraiment fait n'importe quoi. git svn clone -r3 ne prend pas les 3 dernières révisions. Mais la 3eme, ça va mieu maintenant avec la dernière :P .

        Knowing the syntax of Java does not make someone a software engineer.

      • [^] # Re: J'abandonne…

        Posté par  . Évalué à 2.

        Juste deux remarques, je viens de jouer avec un peu.

        Il faudrait ajouter dans le readme d'installer django-html. (Enfin, chez moi, ça ne marche pas sans).

        Et autre chose, dans smc/subversion.py, pourquoi ne pas utiliser les import relatifs comme expliqué ici, au lieu de ovsvn.django_simple_forge.functions ?

        Knowing the syntax of Java does not make someone a software engineer.

        • [^] # Re: J'abandonne…

          Posté par  . Évalué à 2.

          Ça m'aurait étonné aussi de ne pas oublier un truc en pré-requis... (tout le problème de ne pas prendre le temps de faire une install complète dans un environnement vierge).

          Pour l'import relatif j'avoue que je n'avais pas cherché plus loin que le bout de mon nez. C'est corrigé dans le tronc svn.

          Merci.

  • # Un peu de lecture

    Posté par  . Évalué à 4.

    C'est cool ce genre de petits projet ça permet de lire facilement du code sans se prendre la tête (moi je connais rien à Django). J'ai voulu regarder un peu le modèle de ta forge.

    Je suis surpris que les utilisateurs ne fassent pas partis du modèle j'imagine qu'ils sont gérés spécifiquement par Django ?

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

  • # +1 plugin mercurial

    Posté par  (site web personnel) . Évalué à 3.

    Faire un plugin mercurial aurait beaucoup de sens: c'est du python aussi. Tu peux faire "import mercurial" et zou...

    Bonne chance pour la suite.

  • # Codes à récupérer

    Posté par  (site web personnel) . Évalué à 4.

    Bonjour,

    Pour ceux que ça intéresse, j'ai un jour développé une forge mono-projet pour mon projet Logram (j'avais des besoins assez spécifiques). Le code est public et disponible sous GNU Affero GPLv3 ici : http://gitorious.org/logram/website/ . Vous pouvez voir ce que ça donne en production sur http://www.logram-project.org .

    C'est une forge utilisable par n'importe qui, mais je n'ai pas encore connaissance d'un projet qui l'utilise (il faut dire qu'il faut adapter pas mal de trucs pour la rendre utilisable par autre-chose que Logram, dont le thème qui doit être refait).

    Côté fonctionnalités, c'est assez complet, la forge la plus complète à ma connaissance, ce qui explique pourquoi je l'ai faite au lieu de réutiliser l'existant :

    • Forum classés par catégories, avec vraie gestion du lu/non-lu, modération des commentaires, permissions, déplacement de sujets, sondages, etc. Quasiment au niveau de phpBB quand j'avais comparé.
    • Messagerie privée entre utilisateurs, avec possibilité d'avoir plusieurs utilisateurs par fil de discussion.
    • Annonces en page d'accueil, soit globales au projet, soit privées pour chaque utilisateur (l'équivalent des journaux de Linuxfr). Les membres peuvent les commenter.
    • Wiki utilisant la syntaxe Markdown (comme le forum, les MP, les commentaires d'annonces et les rapports de bugs), avec possibilité de protéger et de rendre privées des pages et d'avoir un historique de modifications
    • Un petit module "pastebin" histoire d'avoir un truc intégré au site et de ne pas devoir s'en remettre à un service externe.
    • Un système de demandes (bug reports) inspiré de Bugzilla : on sait tout faire. Chaque demande a un type (bug, idée, demande d'aide), peut avoir un nombre infini d'état (ouvert, résolu, en cours, abandonné, etc), des demandes filles, des demandes liées. Une demande peut être attribuée à un utilisateur, une adresse e-mail (pour que tous les développeurs n'aient pas à s'inscrire sur la forge) ou une URL externe (pour upstreamer des bugs). On peut manipuler les demandes comme on veut, les filtrer, les trier, les supprimer, etc.
    • Un espace de téléchargements, la partie à épurer. La page d'accueil de cet espace permet de télécharger des fichiers, mais Logram étant une distribution, il permet également de télécharger des paquets, de les rechercher, de les gérer, un peu comme packages.debian.org. On peut même voir les paquets en cours de construction par le serveur de construction, en temps réel, comme l'openSUSE Build Service (sauf que le projet Logram étant arrêté, il n'y a plus de paquets qui se construisent).

    Bref, une autre forge en Django, comme quoi on sait faire pas mal de choses avec Django. Son but est d'être la plus complète possible, et on a même quelque-part un plugin SVN pour explorer un dépôt SVN (le plugin se base également sur PySVN). J'espère que ce projet à l'arrêt (quoique je le reprendrai peut-être dans quelques temps) intéressera l'auteur de Django-Simple-Forge :) .

    Merci de m'avoir lu, et désolé pour le long post publicitaire.

    • [^] # Re: Codes à récupérer

      Posté par  . Évalué à 3.

      Je sais pas si on peut vraiment parler de forge pour ce site. J'ai plus l'impression que c'est fait pour gérer une communauté que vraiment du développement. Mais ce n'est que mon avis d'après mes connaissance (je voudrais pas attirer les foudres de certains).

      Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: Codes à récupérer

      Posté par  . Évalué à 2.

      Ah oui! C'est le modèle XXL là. Dommage un peu que cela soit noyé au milieu d'un autre projet. Je ne dis pas en revanche que je ne m'inspirerais pas un peu de certaines parties ;-)

      (Pourtant, des forges django, j'ai cherché... Et je ne m'attendais pas à en trouver dans ce contexte.)

  • # encore

    Posté par  . Évalué à -1.

    c'est vraiment la mode en ce moment les gestionnaires de tickets (l'année dernière c'était les framework PHP je vais pas me plaindre).

    Est-ce que ce développement a pour but d'apprendre à développer avec django ou tu vas vraiment t'en servir ?

    Parce que bon, une pauv' liste qui affiche les tickets en cours ça casse pas trois pattes à un canard. Quand bien même il y aurait quelque chose de nouveau ou d'attrirant je comprendrais, mais là rien de tout ça.

    • [^] # Re: encore

      Posté par  . Évalué à 4.

      Je crois qu'un paragraphe du journal explique un peu la démarche. Et comme tu le dis, il n'y a rien de nouveau et encore moins d'attirant. Ce n'est absolument pas le but. Le but c'est de pouvoir être utilisable et adaptables à mes besoins. Chose qui m'est plus difficile avec d'autres forges dont le langage m'est plus étranger.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.