I am interested in understanding what is modernly (2023) considered a good practice in writing packages in mma.

There are already many beautiful SE posts when it comes to packages, but they are relatively old (6+ years) which makes me wonder whether i'm missing a bigger or newer picture.

I am creating a list with various links that I believe cover the most useful concepts of packages that I've seen so far which I hope could act as a starting point for others.

  1. How to create packages
  2. How to best organise a package
  3. How to use mma packages + Git
  4. How to autogenerate packages
  5. How to make MMA documentation for a package.
  6. How to install packages
  7. How to create packlets from packages for easy distribution

These above steps appear to me like a strong starting point to also allow some level of version control, but I do not know if things have moved on to different methods or 'tricks' over the last few years.

  • 2
    $\begingroup$ I saw basic introduction on making package here but it does not know about git and auto-generate, these are too advanced. $\endgroup$
    – Nasser
    Commented Feb 20, 2023 at 13:30
  • 4
    $\begingroup$ This question is vague, and it isn’t clear how it is different from the linked questions $\endgroup$
    – Jason B.
    Commented Feb 20, 2023 at 17:35
  • 1
    $\begingroup$ In the last few years, packages themselves haven't changed. The tools to edit and document them have improved and now we have paclets. I understand that this question is too vague, but I find it useful to have all those five links in a single page. $\endgroup$ Commented Feb 21, 2023 at 14:13
  • 1
    $\begingroup$ @alex You could add this info to the "tag wiki" at mathematica.stackexchange.com/tags/packages/info or mathematica.stackexchange.com/tags/paclets/info $\endgroup$
    – Chris K
    Commented Feb 21, 2023 at 21:33
  • 1
    $\begingroup$ Mathematica does not even have a debugger. I take this back. There is a build in debugger in Mathematica, but only 3 people in the whole world know how use it. And it works only on code written inside a notebook, not a package, this is if you can figure how to use it. The debugger that comes in workbench does not even work half the time and is broken. I tried it and gave up on the workbench. But I digress. $\endgroup$
    – Nasser
    Commented Feb 22, 2023 at 6:57


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.