[Csnd-dev] Contribution to the plugins repository
Date | 2021-08-31 17:09 |
From | Michael Gogins |
Subject | [Csnd-dev] Contribution to the plugins repository |
I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.
1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes. 2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode. 3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly, Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources. My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules. What do you think? Do you have a better idea? Regards, Mike ----------------------------------------------------- Michael GoginsIrreducible Productions http://michaelgogins.tumblr.com Michael dot Gogins at gmail dot com |
Date | 2021-08-31 17:23 |
From | Stephen Kyne |
Subject | Re: [Csnd-dev] Contribution to the plugins repository |
Hi Mike,
Sounds like a nice contribution, fair play.
In general, I'd try and use VCPKG for all dependencies. It's also easy to add custom ports of libraries if we need to modify existing ones as well. VCPKG is supported on Linux and OSX
now as well.
Gamma is already there: https://github.com/microsoft/vcpkg/tree/master/ports/gamma
I don't see libmusicxml in VCPKG but it's built using CMake so it should be fairly straightforward to add. I might be able to help there.
Thanks,
Stephen From: Csound-developers <CSOUND-DEV@LISTSERV.HEANET.IE> on behalf of Michael Gogins <michael.gogins@GMAIL.COM>
Sent: Tuesday 31 August 2021 17:09 To: CSOUND-DEV@LISTSERV.HEANET.IE <CSOUND-DEV@LISTSERV.HEANET.IE> Subject: [Csnd-dev] Contribution to the plugins repository I am planning to contribute the following plugin opcode libraries to
https://github.com/csound/plugins, and probably more in the future. These have external dependencies.
1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.
2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.
3. musicxml opcodes, depends on
https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render
scores exported from notation software such as MuseScore directly,
Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.
My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.
What do you think? Do you have a better idea?
Regards,
Mike
-----------------------------------------------------
Michael GoginsIrreducible Productions http://michaelgogins.tumblr.com Michael dot Gogins at gmail dot com |
Date | 2021-08-31 17:43 |
From | "Dr. Richard Boulanger" |
Subject | Re: [Csnd-dev] Contribution to the plugins repository |
Can't wait. - dB Dr. Richard Boulanger Professor Electronic Production and Design Berklee College of Music Professional Writing & Technology Division On Tue, Aug 31, 2021 at 12:09 PM Michael Gogins <michael.gogins@gmail.com> wrote:
|
Date | 2021-08-31 19:15 |
From | Victor Lazzarini |
Subject | Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository |
Mike,
these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.
The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.
However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.
The basic principles at the moment are:
1) have dependencies: keep them as a third-party library.
2) no dependencies: either keep them
as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.
Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.
For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
It had been hard work putting this into
shape and it is in a fragile state as it is.
best regards
Prof. Victor Lazzarini
Maynooth University
Ireland
On 31 Aug 2021, at 17:09, Michael Gogins <michael.gogins@gmail.com> wrote:
|
Date | 2021-08-31 19:33 |
From | Rory Walsh |
Subject | Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository |
I'm with Victor here. Unless we can find someone to maintain this repository, it's pointless submitting source code to it. Victor and I spent quite some time preparing the current release. I don't think either of us can give any more time to maintaining any future opcodes. Personally I think authors should host and maintain their own opcodes. Eduardo and I both do this with our own opcode repositories and it works fine. On Tue, 31 Aug 2021 at 19:15, Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
|
Date | 2021-08-31 22:35 |
From | Michael Gogins |
Subject | Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository |
What you are saying, and what Rory is saying, directly contradicts what the plugins repository itself, which you created, says: "Repository for Csound plugins which were originally in the main repository, and for new plugins as well." Please explain. Regards, Mike ----------------------------------------------------- Michael GoginsIrreducible Productions http://michaelgogins.tumblr.com Michael dot Gogins at gmail dot com On Tue, Aug 31, 2021 at 2:15 PM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
|
Date | 2021-09-01 00:27 |
From | Michael Gogins |
Subject | Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository |
As currently built, the opcodes I was planning to contribute have external dependencies.
However, it would be pretty easy to get rid of the CMask external dependency for the cmask opcodes just by importing the source code from the cmask repository into the Csound repository. The license should not be an issue, it is compatible with LGPLv2.1. The code is straightforward C++. Regards, Mike ----------------------------------------------------- Michael GoginsIrreducible Productions http://michaelgogins.tumblr.com Michael dot Gogins at gmail dot com On Tue, Aug 31, 2021 at 2:15 PM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
|
Date | 2021-09-01 06:35 |
From | Rory Walsh |
Subject | Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository |
Hi Mike, is the any way would you be willing to maintain the repo and manage future releases for Windows and MacOS? On Wed 1 Sep 2021, 12:27 a.m. Michael Gogins, <michael.gogins@gmail.com> wrote:
|
Date | 2021-09-01 06:42 |
From | Victor Lazzarini |
Subject | Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository |
That may be so, but until we have a maintainer that needs to wait. Prof. Victor Lazzarini
Maynooth University
Ireland
On 31 Aug 2021, at 22:36, Michael Gogins <michael.gogins@gmail.com> wrote:
|
Date | 2021-09-01 08:13 |
From | Francois PINOT |
Subject | Re: [Csnd-dev] Contribution to the plugins repository |
About cmask, people might be interested in this: https://github.com/fggp/gmask. It's a port of the cmask program to the Go programming language with binaries cross-compiled for the main platforms. And here is a golang library offering the cmask possibilities to go programs. Regards François Le mar. 31 août 2021 à 18:09, Michael Gogins <michael.gogins@gmail.com> a écrit :
|
Date | 2021-09-01 08:14 |
From | Francois PINOT |
Subject | Re: [Csnd-dev] Contribution to the plugins repository |
Le mer. 1 sept. 2021 à 09:13, Francois PINOT <fggpinot@gmail.com> a écrit :
|
Date | 2021-09-01 08:59 |
From | Victor Lazzarini |
Subject | Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository |
So here’s my thoughts about this 1) as it involves a complete set of third-party files, with a different licence (even though compatible with the current license we use), it may not be suitable for addition to the Csound code. Even though it does not have external dependencies, we are still dependent on other code that may need to be maintained, which is different from a set of opcodes wholly written by the contributor. 2) it is then a question of whether it suits the plugins library, as it is a lower risk project. In principle, while the issue raised in 1) does not go away, it may be less of a problem here. The problem continues to be that we are adding code to a project that does not yet have any long-term maintainer, and if for some reason this code fails to work in one way or the other, there is no one committed to follow it up and getting things fixed, as well as preparing releases etc for it. 3) and so we ask why does it need to be placed there, when it can be maintained by yourself in your repository, as Rory quite rightly noted in his comments. It would be interesting to hear opinions from other contributors. ======================== Prof. Victor Lazzarini Maynooth University Ireland > On 1 Sep 2021, at 00:27, Michael Gogins |
Date | 2021-09-01 10:25 |
From | Eduardo Moguillansky |
Subject | Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository |
I agree with victor that plugins should be hosted by the maintainer. Setting CI integration for multiple platforms, which is something that the csound/plugins repository still does not have, is incredibly tedious and time-intensive, the complexity of this task being exponentially related to the number of dependencies, where each new library might itself have dependencies with obscure incantations needed when building remotely. From my perspective, the best way to aggregate/distribute plugins is to follow projects like deken, where plugin maintainers can upload binaries while each author is responsible for building and testing such binaries. regards, Eduardo On 01.09.21 09:59, Victor Lazzarini wrote: > So here’s my thoughts about this > > 1) as it involves a complete set of third-party files, with a different licence (even though compatible with the current license we use), > it may not be suitable for addition to the Csound code. Even though it does not have external dependencies, we are still dependent on > other code that may need to be maintained, which is different from a set of opcodes wholly written by the contributor. > > 2) it is then a question of whether it suits the plugins library, as it is a lower risk project. In principle, while the issue raised in 1) > does not go away, it may be less of a problem here. The problem continues to be that we are adding code to a project that does not > yet have any long-term maintainer, and if for some reason this code fails to work in one way or the other, there is no one committed > to follow it up and getting things fixed, as well as preparing releases etc for it. > > 3) and so we ask why does it need to be placed there, when it can be maintained by yourself in your repository, as Rory quite rightly > noted in his comments. > > It would be interesting to hear opinions from other contributors. > ======================== > Prof. Victor Lazzarini > Maynooth University > Ireland > >> On 1 Sep 2021, at 00:27, Michael Gogins |
Date | 2021-09-01 12:46 |
From | Francois PINOT |
Subject | Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository |
I agree with Victor. To complete the third point, we could have a page with links dedicated to these plugins on https://csound.com/ so that people can have a unique reference place to access the different repos. François Le mer. 1 sept. 2021 à 09:59, Victor Lazzarini <Victor.Lazzarini@mu.ie> a écrit : So here’s my thoughts about this |
Date | 2021-09-01 13:27 |
From | Stephen Kyne |
Subject | Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository |
I think a hybrid solution would be best. Forcing people to create a repo for their code, adding CI and distribution isn't going to foster growth of the plugin library and external contributions. We need to make it easy for people to submit a small amount of
code.
Ideally, we would have an easy repo to submit a PR to, where the code has minimal dependencies, and we have the framework setup to automatically publish plugins from.
I think the csound/plugins repo should fully embrace VCPKG (which is the defacto library manager for C/C++ due to Microsoft's investment) and ensure each plugin entered can work on all platforms (Mac, Linux, Win anyways). Any 3rd party dependency must be within
VCPKG to be accepted. This reduces the burden of maintenance for us. No more custom hacky scripts to get stuff to build.
The other side of it is how to incorporate 3rd party plugins that are more complex. Well, maybe within the csound/plugins repo, we can include some kind of registry file that points to these external repos/binaries that will eventually feed into the package
manger.
I do think dumping old code into the plugins repo that is awkward to build and not supported on all platforms is a recipe for disaster. It is also the original problem we were trying to solve by moving out this code from the main library.
Thanks,
Stephen From: Csound-developers <CSOUND-DEV@LISTSERV.HEANET.IE> on behalf of Francois PINOT <fggpinot@GMAIL.COM>
Sent: Wednesday 1 September 2021 12:46 To: CSOUND-DEV@LISTSERV.HEANET.IE <CSOUND-DEV@LISTSERV.HEANET.IE> Subject: Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository I agree with Victor. To complete the third point, we could have a page with links dedicated to these plugins on
https://csound.com/ so that people can have a unique reference place to access the different repos.
François
Le mer. 1 sept. 2021 à 09:59, Victor Lazzarini <Victor.Lazzarini@mu.ie> a écrit :
So here’s my thoughts about this |
Date | 2021-09-01 13:43 |
From | Michael Gogins |
Subject | Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository |
Thanks for asking! TL;DR: I'm tempted... but no. My pros: -- Csound is the best instrument for my music, and I do track alternatives. Maintaining plugins might help keep Csound competitive. -- The Csound community is deep and broad, and unified to some extent in its use of Csound. Maintaining plugins might help prevent Csound from splintering into platform-based communities. -- Having a single source for extensions to Csound would make it MUCH easier for newcomers to get up to speed. Maintaining plugins would certainly help with that. My cons: -- When I work on software, I enjoy the work. When I compose, if I like what I hear, I am ECSTATIC. No contest there! -- Since 1980, I've spent roughly 3 hours developing software for every hour spent composing. I'm getting older and I need to focus on composing. This is the main reason. -- I don't have a Windows development system or a Mac OS development system, and maintaining them all would be a burden. I will propose a solution in another email. Regards, Mike ----------------------------------------------------- Michael GoginsIrreducible Productions http://michaelgogins.tumblr.com Michael dot Gogins at gmail dot com On Wed, Sep 1, 2021 at 1:36 AM Rory Walsh <rorywalsh@ear.ie> wrote:
|
Date | 2021-09-01 15:20 |
From | Steven Yi |
Subject | Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository |
+1 for distribution like deken. We've talked about this regularly over the last years and the risset has been the closest so far to being a solution for this for Csound. I've suggested something like this before, but I think with latest technology stacks this might be possible: 1. Github template repository [1] for pluginlib(s) that has Github actions pre-worked out would be good. Ideally builds for multiple platforms/architectures, auto-generates documentation site to gh-pages, and pushes releases on builds. Manifest generated for opcode lib. 2. Binary package manager allows adding github repo for downloading opcode lib(s). 3. Binary package manager has a central "default list" for discovery that contains links to github repos (i.e, could include csound/plugins, csound-plugins, Rory's plugins, etc.). User then starts off with a curated list to pick from but could also add custom repos for testing. Developers can submit PRs to the central when their libraries are tested out and ready for wider availability. Maintenance of code that isn't central to the Csound system by developers that do not have domain knowledge has cost many cycles over the years when it was in the main repo. It forced devs to spend time on code they may not understand well and was a cause of errors when devs tried to update code thinking they understood the original code implementation and intention but did not. It also causes a situation where knowledge of system changes doesn't naturally spread out since a few people take it upon themselves to keep everything up to date rather than end developers naturally having to update their own code and learn about changes. I don't think repeating that same system for csound/plugins where a few people have to maintain other people's work and not learning lessons of the past makes any sense. I think if the above is implemented, we get: 1. Developers focus on the parts they have expertise in 2. Developers have an easy guided way to create and publish plugin libs 3. Users get an easy way to discover and install plugins 4. Code naturally grows or decays by interest (and not force). On Wed, Sep 1, 2021 at 5:25 AM Eduardo Moguillansky <eduardo.moguillansky@gmail.com> wrote: I agree with victor that plugins should be hosted by the maintainer. |