New package

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

New package

Felix Aparicio Perez
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
Reply | Threaded
Open this post in threaded view
|

Re: New package

Colin Macdonald-2
On 2017-09-25 02:43 PM, Felix Aparicio Perez wrote:
> 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.

Hi Felix,

I think quite a few Octave packages support Matlab as well (this came up
in a recent thread on this maillist, with a focus on writing
Matlab-compatible code).

Regarding the Symbolic package and the Doctest package, I use a Makefile
(the "Maintainers Makefile", due to Oliver Heimlich and others).  This
generates the .tar.gz file for Octave Forge and another .zip file for
Matlab.  Some special processing is done for Matlab (converting texinfo
docs and extracting tests).

I'm not very good with Makefiles but I feel this effort was worth it: it
means other Octave devs can reproduce my .tar.gz files and decreases the
"bus factor".  It also means I have less "magic steps" to
remember/follow when I do a new release.

Colin

Reply | Threaded
Open this post in threaded view
|

Re: New package

Oliver Heimlich
In reply to this post by Felix Aparicio Perez
Hi Felix,

On 25.09.2017 23:43, Felix Aparicio Perez wrote:
> 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.

This sounds very good.  Is it possible to have a look at your package's
source code?

> ...

> 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.

> ...

> 1) LICENSE
> ...
> 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?

Before we talk about the other topics that you mention, we should talk
about the license.  Since you only use m-files in your project you may
actually distribute it with any license that you want (like the wiki says).

If you want to host your package on Octave-Forge (which means, the
package can easily be downloaded and installed with Octave's package
manager “pkg”), it is required that you use a free software (a.k.a. open
source) license.  The reason is that we want to ensure continuous
availability of all packages on Octave-Forge for our users and — as the
Octave community — need the legal foundation to maintain, improve, and
distribute the software.

You can pick a license that suits you, for example here:
https://choosealicense.com/licenses/

If you don't want to distribute your package as free software (a.k.a.
open source), we can't do that on Octave-Forge.  However, you may still
distribute your package on your own website (with a proprietary
license), where users can download it manually and install it using “pkg
install yourpackage.tar.gz”.

Best
Oliver