Campagne de financement pour GtkSourceView

Posté par  . Édité par Davy Defaud. Modéré par claudex. Licence CC By‑SA.
63
18
sept.
2017
Gnome

GtkSourceView est une bibliothèque GNOME qui étend GtkTextView, le widget GTK+ standard pour l’édition de texte sur plusieurs lignes.

La fonctionnalité principale de GtkSourceView est la coloration syntaxique, mais il y a de nombreuses autres fonctionnalités : le chargement et la sauvegarde de fichiers, la recherche et remplacement, l’auto‐complétion, le « annuler / refaire », afficher les numéros de ligne, etc.

C’est une bibliothèque largement utilisée. Par exemple dans Debian, GtkSourceView est utilisée par plus de cinquante applications, dont notamment gedit et GNOME Builder.

Si vous voulez donner un coup de pouce au projet, il y a maintenant une campagne de financement !

Le mainteneur de GtkSourceView — celui qui a lancé la campagne de financement — est cette même personne qui est en train d’écrire les lignes de cette dépêche ; oui, je suis francophone. :-)

Pour donner un peu plus de contexte, je travaille à mi‐temps en tant que programmeur dans une université (j’ai terminé mes études il n’y a pas longtemps). Ce qui me permet de continuer mes projets dans GNOME en tant qu’indépendant.

Je suis le seul mainteneur restant de GtkSourceView, les autres mainteneurs n’ayant plus assez de temps libre pour contribuer. Donc, l’avenir de cette bibliothèque repose en quelque sorte entre mes mains.

Projet à long terme

Outre la maintenance de code, le projet que j’ai à long terme pour GtkSourceView est de faciliter le développement d’éditeurs de texte, en créant des API de plus haut niveau et en fournissant davantage de fonctionnalités.

En effet, même si GtkSourceView fournit déjà actuellement beaucoup de fonctionnalités, c’est malheureusement loin d’être suffisant pour créer un éditeur de texte basique (pour avoir une implémentation de bonne qualité). Pour donner un exemple concret, le cœur de gedit — si l’on enlève tous les greffons — fait actuellement 40 000 lignes de code ! Ça fait quand même beaucoup de travail pour un développeur qui aurait envie de créer un éditeur de texte spécialisé ou un nouvel IDE.

C’est en 2013 que j’ai commencé à rendre le code de gedit plus réutilisable. D’abord en créant de nouvelles API dans GtkSourceView, puis ensuite en créant d’autres bibliothèques : gspell (pour la correction orthographique) et Tepl (acronyme pour « Text editor product line », une bibliothèque qui sert d’incubateur pour GtkSourceView, pour laisser le temps à une nouvelle API de faire ses preuves).

Comme la feuille de route pour GtkSourceView et Tepl le montre, il y a encore beaucoup de boulot.

Plate‐forme Liberapay

Le financement de GtkSourceView se fait sur Liberapay, qui a déjà été présenté sur LinuxFr.org. Je pense que c’est une plate‐forme qui a beaucoup de potentiel pour financer des logiciels libres. Un avantage en particulier est que Liberapay est géré par une association à but non lucratif, qui est financée par des dons sur la plate‐forme elle‐même.

Merci pour votre soutien !

