Journal Un an de FreeCAD (en tant que contributeur)

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
76
6
fév.
2017

Il y maintenant un an je commençais une aventure, contribuer a un projet libre pour les besoins de l’équipe d’Horizon Computing : FreeCAD.

Pour rapide mémoire, Horizon est ma société, et nous développons des ordinateurs en mode ouvert ou open hardware. La tâche est ardue car nous devons faire tomber beaucoup (peut‐être trop à notre échelle) de verrous technologiques et légaux.

Jusqu’à présent nous développions nos ordinateurs avec des logiciels propriétaires (c’est toujours le cas pour certaines parties), et je trouvais sincèrement absurde de faire la promotion de l’open hardware en utilisant des outils propriétaires (tout comme faire tourner Linux sur du matériel propriétaire va le devenir). L’usage de ces outils limite drastiquement l’expansion des communautés open hardware car leur accessibilité est limitée. Nous faisons maintenant partie d’Open Compute, d’Open Power et RISC-V. Ces communautés sont pilotées par des entreprises qui ont beaucoup d’argent et ont mis très longtemps à comprendre l’importance de l’accessibilité aux outils, ce qui leur a valu d’ailleurs des volées de bois vert de la part de certains membres qui développent des logiciels libres ou d’autres solutions open hardware.

Rome ne s’est pas construite en un jour et je pense que l’on peut prouver que les logiciels libres sont par essence une bonne solution pour concevoir des ordinateurs libres. Mais il faut pour autant les adapter. J’aime utiliser cet exemple, est‐ce que le noyau Linux se serait développé avec l’usage d’un compilateur propriétaire ? Probablement que non et je pense que c’est pareil pour l’open hardware. Ce mouvement deviendra un succès le jour ou il sera auto‐suffisant et que nous irons tous dans la même direction (je pourrai écrire un roman sur le comportement des libristes vis‐à‐vis d’OCP et du matériel libre, de leur amour pour les marques propriétaires et les guerres de chapelles que l’open hardware engendrent, mais ce n’est pas le propos du jour, ça me rappelle Linux vs Unix et on connaît la fin).

Alors, que manque‐t‐il à FreeCAD et que s’est‐il passé durant ma première année de contributeur ? La première des choses, j’ai beaucoup appris. FreeCAD est un code extra‐ordinaire qui utilise un nombre incalculable de technologies auxquelles je tire mon chapeau. Le moteur 3D est basé sur l’excellent OpenCascade, le rendu sur Inventor/Coin3D et la possibilité de scripter via Python est un plus non négligeable. Le hic, c’est qu’au final, même si le code est bien architecturé, il est énorme et créer sa première contribution peut sembler au premier abord un sacré challenge.

Toutefois, le code est développé et maintenu par une petite équipe d’amateurs (c’est un projet sur lequel aucune personne ne travaille à temps plein), qui a besoin de nouveaux contributeurs. L’accueil qui m’a été fait a été super positif et j’ai pourtant commencé par un commit de 100 000 lignes (pas un petit commit).

Durant cette année, j’ai passé pas mal de temps à comprendre les problèmes de performances du logiciel et à mettre à jour les bibliothèques de base sur lesquelles il repose (passage d’OCE 6.7 à OCCT 7.0.0 ou 7.1 en fonction des publications, mise à jour de SMESH, accélération de la lecture des fichiers STEP et, en ce moment, migration du moteur de rendu vers la prise en charge des VBO OpenGL, afin de multiplier par trois le frame rate).

Tout cela n’aurait pu se faire sans le support de la communauté FreeCAD, que je remercie chaleureusement et qui intègre au fur à mesure ces fonctions dans la version en cours de développement (0.17). Les contributeurs OCP peuvent maintenant traiter et commenter les conceptions mécaniques avec FreeCAD, ce qui n’était pas le cas il y a quelques mois. Le projet RuggedPOD est maintenant entièrement conçu avec FreeCAD !

