Julien Jorge a écrit 530 commentaires

  • [^] # Re: L'argent, la solution à tous les problèmes

    Posté par  (site web personnel) . En réponse au lien Why I Use the GPL and Not Cuck Licenses. Évalué à 4.

    Oui la LGPL c'est une bonne licence pour pousser un peu au partage sans être très contraignant. Perso je la trouve assez fair play, « je partage un truc avec toi et en échange tu partages tes modifs sur le même truc ».

    En pratique malheureusement elle m'a l'air aussi impopulaire que la GPL. Entre ceux qui ne veulent que du link statique, ceux qui ne sont pas au courant de la subtilité, ceux qui refusent de remonter leurs patchs, et les boîtes qui craignent qu'un dev embarque un peu vite du code LGPL en statique. Au final il ne reste plus grand monde.

  • # L'argent, la solution à tous les problèmes

    Posté par  (site web personnel) . En réponse au lien Why I Use the GPL and Not Cuck Licenses. Évalué à 9.

    What I don't understand is simultaneously releasing free code with no requirement that it remain free. It can now be used against you and others—if you had moral qualms about that, you could've at least made money off of it yourself.

    C'est pourtant simple, il y a peu de raisons qui poussent à utiliser une BSD-like plutôt que la GPL ou du code fermé :

    • je considère que le code que j'écris et le code de l'application dans lequel c'est intégré sont deux choses différentes : pas de raison de forcer l'application à suivre la même licence.
    • j'ai envie de montrer le code, d'avoir des retours sur ce que je fais, et je ne suis pas particulièrement cupide : pas de raison de faire du code fermé.
    • j'aimerais bien qu'il y ait plus de code libre mais je ne veux pas contraindre les gens (chacun sa vie comme on dit). Je montre l'exemple avec une licence ouverte et je ne prends pas la GPL pour éviter le rapport de force.

    Par contre je ne vois pas ce que vient faire l'argent dans cette histoire. Ça changerait la légitimité de la licence d'après l'auteur ?

    Using a Cuck License especially for "ethical reasons" or "because I like open source software" is beyond absurd. You're simply writing code and effectively abandoning the privileges of intellectual property while allowing any large corporation to come and close-source and monetize your software and sell it back to you without any other obligations.

    Ah apparemment c'est effectivement principalement une histoire d'argent.

    If you want praise for some contribution, put it in the license. If you don't want your software used for proprietary software, use the GPLv3.

    Ah bah voilà, là on est d'accord :)

    With Cuck Licenses, you get the worst of two worlds: You get no credit for your work, nor money for licensing fees like other proprietary software and your software will be used to violate your and other users' privacy when it is used in closed-source environments.

    … et ça n'aura pas duré longtemps. […] your software will be used to violate your and other users' privacy […] Comme si une licence virale pouvait empêcher la malfaisance. Et puis ce serait plutôt could be used.

    If Tanenbaum had released MINIX under the GPL, we wouldn't be at the mercy of Intel's business decision. They would've had to release the source code for the microprocessor, keeping user privacy ensured and irradicating the permanent spyware liability all computers have nowadays.

    If they wouldn't want to do that, they'd have to just write an operating system themselves. […] It would've been a lot more respectable to not use a permissive license and instead license it proprietarily if he has no moral issues with proprietary software: he could've at least gotten Intel to pay him to use his operating system. Heck, if he had used the GPL and if they took it anyway, he could become an insta-millionaire by suing them right now.

    Bon là j'ai un peu de mal. C'est acceptable qu'Intel installe un logiciel espion s'ils ont payé pour le code ? Devenir riche en faisant un procès à une boîte qui a silencieusement utilisé du code GPL pour faire quelque chose de mal serait une bonne chose ?

    Bof bof, beaucoup de colère dans ce post pour pas grand chose. De mon point de vue le choix d'une licence est simple : si tu veux que ça ne soit utilisé que par des logiciels en GPL, utilise la GPL. Si tu veux des retours sur ton code et que ça puisse être utile à tout le monde, utilise une BSD, MIT ou Apache. Si tu veux des retours sur ton code mais ne rien donner, fait de l'open source avec un bon vieux copyright classique. Sinon fait du code fermé.

  • [^] # Re: Firefox snap

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de la version Ubuntu LTS 22.04. Évalué à 10.

    Même souci ici, et même solution. J'ai du mal à voir l'intérêt de Snap si ce n'est pour participer à la hype Flatpak, AppImage, etc. Ça met une éternité à se lancer, ça consomme des gigas sur le disque, et en plus le sandboxing empêche l'intégration avec d'autres apps (de souvenir c'était galère d'accéder au scanner avec le Flatpak de GIMP).

    On nous promet que demain ça sera mieux, qu'on pourra avoir des apps super sécurisées en mode sandboxing avec des permissions (whoaaa !), et pour l'espace disque ben il n'y a qu'à acheter des disques, c'est pas cher ! C'est plus que zéro mais quand même moins cher que… euh… que ce que ça a été il y a 30 ans ?

    Et à côté de ça on a une solution qui juste marche : les PPA. À quoi bon s'embêter avec Snap ?

    Ce commentaire est sponsorisé par l'AVIRÉPCÉMAV, l'Association des VIeux RÉacs qui Pensent que C'Était Mieux À Vent.

  • [^] # Re: C'est moi ou c'est idiot ?

    Posté par  (site web personnel) . En réponse au journal Google forke C++. Évalué à 2.

    Quid de struct tm, résultat de gmtime() ? Il n'y a pas moyen de changer les champs là dedans sans casser l'ABI. Il faut que le code client et la lib soient d'accord sur la composition de la donnée.

  • [^] # Re: C'est moi ou c'est idiot ?

    Posté par  (site web personnel) . En réponse au journal Google forke C++. Évalué à 6.

    Si je peux changer ma représentation interne d'une classe, ne pas recompiler ceux qui utilisent cette classe et tout de même linker avec c'est qu'il n'y a pas de problème d'abi ?

    Ça ne suffit même pas :) Regardez par exemple cette belle lib que l'on va générer en deux versions :

    // lib.hpp
    #pragma once
    
    struct something
    {
      void print() const;
      int a;
    };
    
    // lib.cpp
    #include <lib.hpp>
    
    #include <cstdio>
    
    void something::print() const
    {
      printf("v1 %d, sizeof(*this)=%lu\n", a, sizeof(*this));
    }

    On compile cela et on envoie le .so au client :

    $ g++ -shared -fPIC -I. lib.cpp -o liblib.so

    De son côté le client écrit ce programme :

    // client.cpp
    #include <lib.hpp>
    
    #include <cstdio>
    
    int main()
    {
      int a = 32;
      something s{64};
      int b = 128;
    
      s.print();
      printf("sizeof(s)=%lu\n", sizeof(s));
    
      return 0;
    }

    Il compile ça et teste :

    $ g++ -I. client.cpp -o client -Wl,-rpath,'$$ORIGIN' -L. -llib
    $ ./client
    v1 64, sizeof(*this)=4
    sizeof(s)=4

    Tout va pour le mieux.

    Le vendeur de lib fournit maintenant une nouvelle version de sa lib, la version 2, avec deux fois plus de champs dans something.

    // lib.hpp
    #pragma once
    
    struct something
    {
      void print() const;
      int a;
      int b;
    };
    
    // lib.cpp
    #include <lib.hpp>
    
    #include <cstdio>
    
    void something::print() const
    {
      printf("v2 %d, %d, sizeof(*this)=%lu\n", a, b, sizeof(*this));
    }

    Compilé de la même façon, il envoie le .so au client qui remplace directement l'ancien fichier et relance son programme :

    $ ./client
    v2 64, 32, sizeof(*this)=8
    sizeof(s)=4

    Et voilà, le programme se lance bien, il affiche n'importe quoi (la lib voit dans something::b la valeur 32 qui est dans la pile côté client) et on voit que le client et la lib ne sont pas d'accord sur la taille de something.

    La mise à jour de la lib n'est pas ABI compatible avec la version précédente et pourtant ça link bien. Sur cet exemple c'est bénin mais en pratique ça cause de sacrés problèmes. Et il ne suffit pas d'ajouter ou supprimer des champs pour causer des soucis, rien que changer l'ordre pose problème.

  • [^] # Re: C'est moi ou c'est idiot ?

    Posté par  (site web personnel) . En réponse au journal Google forke C++. Évalué à 7.

    Le comité subit une sorte de pression pour mettre tout un tas de trucs dans la lib standard parce que tel autre langage a telle possibilité ou parce que tel truc est tendance. Du coup ils ont des propositions pour mettre du networking, une api de dessin 2D (abandonnée), des bases de données (abandonnée aussi il me semble), des ranges (i.e. de la composition d'algos) et 2000 autres trucs parce que Java/Python/Autre langage le fait. Ça devient très, très, très complexe.

    À côté de cela on leur demande de livrer un nouveau standard tous les 3 ans parce qu'on a attendu c++0x trop longtemps et qu'on ne veut par subir ça à nouveau. Et puis on aimerait bien être moderne, comme tel autre langage jeune, beau, et tellement cool.

    Du coup ils se retrouvent coincés entre livrer un truc bien pensé ou livrer pour qu'on leur lâche la jambe. Le résultat n'est pas toujours heureux.

    À cela s'ajoute le fait qu'il s'agit de logiciel et donc fatalement toute décision est une mauvaise décision après un laps de temps suffisamment long.

    Personnellement je pense que la lib standard doit être good enough comme on dit, justement parce qu'il n'y aura jamais une implémentation qui satisfait tout le monde. Si on veut aller dans le détail on a toujours la possibilité de prendre une lib à part.

    Après pour ce qui est de l'ABI, est-ce vraiment une mauvaise chose que de vouloir éviter de casser l'existant ? Je n'ai pas trop d'avis là dessus.

  • # Point de vue des devs

    Posté par  (site web personnel) . En réponse au lien Microsoft interdit la vente de produit opensource. Évalué à 5.

    L'auteur m'a l'air bien agressif pour pas grand chose. Voici les deux paragraphes qui portent l'information :

    A few weeks ago, Microsoft quietly updated its Microsoft [app] Store Policies, adding new policies (which go into effect next week), that include this text:

    all pricing … must … [n]ot attempt to profit from open-source or other software that is otherwise generally available for free [meaning, in price, not freedom].

    Microsoft [argues] that this is about curating content for customers and/or limiting FOSS selling to the (mythical) “One True Developer”. But, even a redrafted policy (that Giorgio Sardo (General Manager of Apps at Microsoft) hinted at publicly early today) will mandate only toxic business models for FOSS (such as demo-ware, less-featureful versions available as FOSS, while the full-featured proprietary version is available for a charge).

    Ce que je comprends c'est qu'il y a une nouvelle règle pour ne pas abuser du travail fait par les développeurs de logiciels libres.

    Perso je ne vois pas trop la gêne, je suis sûrement influencé par l'opinion d'un grand logiciel libre sur cet excellent site il y a quelques jours :

    D'ailleurs en parlant d'utiliser le nom, il y a aussi la problématique de se faire des sous faciles en induisant en erreur les acheteurs. Beaucoup croyaient aider le développement du projet GIMP en payant sur la boutique en ligne. Ce n'était pas forcément une usurpation d'identité claire […], mais beaucoup laissaient simplement un flou suffisant en n'annonçant pas explicitement être un empaqueteur tiers tout en mettant un prix […]. Ce n'était pas agréable que des gens aient ainsi la sensation de se faire arnaquer en utilisant la réputation de notre logiciel.
    […]
    Malheureusement force est de constater que des empaqueteurs se contentaient de reprendre notre travail et de le faire payer en gardant le flou sur la provenance. Certes pas illégal, mais un business bien tristounet.

  • [^] # Re: Manque de pratique...

    Posté par  (site web personnel) . En réponse au journal Un utilitaire pour formater la sortie de avr-objdump. Évalué à 7.

    C'est corrigé :) Merci po,ur le journals.

  • [^] # Re: Lien mal formaté

    Posté par  (site web personnel) . En réponse au journal Les IA des GAFAM sont-elles sentientes ?. Évalué à 3.

    Je connais pas la raison de l'impossibilité d'éditer son journal mais j'ai quand même corrigé le lien :)

  • [^] # Re: Moi qui croyait qu'il était libre

    Posté par  (site web personnel) . En réponse au journal Adieu Atom :(. Évalué à 7.

    Le journal suggère quand même que la cause de l'arrêt d'Atom est le rachat par Microsoft, et que l'arrêt est fait dans le but de favoriser VS Code. Alors certes ce n'est pas « méchant Microsoft » mais ce n'est ni neutre, ni « gentil microsoft » :)

  • [^] # Re: et les fonctions

    Posté par  (site web personnel) . En réponse au journal Software architecture considered harmful. Évalué à 10.

    Avec les écrans qu'on a aujourd'hui il n'y a pas de raison de se limiter à 400 lignes. Moi avec mon 50 pouces installé en portrait, je mets une police 6 et je peux afficher 73269 lignes sans problème.

  • # Pas sûr

    Posté par  (site web personnel) . En réponse au journal Software architecture considered harmful. Évalué à 10.

    Je comprends ta souffrance et pourtant ça ne me semble pas évident. Quand je repars sur des trucs simples, j'en reviens toujours à ressentir les mêmes effets :

    • trop de lignes dans le fichier : « c'est le bordel, ce fichier fait trop de trucs »
    • trop de trucs enfouis dans le bazar : « pas moyen d'écrire un test unitaire pour cette fonction déclarée statique au fond d'un fichier avec dépendances à des variables globales » (ça marche aussi avec trop d'encapsulation)
    • au bout d'un moment j'en ai marre et je range : « et vas-y qu'il faut que je déplace tout le bazar, et vas-y qu'il y a des dépendances implicites et des raccourcis moisis ».

    Alors avec le temps je préfère encore une arborescence plutôt vide qu'un petit tas de trucs empilés en vrac :) La simplicité, je la cherche ailleurs : calmos sur l'OOP, calmos sur la metaprog, calmos sur les dépendances third party (outillage ou libs).

    Pour le multi-dépôts je n'ai pas encore tranché. J'aime que ce soit séparé et isolé, mais d'un autre côté le mono-repo est bien confortable pour les refactos et pour retrouver tout le projet dans un état donné.

  • [^] # Re: Cas d'usage

    Posté par  (site web personnel) . En réponse à la dépêche Compiler Explorer a 10 ans. Évalué à 4.

    Au boulot on utilise la stratégie que tu décris. Nous avons environ 30 000 lignes d'assembleur (en utilisant des intrinsèques, ce qui est quand même plus pratique que l'assembleur brut) et la principale motivation est d'avoir ces fonctions aussi optimisées que possible. Le meilleur moyen d'y arriver est de les écrire avec les instructions que nous voulons voir dans le binaire. Le cadre est assez fixe cela dit puisque nous visons un seul couple architecture/compilateur.

    Nous avons aussi une version C pour chaque fonction optimisée, à la fois comme fallback mais aussi comme référence pour la version assembleur.

    En pratique on remarque que certains compilateurs arrivent à émettre de l'assembleur équivalent à celui écrit à la main depuis fonctions C. Ce n'était pas le cas avec de plus anciennes versions.

    Perso je trouve qu'il nous manque quelque chose pour mesurer le gain apporté par les fonctions optimisées, pour voir si elles sont toujours pertinentes. Nous avons des mesures globales, qui englobent toutes les optims, mais rien individuellement. J'ai bien entamé un truc à base de Google Benchmark mais ce n'est pas évident d'avoir un test représentatif des cas d'utilisation réels.

  • [^] # Re: Cas d'usage

    Posté par  (site web personnel) . En réponse à la dépêche Compiler Explorer a 10 ans. Évalué à 3.

    Je l'utilise le plus souvent pour confirmer que le compilateur va bien effectuer certaines optims (genre éviter d'appeler systématiquement une fonction dans une boucle quand son résultat ne dépend pas de l'itération).

    Le deuxième cas d'utilisation que j'ai est de comparer les sorties de différents compilateurs.

    Et de temps en temps c'est aussi juste pour être impressionné par les transformations d'optimisation.

  • [^] # Re: Typo

    Posté par  (site web personnel) . En réponse au journal Broadcom rachète VMware. Évalué à 3.

    C'est corrigé, merci :)

  • [^] # Re: Liens hors sujet

    Posté par  (site web personnel) . En réponse à la dépêche À propos des liens sur le site LinuxFr.org. Évalué à 6.

    Que ce soit pour les liens ou les journaux notre politique est de ne pas filtrer et de laisser faire le moinsage. Il y a régulièrement des contenus qui ne concernent ni le libre ni l'informatique et qui sont pourtant bien accueillis, et si nous commençons à les bloquer en amont nous allons nous priver de contenus intéressants ou divertissants, y compris de ce putain d'ornithorynque.

    C'est une situation de tout ou rien. Du coup la seule solution valable est de ne bloquer que ce qui est manifestement illégal. La communauté se charge d'évaluer l'intérêt du reste. Dans les faits on observe que ça reste grosso-modo dans le thème.

  • [^] # Re: Bruno Michel

    Posté par  (site web personnel) . En réponse à la dépêche À propos des liens sur le site LinuxFr.org. Évalué à 10.

    Merci, c'est important pour ma street cred' :)

    Comme tu as l'air nouveau sur le site je me permets de te pointer un journal que j'avais écrit sur le sujet ;)

  • # super article

    Posté par  (site web personnel) . En réponse au lien « ton compilo il écrira toujours du code meilleur que toi » : vérification avec std::find(). Évalué à 10.

    Aussi disponible en français sur LinuxFr.org ;)

  • [^] # Re: précédemment

    Posté par  (site web personnel) . En réponse au lien suite à la mise en demeure de la CNIL, Google permet de rejeter les biscuits en un click en Europe. Évalué à 2.

    C'est fait :)

  • [^] # Re: intéressant

    Posté par  (site web personnel) . En réponse au journal Comparatif d'outils d'analyse mémoire. Évalué à 4.

    ça veut dire qu'il fonctionne sur un binaire dont on a pas les sources?

    Tout à fait, Valgrind et Inspector peuvent trouver des erreurs sans des binaires sans avoir les sources. Par contre s'il n'y a pas les symboles de debug ils vont avoir du mal à dire de quelle ligne ça vient. De tête il me semble qu'ils affichent l'adresse de la fonction.

  • [^] # Re: Test manquant ?

    Posté par  (site web personnel) . En réponse au journal Comparatif d'outils d'analyse mémoire. Évalué à 2.

    Bien vu ! Merci :)

  • [^] # Re: Résultats différents pour asan

    Posté par  (site web personnel) . En réponse au journal Comparatif d'outils d'analyse mémoire. Évalué à 2.

    Ceci dit, je me suis déjà compilé des versions récentes de clang++ pour CentOS. C'est fort pratique pour avoir des outils tels que les sanitizers, de meilleurs warnings, clang-tidy, un serveur LSP, etc même quand on est restreints à du C++ 98.

    Si tu as des conseils pour avoir un Clang 13 ou ultérieur sur CentOS 7.9 ça m'intéresse. De souvenir je n'avais pas pu le compiler car le compilateur installé, GCC 4.8 ne supportait pas une version suffisamment récente de C++.

  • [^] # Re: Pourquoi ?

    Posté par  (site web personnel) . En réponse au journal Comparatif d'outils d'analyse mémoire. Évalué à 3.

    Pour la machine dans le nuage j'ai gardé le GCC de base car c'était notre second compilateur de référence. Comme c'est un vieil OS avec de vieux outils je n'avais pas de quoi y tester MSan avec Clang. Pour ma machine locale j'ai gardé GCC pour ASan afin de pouvoir comparer les résultats d'une simple mise à jour de compilateur.

    Dans l'absolu j'imagine que le compilateur ne joue pas tellement sur les résultats d'ASan puisque c'est une lib développée indépendamment.

  • [^] # Re: Coquille

    Posté par  (site web personnel) . En réponse au journal [LWN] Une porte de sortie pour a.out. Évalué à 10.

    C'est fait. J'ai remplacé une paire de « and » par « et » aussi.

    Merci pour le journal, c'est très intéressant :)

  • # Libre

    Posté par  (site web personnel) . En réponse au lien Memtest86+ revient (libre ou pas ?). Évalué à 4.

    L'idée est de partir de la base existante de pcmemtest tout en gardant le nom originel, puis d'y ajouter du code issu des développeurs de Memtest86+.

    Vu que pcmemtest est en GPL 2, a priori ça sera libre.