Aller plus loin

  • # eh bé

    Posté par  . Évalué à 4.

    eh bien, j'espère que ta campagne va toucher assez de gens, bien que le travail soit assez spécialisé.
    Et j'espère que tu continueras à travailler à temps partiel pour pouvoir te consacrer à tes projets :)

  • # un gros morceau

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

    C'est une bibliothèque largement utilisée. Par exemple dans Debian, GtkSourceView est utilisée par plus de 50 applications, dont notamment gedit et GNOME Builder.

    Si je veux regarder sur ma Debian le détail des logiciels qui dépendent de GtkSourceView, je crois que la commande "apt-cache showpkg libgtksourceview-3.0-1" est celle qui fait le taf.

    Elle donne :

    Reverse Depends:
    gnome-calculator,libgtksourceview-3.0-1 3.15.1
    xpad,libgtksourceview-3.0-1 3.10
    pspp,libgtksourceview-3.0-1 3.4
    pluma,libgtksourceview-3.0-1 2.91.4
    nemiver,libgtksourceview-3.0-1 2.91.4
    mate-applets,libgtksourceview-3.0-1 2.91.4
    gtranslator,libgtksourceview-3.0-1 3.0.0
    libgtksourceview-3.0-dev,libgtksourceview-3.0-1 3.22.2-1
    gir1.2-gtksource-3.0,libgtksourceview-3.0-1 3.21.5
    gnome-sushi,libgtksourceview-3.0-1 3.13.90
    libgtksourceview-3.0-dev,libgtksourceview-3.0-1 3.24.4-1
    gnome-builder,libgtksourceview-3.0-1 3.22.0
    gedit-plugins,libgtksourceview-3.0-1 3.21.3
    gedit,libgtksourceview-3.0-1 3.21.5
    anjuta,libgtksourceview-3.0-1 3.0.0
    meld,libgtksourceview-3.0-1 3.14
    gitg,libgtksourceview-3.0-1 3.13.90
    xpad,libgtksourceview-3.0-1 3.10
    pspp,libgtksourceview-3.0-1 3.14
    pluma,libgtksourceview-3.0-1 2.91.4
    nemiver,libgtksourceview-3.0-1 2.91.4
    meld,libgtksourceview-3.0-1 3.14
    mate-applets,libgtksourceview-3.0-1 2.91.4
    libgtksourceviewmm-3.0-0v5,libgtksourceview-3.0-1 3.18.0
    latexila,libgtksourceview-3.0-1 3.18
    libjava-gnome-jni,libgtksourceview-3.0-1 3.0
    gupnp-tools,libgtksourceview-3.0-1 3.2.0
    gtranslator,libgtksourceview-3.0-1 3.0.0
    gnome-builder,libgtksourceview-3.0-1 3.23.90
    gir1.2-gtksource-3.0,libgtksourceview-3.0-1 3.23.90
    libgtkdsv-3-0,libgtksourceview-3.0-1
    gobby,libgtksourceview-3.0-1 2.91.4
    gnome-sushi,libgtksourceview-3.0-1 3.13.90
    gnome-calculator,libgtksourceview-3.0-1 3.23.90
    gedit-plugin-bookmarks,libgtksourceview-3.0-1 3.21.3
    gitg,libgtksourceview-3.0-1 3.13.90
    giggle,libgtksourceview-3.0-1 2.91.4
    gedit-plugin-zeitgeist,libgtksourceview-3.0-1 3.21.3
    gedit-plugin-word-completion,libgtksourceview-3.0-1 3.21.3
    gedit-plugin-find-in-files,libgtksourceview-3.0-1 3.21.3
    gedit-plugin-draw-spaces,libgtksourceview-3.0-1 3.21.3
    denemo,libgtksourceview-3.0-1 2.91.4
    gedit,libgtksourceview-3.0-1 3.21.5
    balsa,libgtksourceview-3.0-1 3.2.0
    anjuta,libgtksourceview-3.0-1 3.0.0

    Donc, oui : c'est un gros morceau de GNOME !

    • [^] # Re: un gros morceau

      Posté par  . Évalué à 5.

      Pour ne pas avoir de doublon, j'ajouterai "sort | cut -f1 -d" " | uniq", qui donne :

      anjuta,libgtksourceview-3.0-1
      balsa,libgtksourceview-3.0-1
      denemo,libgtksourceview-3.0-1
      gedit,libgtksourceview-3.0-1
      gedit-plugin-bookmarks,libgtksourceview-3.0-1
      gedit-plugin-draw-spaces,libgtksourceview-3.0-1
      gedit-plugin-find-in-files,libgtksourceview-3.0-1
      gedit-plugins,libgtksourceview-3.0-1
      gedit-plugin-word-completion,libgtksourceview-3.0-1
      gedit-plugin-zeitgeist,libgtksourceview-3.0-1
      giggle,libgtksourceview-3.0-1
      gir1.2-gtksource-3.0,libgtksourceview-3.0-1
      gitg,libgtksourceview-3.0-1
      gnome-builder,libgtksourceview-3.0-1
      gnome-calculator,libgtksourceview-3.0-1
      gnome-sushi,libgtksourceview-3.0-1
      gobby,libgtksourceview-3.0-1
      gtranslator,libgtksourceview-3.0-1
      gupnp-tools,libgtksourceview-3.0-1
      latexila,libgtksourceview-3.0-1
      libgtkdsv-3-0,libgtksourceview-3.0-1
      libgtksourceview-3.0-dev,libgtksourceview-3.0-1
      libgtksourceviewmm-3.0-0v5,libgtksourceview-3.0-1
      libjava-gnome-jni,libgtksourceview-3.0-1
      mate-applets,libgtksourceview-3.0-1
      meld,libgtksourceview-3.0-1
      nemiver,libgtksourceview-3.0-1
      pluma,libgtksourceview-3.0-1
      pspp,libgtksourceview-3.0-1
      xpad,libgtksourceview-3.0-1
      
      • [^] # Re: un gros morceau

        Posté par  . Évalué à 3.

        Que fait gnome-calculator dans cette liste ??? o_O

        Mes commentaires sont en wtfpl. Une licence sur les commentaires, sérieux ? o_0

        • [^] # Re: un gros morceau

          Posté par  . Évalué à 6.

          Pour la complétion des fonctions de math, et peut-être aussi le undo/redo.

    • [^] # Re: un gros morceau

      Posté par  . Évalué à -3.

      Donc, oui : c'est un gros morceau de GNOME !

      Quand tu vois* qu'ils ont donné environ 800 000 dollars en 2 ans à leur f*u*meux Outreach Program, on n'a pas encore les chiffres pour 2016, on se demande quelles sont les objectifs de ce projet. Les proportions sont délirantes!

      J'utilise Gnome 3 depuis un bout de temps mais cette tendance du libre à faire du lobbyisme pour un problème inéxistant ou au mieux dérisoire, me répugne.

      * https://www.gnome.org/wp-content/uploads/2017/07/GAR2016-web.pdf page 12.

      • [^] # Re: un gros morceau

        Posté par  . Évalué à 3.

        Va falloir que tu dises plus précisément d’où tu sors ces 800 k€. Le document que tu donnes en lien ne dit pas du tout ça.

        Accessoirement, ce sont généralement des subventions allouées : c’est à dire que si gnome ne met pas spécifiquement en place un programme éligible aux subventions, ils ne pourront pas les allouer à autre chose, ils ne les toucheront plus et quelqu’un d’autre en profitera.

        Mes commentaires sont en wtfpl. Une licence sur les commentaires, sérieux ? o_0

        • [^] # Re: un gros morceau

          Posté par  . Évalué à 0. Dernière modification le 20 septembre 2017 à 16:20.

          Les années 2014+2015 = 800 000$
          Mais j'ai confondu Income (page 12) et Expenditures (page 13). Les proportions restent énormes cependant.

          Revenues (page 12)
          OPW/Outreachy
          2014 $552,850
          2015 $256,273
          2016 $0 (OPW étant une entité à part maintenant)

          Dépenses (page 13)
          OPW/Outreachy
          2014 $275,369
          2015 $321,723
          2016 $5,500 (OPW n'est plus, par contre, il y a toujours un petit billet qui tombe. :))

      • [^] # Re: un gros morceau

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

        la réponse est simple pourtant, Qt

        www.solutions-norenda.com

    • [^] # Re: un gros morceau

      Posté par  . Évalué à 2.

      J'ai utilisé la commande apt-cache rdepends <package_name>, pour GtkSourceView 3 et 2. Et récursivement pour les bindings.

  • # GtkSourceView vs WebKitGTK+ ?

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

    À une époque il était à la mode de faire des démos pour montrer ce que WebKitGTK+ pouvait faire en termes d'édition.
    Par exemple https://arstechnica.com/information-technology/2009/07/how-to-build-a-desktop-wysiwyg-editor-with-webkit-and-html-5/
    En quoi les usages de GtkSourceView et WebKitGTK+ sont-ils comparables ou différents ?

    • [^] # Re: GtkSourceView vs WebKitGTK+ ?

      Posté par  . Évalué à 9. Dernière modification le 21 septembre 2017 à 12:57.

      J'ai un peu d'expérience avec WebKitGTK+ en étant mainteneur de Devhelp, mais je n'ai jamais essayé de créer un éditeur de texte avec WebKitGTK+. En lisant l'article de arstechnica, on se rend compte assez vite que ça devient au final du développement web, avec du HTML, CSS et JavaScript.

      Je sais qu'Evolution est passé à WebKitGTK+ pour écrire des mails. Sans doute que ça convient pour ce cas d'utilisation. Mais gitg, qui utilisait WebKitGTK+, est (re?)passé à GtkSourceView (gitg est développé par les mêmes développeurs que gedit/GtkSourceView). Pour gitg, je me rappelle vaguement de la conversation sur IRC, ils disaient que WebKitGTK+ n'était pas vraiment approprié pour ce qu'ils voulaient faire, que l'API n'était pas très pratique, et qu'ils avaient un plus grand contrôle avec GtkTextView/GtkSourceView.

  • # Double participation

    Posté par  . Évalué à 3.

    Bonjour, merci pour ton travail, j'utilise gedit et builder qui font appel a GtkSourceView, et je trouve que ça fonctionne bien, et c'est agréable de retrouver la même interface d'un logiciel à l'autre.

    Je suis programmeur du coté obscure (logiciel propriétaire), mais je cherche un projet opensource auquel participer avec un temps limité.
    Vu que j'utilise Gnome 3, et que j'apprécie, participer à un logiciel (ou une brique logiciel) Gnome 3 me parais logique.
    Est-ce que ça t'intéresse d'avoir de l'aide de quelqu'un de pas forcément très assidue ?
    Est ce qu'il y a une doc pour se plonger dans le code, faire des tests ?
    Quel est le meilleur moyen de prendre contact ?

    PS: A défaut de participation active dans un projet (pour l'instant), j’essaie de participer financièrement, j'ai un compte liberapay, donc je t'ai ajouter dans la liste des bénéficiaires.

    • [^] # Re: Double participation

      Posté par  . Évalué à 5.

      Merci pour ta première participation :-)

      Pour apprendre GLib/GTK+, je te conseille de lire ce guide que j'ai écrit.

      Pour apprendre à contribuer à un logiciel libre, ce vieux article d'un ancien développeur GNOME est intéressant. Sinon il suffit de lire le fichier README, HACKING (ou CONTRIBUTING), et ce genre d'autres fichiers TOUT_EN_MAJUSCULE.

      Pour GtkSourceView et Tepl, ce sont des bibliothèques donc il n'y a pas de fonction main() comme point d'entrée, chaque fonction publique est un point d'entrée. Tout est bien documenté, donc en ouvrant la doc avec Devhelp, il ne devrait pas y avoir de soucis à apprendre l'API (une fois que tu connais suffisamment bien GLib et GTK+).

      Mais développer une bibliothèque est plus difficile que développer une application, il faut faire attention à l'API. Et il faut que l'API convienne à un maximum d'applications. Il faut choisir une bonne balance entre la simplicité et la flexibilité. L'avantage avec Tepl c'est qu'on peut faire des expérimentations, casser l'API tous les 6 mois, si ce n'est pas parfait du premier coup ce n'est pas grave.

  • # Scintilla

    Posté par  . Évalué à 3.

    Et c'est quoi les différences avec Scintilla ?

    Je viens de lancer gedit et je dirais déjà :
    +++ recherche multilignes
    --- pas de mode colonne.

    • [^] # Re: Scintilla

      Posté par  . Évalué à 4.

      Scintilla se situe au niveau de GtkTextView + GtkSourceView, mais il y a des différences dans les fonctionnalités fournies. Je pense que GtkTextView est meilleur pour l'internationalisation (bon support d'Unicode, texte de droite à gauche etc, grâce à Pango). Je pense que GtkSourceView a une meilleure recherche et remplacement (incluant la recherche par regex, c'était mon sujet de GSoC). Scintilla a le code folding, …

      Pour écrire une appli en GTK, l'API de GtkSourceView sera plus familière au développeur pcq ce sont des classes GObject comme tous les widgets GTK. Scintilla a une API un peu étrange je trouve, mais c'est peut-être pcq je ne suis pas habitué. Je trouve la documentation de Scintilla assez horrible, en comparaison GtkSourceView est documenté avec gtk-doc ce qui permet de l'ouvrir avec Devhelp. Enfin bon, je suis évidemment biaisé.

      Scintilla a des backends pour différents toolkits : GTK+, Qt, pour Windows, etc. Et GTK+ lui-même (ou plutôt GDK pour être plus précis) a lui aussi des backends pour différentes plateformes : Wayland, X11, Windows, Mac, etc. GtkSourceView utilise directement GTK+, donc il n'y a qu'une seule couche de backend.

      Mais là où ça devient intéressant du côté de GtkSourceView est le framework dans Tepl, qui fournit des APIs de plus haut niveau (ça utilise par exemple GtkApplication, GtkApplicationWindow, GtkNotebook), ce que Scintilla ne sait pas faire. J'ai bon espoir qu'en 1000 lignes de code il soit possible d'écrire un éditeur de texte basique comme gedit (sans les plugins), tandis qu'avec Scintilla ça demande je pense beaucoup plus de boulot (comme c'est le cas actuellement si on utilise seulement GtkSourceView). Mais bon il y a encore du boulot dans Tepl, mais à ce stade-ci je pense que le reste qu'il y a à faire est entièrement faisable (1% inspiration, 99% transpiration, là je pense être à 50% de transpiration ;-).

  • # L'auteur de IT-Edit (Integrated Terminals Editor) fait un dont.

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

    Salut Sébastien et les autres.

    En tant que mainteneur de mon outil de travail, l'éditeur a terminaux intégrés: IT-Edit,

    et étant pauvre j'ai quand même verser 15 € dans la catégorie petit:

    Petit
    
    0,25 € par semaine ~ 1,08 € par mois ~ 13,00 € par an
    

    Car GtkSourceView-3 m'est essentiel pour mon éditeur et gspell-1 aussi même si je continue a râler sur Sébastien qui ne veut pas mettre de macro de version comme il est d'usage dans une library.


    Je serai même prêt a m'investir d'avantage en proposant de l'aide technique mais je n'ai pas les qualité requises de GThacKtivist pour cela.


    Je conseille aux autres utilisateurs de IT-Edit d'en faire autant.

    Et aux autres d'essayer IT-Edit aux moins pendant une petite semaines afin de voir la puissance de cet outil qui permet de contrôler tout le système:

    Des terminaux intégrées, avec un bon Makefile fait maison c'est top !

    1. Terminaux a volontés sur la sidebar.

    2. Terminal plein écran divisible en 4 par un shortcut.

    3. Terminaux top-level a volonté.

    De l'enregistreur de documentation HTML ou PDF ou bien le fichier que vous voulez.

    Après une fois enregistrés vous pourrez lancer vos documentations ou autre a souhait en 2 clic depuis l'intérieur de l'éditeur.

    Cela évite bien des recherches dans /usr/share/doc avec IT-Edit vous ne devrai faire la recherche qu'une fois.

    De l'enregistreur d'applications.

    Le concept est le même l'on enregistre une fois et vous pourrez lancer des applications graphiques dès que vous en avez besoins sans avoir besoin de :

    1. Minimiser l'éditeur.

    2. Ouvrir le menu.

    3. Cliquer sur l'icône.

    Avec IT-Edit un simple clic dans le menu lance votre application enregistré si elle ne l'est pas déjà car IT-Edit tiens une liste d'applications pré-programmer a être enregistrer au premier lancement.

    Du lecteur de man-pages qui est en faîtes une commande lancer dans un terminal top-level :

    Vous appuyer sur le bouton Execute puis une fenêtre vous propose de taper une commande.

    Par exemple man 3 fprintf et la page de manuel s'ouvre.

    Une fois lu vous disposer du terminal top-level a souhait.

    Et vous pourrez aussi jouir de la complétion automatique comme la vérification orthographique, grâce a gspell-1 en 2 modes différent:

    En place: soulignement des mots mal orthographiés dans la langue choisie.

    En mode dialogue.

    Du gestionnaire de session qui enregistre:

    1. Les fichier ouverts.

    2. Les fichiers (documentation HTML, PDF, etc…) lancés.

    3. les applications lancés.

    Ce qui permet de les recharger au prochain démarrage.

    Malgré que concernant la documentation elle a tendance a s'agréger faute d'un erreur de programmation de ma part.

    Qui a 3 modes de fonctionnements:

    • Mode automatique : enregistrement a chaque fermeture de session.

    • Mode interactif : demande de confirmation d'enregistrement a la fermeture de l'éditeur de programmation a terminaux intégrer. C'est mon choix de configuration.

    • Disabled : pas d'enregistrement de session du tout.

    Vous pourrez faire et connaître des tas de choses avec la fenêtre d'information sur le fichier courant.

    Et bien sur IT-Edit dispose de toutes les fonctionnalités d'un éditeur de programmation basique génial.

    Comme par exemple la fonctionnalités de dupliquer la ligne du curseur ou la sélection.

    NOTE: La fonction de remplacement dans tous les fichiers reste a améliorer. car je le fait d'habitude en me servant des fileutils et de sed.


    Vous pourrez râler et cracher dessus après l'avoir tester.

    Car actuellement je suis entièrement combler et fière de mon outil de travail et en panne d'idées de nouvelles fonctionnalités pour une nouvelle version…

    Si vous avez vous des suggestion en tant que utilisateur ou testeur de IT-Edit, je suis preneur.


    Thanks for all feedback, ideas or comments.

Suivre le flux des commentaires

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