Mes prochaines étapes consistent à intégrer un solveur libre (Elmer) en utilisant FreeCAD comme solution de pré et post traitement. Une fois qu’on aura fait tout cela et que la nouvelle version du module PartDesign sera publiée, je pense que l’on pourra développer l’ensemble des éléments mécaniques d’un serveur et d’un datacenter avec des logiciels libres. Vivement la version 0.18 !

Tout ça pour vous dire qu’avec de la volonté, on peut réussir a changer les choses. Bon, soyons honnêtes, il m’a fallu beaucoup de temps pour faire toutes ces modifications dans le code. D’autant que cela faisait plus de quinze ans que je n’avais pas fait de 3D, mais c’est comme le vélo.

Je crois sincèrement que l’avenir de l’open hardware passe par le succès de certains logiciels libres, et que les améliorer permettra à une génération d’architectes matériel d’améliorer leur conception en collaborant. Alors, si vous avez un peu de temps, devenez contributeur FreeCAD ! Et consommez de l’open hardware (même chez votre hébergeur préféré), vous aiderez différentes communautés en pleine ébullition à créer le futur de l’informatique ou d’autres secteurs industriels et disposerez de machines beaucoup plus maintenables (plus d’obsolescence programmée) et dépourvue de portes dérobées (dès qu’on aura tout sur des micrologiciels libres).

  • # micro-service ou autre

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

    Dans un projet monstrueux, je pense qu'il est important d'avoir un moyen de faire "léger".

    Un nouveau venu ne peut pas apprendre un truc monstrueux et codé en même temps, il veut un minimum de productivité. Linux n'est pas mauvais, pour commencer, coder un driver n'est pas si difficile, avec des pièges bien documenté, et une api fixe.

    J'imagine qu'avoir un système équivalent avec une api interne documentée, permet de rentrer plus facilement dans un projet.

    Le piège est bien sûr de ne pas tomber dans les plugins Eclipse, et leur "dépendancy Hell" (l'api fixe est un bon moyen de simplifier le problème).

    "La première sécurité est la liberté"

    • [^] # Re: micro-service ou autre

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

      Il est possible de coder des modules dans FreeCAD en ne connaissant que python d'ailleurs. Mon approche en tant que nouveau contributeur a plutot ete macroscopique. J'aime bien comprendre l'ensemble d'un code avant d'essayer d'amener des ameliorations. C'est une approche differente, mais les deux peuvent amener a contribuer ce qui est l'essentiel.

      Pour ce qui est de la documentation, y a encore pas mal de boulot ;)

      • [^] # Re: micro-service ou autre

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

        Et dans python, l'API est fixe et documenté ? C'est le plus important.

        "La première sécurité est la liberté"

        • [^] # Re: micro-service ou autre

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

          L'API est fixe, documentee pas trop d'ou la necessite d'avoir plus de contributeurs ;)

          • [^] # Re: micro-service ou autre

            Posté par  (site web personnel) . Évalué à 10. Dernière modification le 06 février 2017 à 13:38.

            Un jour, enfin souvent, les vieux contributeurs, imaginent avoir de nouveaux contributeurs magiques capable de deviner la signification et les pièges de chaque fonctions d'api, bien mieux que ceux qui les ont écrites.

            :)

            "La première sécurité est la liberté"

            • [^] # Re: micro-service ou autre

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

              Exact. En meme temps je suis dans la meme situation que toi, car je n'ai ecrite aucune de ces API dans FreeCAD (suis une quiche dans ce domaine ;)), et je suis donc contraint de lire beaucoup (parait que c'est bon pour le cerveau ;)). Mais je suis d'accord une bonne doc ferait vraiment du bien !

    • [^] # Re: micro-service ou autre

      Posté par  . Évalué à 2.

      Je ne connais pas le problème dont tu parles avec les plugin Eclipse. Tu peux détailler s'il te plaît?

      • [^] # Re: micro-service ou autre

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

        Si tu utilises dans le cadre d'un projet un grand nombre de plugin tu peux tomber dans des cas, de dépendances en "diamant" sur des versions différentes de plugin. Il faut donc trouver la bonne combinaison de version pour que cela marche…

        "La première sécurité est la liberté"

  • # Impression 3D

    Posté par  . Évalué à 7.

    J'ai découvert FreeCAD avec l'impression 3D et j'adore.
    Je m'en sers également pour préparer mes plans de découpe laser (merci le fablab)
    Je ne connaissais rien au monde de la 3D.
    J'ai appris avec les tutos vidéos de CAD Printer (https://www.youtube.com/channel/UChwUxlPx6EP4hKFQyA4rCuQ)
    Quel plaisir de concevoir sa pièce dans FreeCAD, puis de la voir imprimée. (Ce ne sont pas des pièces d'une grande complexité)
    J'aime bien l'atelier Assembly2 qui permet d'assembler plusieurs pièces et de vérifier de tout s'emboîte parfaitement.
    Je suis un fan.
    Mais je pense utiliser moins de 1% des fonctionnalités….
    Merci pour cette excellente application.

    • [^] # Re: Impression 3D

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

      Merci pour ton retour ca fait toujours plaisir ! N'hesite pas a poster tes modeles sur le forum FreeCAD, l'equipe de developpement apprecie de decouvrir ce que les utilisateurs font avec le logiciel.

      Assembly2 est en cours de re-ecriture complete par ickby qui introduit de nouveaux concepts dans PartDesign. Je pense que le resultat devrait te plaire.

    • [^] # Re: Impression 3D

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

      Oui moi aussi j'adore Freecad et j'ai appris la CAO avec en m'appuyant sur des tutos (vidéos ou écrits) trouvables un peu partout sur la toile.
      Et puis quand on a une imprimante 3D c'est un logiciel très utile pour ne pas dire indispensable.

      kentoc'h mervel eget bezan saotred

  • # Code Saturne

    Posté par  (site web personnel) . Évalué à 6. Dernière modification le 06 février 2017 à 12:32.

    Si je pouvais, je contribuerais 100 % de mon temps à Freecad, c'est bien l'un des projet Open Source qui correspond à mes aspirations. Nous avons de plus besoin d'utiliser Elmer (actuellement nous utilisons COMSOL). Vivement que tu puisses achever ton intégration!

    Je ne m'y connais pas suffisamment dans ce type de solution pourquoi Elmer à la place de code-staturne par exemple? (on en a besoin pour simuler des plasmas, si tu cherches quoi faire après avoir intégré Elmer …)

    Merci en tout cas!

    • [^] # Re: Code Saturne

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

      L'integration d'Elmer risque de faire partie du prochain GoSC ;), meme si ce n'est pas encore totalement securise. J'aimerai integrer code-saturne, d'autant qu'il est developpe a 500m d'ou je travaille tous les jours. Le truc c'est qu'EDF est scotche avec le CEA sur la platforme Salome qui est une usine a gaz et n'est pas du tout un modeleur parametrique, du coup pour comprendre comment bien integrer code-saturn c'est pas simple, surtout avec le format MED. Elmer dispose d'un forum ouvert et en tant que contributeur on peut vraiment discuter avec les developpeurs de l'appli.

      J'aimerai vraiment que Saturne soit integre, mais l'approche a la francaise est un peu lourde sur ce point.

      • [^] # Re: Code Saturne

        Posté par  . Évalué à 6.

        Salut,

        merci pour ton investissement dans FreeCAD, cela a vraiment fait avancé le schmilblick.

        Nous somme de notre coté très intéressé par l'intégration de Fenics dans FreeCAD. Un postDoc arrivera en mars et il devra se servir de FreeCAD pour faire des simulation Fenics, cela nous donnera l'occasion de regarder cela de prêt.

        En ce qui concerne le couplage de Code-Saturne ou Code-Aster, il semblerait que le Cea et EDF aient choisi de créer leur propre solveur "from scratch" avec les développeur d'OpenCascade avec le logiciel shaper. Je trouve qu'il aurait été plus intéressant de payer les devs de FreeCAD à temps complet pendant la durée de leur projet mais bon … Ils avaient très certainement d'autres contraintes.

        Pour répondre à YBoy360, Code-Saturne est un logiciel de Volume Finis qui sont une résolution intégrale de la forme forte discrétisée spatialement alors que Elmer lui est un code Éléments Finis que résout la forme faible (intégrée par partie), ce qui permet d'avoir une prise en compte naturelle des conditions aux limites. Je ne suis pas un expert en Volumes Finis mais ils ne sont pas généralement utilisés pour de la mécanique solide alors qu'il existe des codes FEM en fluide, rien en théorie ne l'empêche mais la reconstruction du gradient (contraintes et déformations) est assez complexe et cela n'a été fait que pour peu de problèmes. Cela permet par contre de bien gérer des discontinuités. On va dire qu'en mécanique des solides, c'est encore un sujet de recherche et pas une technique de l'ingénieur. La technique des éléments finis est généralement plus précise que les éléments finis mais très exigeante sur le maillage, il est assez simple d'augmenter l'ordre des fonctions de formes mais des problèmes arrivent si on augmente trop.
        Code-saturne ne fait que de la méca-flu alors que Elmer est un solveur FEM multiphysique, il est donc beaucoup plus généraliste.

        • [^] # Re: Code Saturne

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

          Tu vas voir un peu la tristesse du truc. Shaper est base sur le moteur de contraintes parametrique de FreeCAD :(. C'est un copier/coller du code et donc ni plus ni moins que du FreeCAD. Apres on a fait la meme chose avec le mailleur en reprenant la partie SMESH de Salome. La grosse difference c'est que dans un cas c'est des contributeurs individuels et dans l'autre des professionnels et qu'en effet en ayant finance les developpeurs FreeCAD le truc aurait probablement ete developpe plus vite et aurait permis de degager des synergies.

          Ce qui nous agace le plus c'est que lorsque l'on remonte des bugs dans Salome et/ou OpenCascade, la plupart du temps tout est allegrement ignore, meme si qqs rencontres ont eu lieu ces derniers mois et qu'on essaie de progresser notamment avec les equipes d'OpenCascade.

          J'aime bien Salome, mais c'est une sacre usine a gaz, on essaie d'avoir une approche un peu plus simplifiee dans FreeCAD et plus abordable de la simulation numerique.

          Je ne connais pas Fenics je vais regarder de plus pres ce qu'il fait ;)

          • [^] # Re: Code Saturne

            Posté par  . Évalué à 5.

            Tu vas voir un peu la tristesse du truc. Shaper est base sur le moteur de contraintes parametrique de FreeCAD :(. C'est un copier/coller du code et donc ni plus ni moins que du FreeCAD. Apres on a fait la meme chose avec le mailleur en reprenant la partie SMESH de Salome. La grosse difference c'est que dans un cas c'est des contributeurs individuels et dans l'autre des professionnels et qu'en effet en ayant finance les developpeurs FreeCAD le truc aurait probablement ete developpe plus vite et aurait permis de degager des synergies.

            J'ai discuté avec les gars d'OpenCascade dans le cadre d'un projet que je suis en train de monter et ils sont plutôt cool. Après il faut bien voir que la majorité de leurs devs sont en Russie donc pour la réactivité c'est peu être un peu plus compliqué que de les avoir à cotés. Après je pense que l'infrastructure de supervision qui est complexe à refaire (coupler Europlexus, code_saturne, code_aster, …) donc il est important pour eux d'avoir cette base fonctionnelle. Après le principale problème vient du fait que les technos dans Salomé sont vielles par exemple corba qui n'a pas vraiment pris ailleurs et est très compliqué.

            En ce qui concerne les synergies je suis assez d'accord avec toi, mais lorsque l'on monte un projet on a des livrables où l'on engage sa responsabilité il est assez difficile de déléguer l'encadrement des forces vives. Mais ils auraient pu demander aux ingénieurs d'OpenCascade de bosser sur FreeCAD à la place. Lorsque l'on regarde FreeCAD est arrivé après Salome mais avec des Objectifs différents. FreeCAD, c'est plutôt CATIA et Salome c'est plutôt Abaqus CAE, donc les deux n'ont pas vraiment le même public, il est donc pas aberrant que les deux projets soient clairement séparés !!
            Il faut espérer par contre qu'ils partagent à terme les mêmes fichiers pour la paramétrisation et les résultats. C'est en bonne route car les deux projets ont basculé sur VTK donc d'ici quelques années les deux logiciels devraient permettre d'avoir une suite cohérente.

            Ce qui nous agace le plus c'est que lorsque l'on remonte des bugs dans Salome et/ou OpenCascade, la plupart du temps tout est allegrement ignore, meme si qqs rencontres ont eu lieu ces derniers mois et qu'on essaie de progresser notamment avec les equipes d'OpenCascade.

            Tu devrais peut être appeler les gars d'OpenCascade Hérvé Legrand est très sympa par exemple. Pour Salome je ne suis pas sûr que ce soit le taf principal des gens qui développent dedans.

            J'aime bien Salome, mais c'est une sacre usine a gaz, on essaie d'avoir une approche un peu plus simplifiee dans FreeCAD et plus abordable de la simulation numerique.

            Après, il ne faut pas être trop dur avec Salome, c'est vraiment un logiciel très performant et assez simple à utiliser, c'est juste que le ticket d'entrée développeur est inaccessible au commun des mortel ce qui en fait un logiciel très difficile à faire évoluer. En ce qui concerne l'utilisation, ce n'est pas si complexe que ça et les concepts à connaître sont important pour faire de la simulation.

            Après si on se place du cotés ingénieur conception, c'est vrai que faire du Salome est difficile (mais faire du Abaqus n'est pas simple). Il existe des alternatives comme Simscale qui permettent de faire des calculs sur le cloud et qui couplés à OnShape pour la CAO permettent de faire de ingénierie libre.

            • [^] # Re: Code Saturne

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

              Oui je suis d'accord avec toi, les gens d'OpenCascade sont plutot cool, bon en meme temps pas facile de leur faire integrer des patches upstream si tu n'es pas un client, mais ils ont une vrai envie d'ouverture. Je suis d'accord avec toi sur le comparatif CAD vs CAE, FreeCAD arrive par le cote CAD la ou Salome arrive par le cote CAE. Corba c'est l'enfer.

              Le truc c'est que je pense qu'il est quand meme possible de faire plus simple pour faire de la simulation. Meme Solidworks integre des modules de calculs qui sont largement suffisant. En fait, Salome est un outil qui peut faire des trucs extraordinaires, mais qu'on utilise pas toujours dans la "vrai" vie ou plutot on va dire pas tous les jours. Salome est adapte pour des physiques complexes, et des maillages complexes, si tu prends juste les calculs qu'on a faire dans notre industrie on est sur des simu thermiques et structurelles la plupart du temps non couplees.

              L'idee est d'essayer d'arriver a faire aussi simple que simscale mais en Open Source et peut-etre plus complet et d'avoir un module de pre/post de dispo sur le web. On a pas encore prevu d'avoir de moteur direct en WebGL, les performances ne sont pas encore suffisamment satisfaisante par rapport a du natif, et il faut l'avouer y a un boulot de malade pour y arriver.

  • # Assembly ?

    Posté par  . Évalué à 5. Dernière modification le 08 février 2017 à 11:01.

    Hello, merci pour ton travail pour ce logiciel.

    Je travaille dans la mécanique. Je trouve que ce qui manque encore cruellement à FreeCad, avant un module FEM, c'est un module d'assemblage correct.

    Je rêve de pouvoir assembler mon système, de créer des classes d'équivalence, d'associer des liaisons mécaniques à certaines interfaces (pivot, rotules, glissière, ect) et de pouvoir simuler le fonctionnement de mon système. (J'impose telle vitesse de rotation par seconde à mon arbre d'entrée, et je sors les infos qui m'intéressent en sortie (vitesse arbre sortie, position selon X,Y,Z d'un point de ma came, ect.)

    Quand on en sera là, le soft sera utilisé dans les bureaux d'étude et ceux ci contribueront/paieront des contributeurs d'autant plus pour le logiciel. Ce sera super. =)

    • [^] # Re: Assembly ?

      Posté par  . Évalué à 3.

      Je sais que ce n'est pas encore comparable et que tout vient à point à qui sait attendre mais pour info, voici deux.gif du genre de truc qu'on est amené à faire en BE: gif gif

      Avec des softs proprios. =/

      • [^] # Re: Assembly ?

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

        Y a un travail de fond qui est mene sur le module Assembly. Mais avant de le faire, il nous fallait re-ecrire la partie PartDesign afin d'avoir des coordonnees relatives plus efficaces et diminuer l'usage de composes qui bouffent un temps machine pas possible. Il y a un nouvel objet en cours de dev App::Part qui permet de faire ca. Une fois l'implementation terminee (j'espere pour la 0.17), l'ecriture d'un module d'assemblage sera alors grandement simplifiee et beaucoup plus efficace.

        Ickby travaille sur ce sujet. Il y a je dirai une trentaine de contributeur actif au soft et du boulot pour 100 personnes, mais c'est bien dans la tete de ces devs d'arriver a aboutir a un modele d'assemblage efficace. Faut juste un peu de temps et pas mal d'huile de coude.

        Sinon tes assemblages sont top ;)

  • # Salomé

    Posté par  . Évalué à 2.

    Bonjour,

    Un petit mot pour défendre Salomé
    Je l'utilise pour concevoir des objets imprimés en 3D, j'ai aussi fait quelques simulations sous Code Saturne (après avoir appris le Fortran :( ).
    Salomé manque peut-être de fonctionnalités et a quelquefois du mal avec les opérations booléennes mais l'api python est bien documentée.
    Je fais tout par cette api, formes simples, courbes, pas de vis, emboîtement des pièces (sans animation). Je ne me sers de l'interface graphique que pour visualiser, mesurer.
    Et je ne vois pas ce qu'il me manque.
    J'aimerais donner ma bibliothèque pour créer des pas de vis (multi-filets, démarrage progressif) mais il faudrait l'épurer avant.

    • [^] # Re: Salomé

      Posté par  . Évalué à 1.

      Je rajoute que j'utilise qcad pour le dessin 2D et donner un nom à mes variables géométriques

    • [^] # Re: Salomé

      Posté par  . Évalué à 2.

      Nous n'avons pas vraiment critiqué Salome en tant qu'utilisateurs. C'est un soft très performant mais il est très difficile à faire progresser de part son age et les choix architecturaux qui ont été fait. De plus, les devs sont payés par EDF/CEA qui ont intérêt à ce que ce soit Cast3m et Code_Aster qui soient interfacés or dans l'industrie Abaqus domine et son clone libre est Calculix. Il est donc plus simple pour un ingé calcul de partir sur FreeCAD, car la préparation des pièces est plus simple (mais moins paramétrable pour le maillage par exemple) et qu'il est interfacer avec le OpenOffice de la simu en méca solide.

      J'ai longtemps utilisé Salome pour la recherche et les cours, pour les cours on est passé à FreeCAD et pour la recherche … on espère quitter Abaqus mais il reste du Taff.

Suivre le flux des commentaires

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