Hello
I have developed a package-toolbox, called MatPol, made of
65 Octave-Matlab routines, that can be used to make several matrix
polynomial computations. Some of the routines make general computations,
like polynomial matrix inversion or triangularization, and other
routines make computations that are more specific to multivariate
time-series analysis (and also useful for signal processing), like
spectral factorization or computation of echelon canonical forms. The
routines come with a 100 page manual and examples.
In fact I wrote the routines several years ago and it is now that I have decided to make them available to others.
I
have made a big effort to ensure that the routines work both with
Matlab and with Octave. I have tested them both on Linux and Windows
systems.
Now I am thinking in which way(s) I would make the package available to others.
A
first idea is to upload it to the server in my working place. The
advantage is that it is straightforward, but I guess that not many
people would know of their being there.
Another idea is to make an
Octave package. The advantage is that the routines would be known by
more people. I think that both ideas are compatible, since the paragraph
"External Packages" at
https://octave.sourceforge.io/dev-descr-two-groups.php sais so.
I am not considering uploading MatPol to Matlab Central, since the license there would have to be a BSD one.
I think that an external package hosted in Octave Forge could be a good solution.
I
have read the instructions for authors and downloaded a few Octave
packages (sa, optim and tsa), but I still would like to make some points
clear:
1) LICENSE
At
https://octave.sourceforge.io/common-requirements.php it reads that EXCEPT IF NOTED OTHERWISE a package must be in the public domain or covered by a Free software License.
Then,
in the Octave Manual (edition 4 for Octave Version 4.2.1 february 2017)
in page 857 it reads "No restrictions is made on the license in
general. If however the package contains dynamically linked functions
the license must be compatible with the GNU General Public License."
Then, at
http://wiki.octave.org/FAQ,
it reads "Code written entirely in the scripting language of Octave
(interpreted code in .m files) may be released under the terms of
whatever license you choose".
From all this, since my programs do not
contain any dynamically linked functions and they are completely
written in the scripting language of Octave, I understand that I have no
restrictions on the kind of license for my programs. Is this true?
2) HOW TO UPLOAD THE PACKAGE
I would like to keep the things simple. After reading the Octave manual, I think that it would be enough with:
package/CITATION file
package/COPYING file
package/DESCRIPTION file
package/INDEX
package/inst folder containing all the m-files
package/doc
folder with the pdf manual and may be the m-example files (would the
example files rather be in the package/inst folder?)
Moreover, I think that I should also include the copyright notice in the first lines of each m-file.
When
I'll have created a directory containing all these files and folders,
how shall I upoload it? Has it anything to do with the Mercurial thing?
3) SECOND DISTRIBUTION
Since
I want to reach so many people as possible, in particular, Matlab
users, I also want to distribute my package in a simple, more primitive
form, consisting
of a compressed file (zip or tar) containg all
the routines, manual and examples files, such that, when uncompressed, a
folder will be created. The manual then explains that the user, whether
in Matlab or in Octave, would only have to submit an
addpath(genpath("Folder")) command in order to begin using the routines,
where Folder is the folder where the routines are. The question is
whether I actually have to do this second distribution, for example,
uploading the package to the
web server in my working place, or if
there is some simple way to make an Octave package work in Matlab (a
package like mine, that only has m-file scripts and that has been
designed to work with both Matlab and Octave). Perhaps you have some
suggestions and/or know of some people who have managed to distribute
their work for both Octave and Matlab in some way that I have not
thought of. I have heard, for example, of Github, but I do not know if
it is a good idea.
4) A QUESTION ABOUT COPYRIGHT
Most of the
routines in my package include many comment lines with details. Some of
those details relate to pages of books where the corresponding formulae
can be found. I read somewhere time ago that in some countries formulae
and not only implementations of them are subject to copyright. Should I
remove those specific comments?
5) MANTAINER.
What are the
tasks a mantainer does? I guess that fixing bugs or providing
explanations to users are some of them, but are there more tasks
involved? I think that there will be no important future releases of the
package, apart from the first one, but there will probably be small
releases to correct bugs and make minor modifications, so it would make a
lot of sense that I mantain the package, at least for some time.
Thanks for your help