Skip to content

SOFA dev reports (2026)

Hugo edited this page Apr 24, 2026 · 27 revisions

Join us every Thursday 9:30 am CET online: www.sofa-framework.org/sofa-dev-meeting


23/04/2026

News

PR review

SOFA PR review

SOFAPYTHON3 PR review

PR merged within the week

SOFA PR merged

COSSERAT PR merged


16/04/2026

News

Technical discussion

  • Alex talked about a new plugin he made using symbolic calculus to express new forcefield by only giving the energy function. He will make a full demonstration next week.

PR review

SOFA PR review

SOFAPYTHON3 PR review

  • #606 Component is the new controller Implements binding fo the BaseComponent Class. The issue was that BaseController and BaseComponent are basically the same class with just simple inheritance in between. In order not to duplicate the trampoline code, a CRTP implementation has been proposed. An runtime error on windows is to be fixed. → wip

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

CI PR merged

SOFAGLFW PR merged

REGISTRATION PR merged

COSSERAT PR merged

SOFACUDALINEARSOLVER PR merged

SOFA.VTK PR merged


09/04/2026

News

Technical discussions

  • SOFAGym project
    • Research initiative on which no one masters it currently
    • Let's contact the researchers that used Gym with SOFA to decide on a direction for this project
  • Template Method Pattern : PR sorting has restarted #6074
  • Mateo's work aims at animating via Gaussian Splatting (Interval Shading)
    • use a mesh shader (too recent for our supported OpenGL version)
    • geometry shader, a workaround
    • a work remains to be done to update our rendering API, using BGFX possibly

PR review

SOFA PR review

SOFAPYTHON3 PR review

  • #605 Add binding for modifying and adding entries to sparse matrices Flag auto-compress at compilation exists for sparse matrices. To be checked whether it is used for both mechanical / constraint matrices. Aiming at doing a Mapping written in Python (apply, applyJ, applyJT). The issue is that applyJT works with matrices and the binding does not allow for this → ready

DOC PR review

CI PR review

SOFAGLFW PR review

SOFA.VTK PR review

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

BEAMADAPTER PR merged

CI PR merged

REGISTRATION PR merged


02/04/2026

News

Technical discussions

  • #6063 [CI] Update pixi lockfile
    • PR is not triggering the Pixi CI, except when a pixi file is modified
    • PR is green on CI 👍
    • Remark: hard to trust updates of so many packages
  • #6044 Eigen 3.4.1 and 5.01 available and more third party updates
    • SOFA supports the last Ubuntu LTS which means that the version of the dependencies is frozen for two years each time, while allowing ourselves to update some sparsely. All dependencies will be updated at once for the next LTS
  • Question : how to generate a mesh with quadratic elements?
    • MechanicalObject needs to be extended, the elements too
    • Discussions with Mimesis could be of interest
    • VTK seems to support quadratic elements (cell type name, vtkQuadraticTetra)
    • Missing : mappings for quadratic, even if we could use our existing linear mapping
  • Cuda code : we might try to implement new version of linear solvers on GPU starting from the example of the CudaSparseLDLSolver of Alex, and maybe a CG using AI agents. Might also rework the CPU version of the LDL using a new lib doing sparse work SuiteSparse.

PR review

SOFA PR review

SOFAPYTHON3 PR review

BEAMADAPTER PR review

DOC PR review

REGISTRATION PR review

  • #32 Update imageregistration.scn WARNING scenes using old plugin names are not launched by the CI. This might be the reason why the scene wasn't launched by the CI. → ready

SOFA.VTK PR review

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

BEAMADAPTER PR merged

COSSERAT PR merged


26/03/2026

News

Technical discussions

  • Pixi installation could be added on each OS documentation to advise using it for install
    • Full replacement for Windows
    • "Manual installation (for developers)" could be kept on Ubuntu
    • For MacOS, it has to be investigated
  • Sofa.VTK
    • Check the Conda packages of VTK, they might be modular
    • The plugin
    • Make a PR adding the plugin to the supported plugins
    • Make a Python example scene to load VTK mesh

PR review

SOFA PR review

SOFAPYTHON3 PR review

BEAMADAPTER PR review

SOFTROBOTS PR review

SOFTROBOTS.INVERSE PR review

MODELORDERREDUCTION PR review

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

BEAMADAPTER PR merged

REGRESSION PR merged


19/03/2026

News

