I am a physics major. I focus on theoretical and mathematical physics. After spending some time with Mathematica I found that it is not straightforward to create separate files for logically distinct computations and then join them together to create a package.
Of course, looking at some of the already available packages bundled with some release of Mathematica and reading some docs, I was able to get a sense of the structure of the package directory that allows Mathematica to parse it correctly (such as a Kernel folder that contains the init.m file for pre-loading external packages/contexts, Documentation folder containing docs for the same, and a PacletInfo.m file for enabling resource distribution as paclet).
However, the following is still not clear to me:
- How can one write several $.m$ files and connect them appropriately to create a single package?
- What is the best way to define notations that may be as reliably used as any other built-in notation like that for integral or summation? In theoretical physics, succinct notation is of tremendous benefit in condensing information. I am aware of the
Notationspackage, but I find it really unreliable.
- How can one implement the package as a paclet and host it online for free distribution?
- Is there really extensive documentation, with Wolfram style documentation, tutorials, guides and links?
- How can one make front-end items like palettes, stylesheets suited to the computations the package does?
- What debugging tools are available for really long code?
- What options are there for fast and reliable version control like git and integration with Github and the likes?
- What is the common workflow behind a package creation, development, distribution and maintenance?
There are questions similar to this one already:
- the closest: Creating Mathematica packages (six years old)
- What is a "Paclet"?
- How to distribute Mathematica packages as paclets?
- What are recommended guidelines for developing packages?.
This question might fail to be pointed enough for a typical Mathematica SE post but I have tried my best.