From: Nasser M. Abbasi on
Hello;

The problem: currently when I write a demo, I put all the code into one
large Manipulate. When I write another demo, sometimes I'd like to use
some of the functions I wrote earlier. What I do Now is simply open the
old notebook, and with the mouse copy/paste the function code from the
older demo notebook to the new one to use.

This means now, I have the same function in many different notebooks,
which I do not like.

I'd like to start making a package and put all the useful small
functions that I write in one package, and somehow include them
automatically in the new demo.

So, my question is: How do the experts here handle this situation? The
code of the package has to be actually loaded into the notebook and
visible before the demo can be submitted. I can't have code such as

<<mypackage`

in the demo notebook, but the code itself of the package must be there.
(one can't include non-Wolfram package in a demo, since the source code
will not be present at the other end, that is why all non-Wolfram code
must be physically in the demo notebook.)

I am thinking of this: have one package, put in it all the useful
functions I create and reuse. When writing a new demo, open the package
notebook, and copy/paste from the package notebook the specific
functions I need to use in the new demo.

If I found I need to fix something in the function copied, I fix it, and
copy the corrected version back to the package notebook overwriting the
old function. This way, I have one master version of the function, and
not many spread all over the place. How does this sound?

I'd like to really use source control, but I have not looked at using
source control software with Mathematica notebooks.

note: I just use Mathematica, and not the workbench.

--Nasser