Technical discussions

  • #6025 [SceneChecking] Introduce SceneCheckSpecialCharacters Special characters in object names break links paths. This scene checker ensure that those characters are tracked and warning displayed. PR [#6026 [Simulation.Core] Refactor logic of loading a plugin from a RequiredPlugin name] tries to automatise the required plugins case where the name is used intead of another data. But we really should disable this feature. A compatibility layer will be added by Alex.
  • #6031 [Tracy] Fix compilation when enabling Tracy A PR broke the compilation of SOFA with Tracy because it uses a dynamic name when Tracy expects constexpr. To fix this a new PR introduced a new set of macro enabling this. It works with Tracy now, but the issue is that still, the CI will not see when it is not used for future dev. #6036 introduced a compile time check so that in the future we will track those errors.
  • Question about dropping explicit solvers. They are a good entry point for ODE solvers in term of learning and also for testing dev. It might even be relevant for multiphysics simulations.

PR review

SOFA PR review

SOFAPYTHON3 PR review

BEAMADAPTER PR review

REGRESSION PR review

  • #103 add the hash of the path to the test name Name of scenes where used to give the name of the test to GTest. So if you have two scenes with same name in two separated folders, gtest would break. Need to be tested on a opened SOFA PR with a ci-depends-on.
    → keep to review

SOFTROBOTS PR review

SOFTROBOTS.INVERSE PR review

MODELORDERREDUCTION PR review

SOFA.VTK PR review

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

SOFAGLFW PR merged

REGRESSION PR merged

REGISTRATION PR merged

PLUGINEXAMPLE PR merged


12/03/2026

News

PR review

SOFA PR review

SOFAPYTHON3 PR review

SOFAGLFW PR review

REGISTRATION PR review

PLUGINEXAMPLE PR review

SOFTROBOTS PR review

SOFTROBOTS.INVERSE PR review

MODELORDERREDUCTION PR review

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

SOFTROBOTS.INVERSE PR merged


05/03/2026

News

  • A sprint on Prefabs took place earlier this week. Results will be presented at the upcoming STC#21

Technical discussions

PR review

SOFA PR review

SOFAPYTHON3 PR review

SOFAGLFW PR review

SOFTROBOTS PR review

SOFTROBOTS.INVERSE PR review

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

BEAMADAPTER PR merged

SOFAGLFW PR merged

REGRESSION PR merged

SOFA.QT PR merged

COSSERAT PR merged


26/02/2026

News

Technical discussions

PR review

SOFA PR review

SOFAPYTHON3 PR review

BEAMADAPTER PR review

SOFAGLFW PR review

SOFA.QT PR review

COSSERAT PR review

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

BEAMADAPTER PR merged

SOFAGLFW PR merged

REGRESSION PR merged

SOFA.QT PR merged


19/02/2026

News

  • The sofa-test-action is now ready to be used/tested on your plugin CI. It is a reusable action that launches unit tests, scene tests and regression tests directly on your plugin for master commits and every PRs. It works on Ubuntu, MacOS and Windows. Here is an example PR adding the test to BeamAdapter : https://github.com/sofa-framework/BeamAdapter/pull/216 → Don't hesitate to try it out and give feedback !

PR review

SOFA PR review

SOFAPYTHON3 PR review

BEAMADAPTER PR review

SOFAGLFW PR review

REGRESSION PR review

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

SOFA.QT PR merged


12/02/2026

News

  • Update about TIRREX
    • sofa-core library is now officially on the conda forge
    • Another PR is pending on conda forge since 🎄
    • RigidBodyDynamics plugin with a robotic hand
    • Pixi CI
  • Starting discussion about mapped mapped
  • Presentation of Jupyter Notebook
    • powerful tool to lean/teach SOFA
    • work of an intern extended by Alex
    • tests are added to check the notebook
    • it would be nice to get an online version (using notebook.link from QwantStack or mybinder.org) avoiding installing SOFA. The solution using notebook.link requires a web-assembly compilation for this.

PR review

SOFAPYTHON3 PR review

BEAMADAPTER PR review

SOFAGLFW PR review

REGRESSION PR review

SOFA.QT PR review

SOFTROBOTS PR review

SOFTROBOTS.INVERSE PR review

  • #77 [solver-constraint] Rename epsilon by energyWeight Should rather use an homogeneous way to manage the lifecycle in all codes. Avoid the boiler plate code in the init. Paul will test this PR soon with his new sofa-test-action. Olivier will also take a look at the failing conda CI and update it with Pixi → keep to review

PR merged within the week

SOFA PR merged

SOFAGLFW PR merged

REGRESSION PR merged

SOFA.QT PR merged

SOFTROBOTS.INVERSE PR merged

SOFAVISCOELASTIC PR merged


05/02/2026

News

  • Update of the release:
    • binary created
    • official publication will be done within the next 48h
  • Presentation of Jupyter Notebook (postponed next week)

Technical discussions

  • #5916 CMake & Nix: add tight_inclusion
    • process to add a rockies dependency (Tight Inclusion)
    • should be validated by STC
    • researchers coding, not finished
    • present in conda but cannot install properly : patch not in upstream (divergence between packages)
    • symptomatic error : know what you miss
    • define our relationship with the authors
  • An evolution of the process of adding a dependency in the core is needed. To make sure every time a dependency is added we need to make sure every consequences are though of.
  • target SofaGTestMain
    • target to be linked against all targets for unit tests
    • allow to init() and cleanup() before and after all tests
    • install is not done usually since we do not distribute it
  • libraries targets sorted in a folder ⁨libraries⁩despite the commandset_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Sofa.Framework)
    • command Sofa.Framework is useless : two contradictory intentions sofa_add_* (module/library/plugin) will do the sort, Sofa.Component will overwrite to sort into a Sofa.Component folder
    • clarify this later
  • #5891 [Core] BaseObject: remove components from the slave list
    • if a component is overriding this function and not calling super::cleanup()
    • the template method pattern would solve this
  • #573 [Controller] POC: overall speedup
    • We could have a review from Damien
    • Need to take a dynamic change of the method into account (see pr comment)
  • #5938 [Type] Default constructor zero-initialized
    • we had a component if not initialized (with no_init). This has been changed since #4396
    • this went un-noticed due to the compilers we use
    • we should initialize to zero by default, explicitly

PR review

SOFA PR review

SOFAPYTHON3 PR review

SOFAGLFW PR review

REGRESSION PR review

SOFA.QT PR review

SOFTROBOTS.INVERSE PR review

  • #79 [extlibs] fixes qpOASES libs conflict Integration of changes from the original repository of qpOASES. The use of the same BLAS version could also be an option. The use of ProxSuite could be the next way to go. Could be discussed at the next STC. → ready

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

BEAMADAPTER PR merged

SOFAGLFW PR merged

REGRESSION PR merged

SOFA.METIS PR merged

SOFTROBOTS PR merged

SOFAVISCOELASTIC PR merged


30/01/2026

News

  • Exceptionally the SOFA dev meeting took place on Friday afternoon
  • v25.12 release should come before the end of January !

Technical discussions

  • Issue with Metis (see ##5878), the binaries are crashing in the Eigen support code for Metis when version is 5.2.1. Full debut mode is not helping analyzing the bug. The error stops when simulation speed decreases, thus possibly linked to multithreading. For the release, we suggest to roll-back to 5.1.0. Either the problem is in SOFA else we should signal the issue to mark the Conda package as broken. EigenSimplicialLDLT using Metis is crashing too. This would advocate that since SOFA + Eigen experience the issue, the problem origins in Metis.
  • Blinking LCPForceFeedback_test #4671: rather than deactivating the test, we could investigate the number of iterations computed by the Gauss-Seidel in the LCPForceFeedback and decrease this number (+ update the reference values)
  • #5882 [FEM.Elastic] Introduce generic element-agnostic elastic FEM force field: this comes from the Elasticity plugin. Linear elasticity is introduced in two different classes : pure linear elasticity and co-rotational elasticity. PR is not finished yet. The component agnostic from the type of element is not yet added. Other features like test codes, benchmarks (in C++, in Python), the mass (not necessarily restricting to a tensor mass implementation, approximating non-simplex cases), plasticity are still present in the plugin.

PR review

SOFA PR review

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

SOFAGLFW PR merged

REGRESSION PR merged

SOFAVISCOELASTIC PR merged


22/01/2026

News

  • v25.12 release should come before the end of January !
  • The consortium will take part to a workshop on simulation @ICRA2026, thanks to Ziqiu Zeng at NUS!

Technical discussions

  • #5878 [tools] Remove autoload of Sofa.Metis for windows
    • Couple of scenes are crashing due to metis, only occurring on Windows. It might take time to fix it, that's the reason why the suggestion is to remove it from autoload
    • The bug does not occur with Pixi
    • Ideas to investigate
      • Test binaries from Pixi and investigate the Pixi patch
      • Try the release without CGAL to see if it solves the issue
    • OrderingMethod for a direct solver is a property hidden to user, which is based on a plugin (Metis) by default if one is found. We could find an alternative Scotch
  • #5869 [CMake] Remove CGALPlugin from supported plugins
    • Half of Ubuntu compilations fails due to CGAL plugin memory issues
    • Only MeshGenerationFromImage is a valuable code from the plugin, the rest has equivalent in Python
  • #5875 [Lagrangian.Solver] UnbuiltConstraintSolver: implement hotstart
    • Hotstart for unbuilt constraint solver
    • Performance drop when using UnbuildConstraintSolver instead of LCPConstraintSolver
    • Let's make a deeper review on this pr now we know that it has been generated by AI
    • Part of this work was partially generated from an AI, how to manage such AI-generated codes: define a flag "pr: ai-generated" to notify reviewers
    • Jacobi could also undergo the same changes (see with Paul)
  • #94 Running SofaRegressionProgram on SOFA /examples directory
    • 20 out of 67 regressions are actually tested (30 are not tested, and warning silently)
    • Name of the MechanicalObject is used to generate the state export. However. The default name was "MObject" and it has been updated to "MechanicalObject", the CompareState did not find the reference (without throwing a warning/error as stated in #45)
    • We also need tom implement other metrics in the next python script for regression because the current way of doing it accumulated errors during the simulation. So very clone behavior might break the regression.

PR review

SOFAGLFW PR review

REGRESSION PR review

PR merged within the week

SOFA PR merged

SOFAGLFW PR merged

REGRESSION PR merged

SOFTROBOTS.INVERSE PR merged


15/01/2026

News

  • Awards : discuss format
    • either two prizes for the two-best contributions
    • or one prize for the best contribution and one for the best SW26 presentation

Discussion concluded on the fact that we would need clear criteria also for the presentation but it is a good idea if it helps us to save time and if it helps people into making a presentation

Technical discussions

PR review

SOFA PR review

SOFAPYTHON3 PR review

SOFAGLFW PR review

REGRESSION PR review

COSSERAT PR review

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

BEAMADAPTER PR merged

DOC PR merged

SOFTROBOTS.INVERSE PR merged


08/01/2026

News

🎉 Happy new year 2026!

The SOFA core developers wish you a healthy and successful year 2️⃣ 0️⃣ 2️⃣ 6️⃣ ✨

Technical discussions

  • Release update
    • work on plugins
      • OOT compilation of plugins is tested (most PR are even merged)
      • SofaPython3 fails on MacOS for stub-generation
      • SoftRobots.Inverse fails for Conda CI : nightly due to tight-inclusion
    • ffmeg dependency must be distributed for Windows and fixed on other os
  • Update on the project Template Method design pattern
    • many PRs opened
    • test of all PRs will be merged for test in one branch
    • remaining task : BaseObject
  • Parallelism in Elasticity plugin
    • The code uses a std::for_each using a ExecutionPolicy
    • Provides a generic implementation for both parallel and sequential policies
    • std policies are really faster than our task scheduler
    • compiler support is still an issue : MacOS does not support the feature at all so far (installing tbb and possibly forcing the sequential execution on MacOS could be done)
    • comparison with TaskFlow would help to benchmark to evaluate if it makes sense to replace the TaskScheduler with TaskFlow
  • Viser visualization: viser.studio
  • OSQP has been reimplemented in ProxSuite
  • #5841 [Collision] Introduce multi-staged collision pipeline
    • Presented at the STC
    • Allow to have different collision pipelines in a scene
    • Issue : all links are explicit, and linking possibly on a not-yet created object
    • Should implement an inheritance between multi and CollisionPipeline which is a special case of multi that have only one SubCollisionPipeline
    • Might be good to rename Multi into Composite
    • Remove the sorting of pipeline regarding the alarm distance
    • Problem of thread safetiness on response creation inside of the Barycentric mappers
  • #5814 [Type] Add optional support for mimalloc
    • so far the option is added, but OFF by default
    • if distributed through Pixi, the VM (Ubuntu + MacOS) could activate it later

PR review

SOFA PR review

SOFAPYTHON3 PR review

BEAMADAPTER PR review

DOC PR review

SOFAGLFW PR review

  • #256 Hide non-public interface Significant refactoring to hide non-public interfaces, which is required for conda. The question of having private and public header on the project and or on the plugins only has been discussed, no agreement has been reached. Symbol export should be investigated. → ready
  • #255 Allow user to close the Selection window Paul is tested then ready → keep to review

COSSERAT PR review

PR merged within the week

SOFA PR merged

SOFAPYTHON3 PR merged

BEAMADAPTER PR merged

DOC PR merged

SOFAGLFW PR merged

SOFA.QT PR merged

SOFAMJEDFEM PR merged

CGALPLUGIN PR merged

REGISTRATION PR merged

PLUGINEXAMPLE PR merged

SOFASPHFLUID PR merged

CSPARSESOLVERS PR merged

SOFA.METIS PR merged

COSSERAT PR merged

SOFTROBOTS PR merged

MODELORDERREDUCTION PR merged

Clone this wiki locally