I'd like to propose a minimal change to libpnd. I think the change itself is fully within the current specification http://pandorawiki.org/PXML_specification#The_.3Cexec.3E_element, but my use case may not be the intended target.
For various reasons (most importantly having worked with a - I believe competent - lawyer on redistribution and licensing issues before in a professional setting) I want to make sure to do the right thing when I as a porter redistribute software I don't own on the Pandora repo. This especially implies making easily (and preferably machine parseable) information about author, version, license, and source code of the bundled components available at the point of redistribution, for which I as the package author bear full responsibility.
Please take a look at the repo detail view of my PySolFC package at http://repo.openpandora.org/?page=detail&app=pysolfc.jr&dp=true, which besides the main application requires 4 additional packages (soon to be 5 when the solver gets added) to run, all of them redistributable under different conditions. Note that the main application also isn't a straight compile, but contains some simple patches that have not yet been added to the upstream. I added a textual description of the dependencies to the description and added the individual license files to the PND (though a view link from the in game about is still missing). But most importantly I added an application entry for every bundled component to the PXML, because the application tag is a (nearly, see below) perfect fit for describing the desired information in a standardized, machine parseable, and unobtrusive but easily accessible way.
The only downside is, that libpnd (and PXML) currently can't tell a library, framework, interpreter, supporting application from an application intended to be run by the normal user.Therefore it is happily creating desktop entries for all of them. According to the specification the standalone attribute should suppress this, but currently it doesn't work. PySolFC works around that by omitting the exec element completely which gives the desired result (useful information in the repo without cluttering everyone's desktop) at the price of a formally invalid PXML which may break in the future (the repository currently already rejects other PXML errors that would lead to the desired result with libpnd, e.g. omitting the application's id).
My proposal (and I have a - untested - patch for that 0001-Handle-standalone-PXML-attribute-as-specified.patch.gz) is simply to extend libpnd to stop creating desktop files according to the specification, if the standalone attribute of the exec tag is set to false.
But there are other options:
There is also the problem with providing access to the source code. While linking to the upstream distribution site is more than enough for many licenses it actually isn't good enough for copylefts that require providing local modifications and relevant build environment information and in the case of the GPL variants it is not enough even for a straight compile. A solution here may be to centrally provide a source archive hosting service in conjunction with the repo (optionally upload source archive when uploading PND) that helps to offload some license requirements from package authors. But that is also a different discussion.
Thanks for reading this rather long post
For various reasons (most importantly having worked with a - I believe competent - lawyer on redistribution and licensing issues before in a professional setting) I want to make sure to do the right thing when I as a porter redistribute software I don't own on the Pandora repo. This especially implies making easily (and preferably machine parseable) information about author, version, license, and source code of the bundled components available at the point of redistribution, for which I as the package author bear full responsibility.
Please take a look at the repo detail view of my PySolFC package at http://repo.openpandora.org/?page=detail&app=pysolfc.jr&dp=true, which besides the main application requires 4 additional packages (soon to be 5 when the solver gets added) to run, all of them redistributable under different conditions. Note that the main application also isn't a straight compile, but contains some simple patches that have not yet been added to the upstream. I added a textual description of the dependencies to the description and added the individual license files to the PND (though a view link from the in game about is still missing). But most importantly I added an application entry for every bundled component to the PXML, because the application tag is a (nearly, see below) perfect fit for describing the desired information in a standardized, machine parseable, and unobtrusive but easily accessible way.
The only downside is, that libpnd (and PXML) currently can't tell a library, framework, interpreter, supporting application from an application intended to be run by the normal user.Therefore it is happily creating desktop entries for all of them. According to the specification the standalone attribute should suppress this, but currently it doesn't work. PySolFC works around that by omitting the exec element completely which gives the desired result (useful information in the repo without cluttering everyone's desktop) at the price of a formally invalid PXML which may break in the future (the repository currently already rejects other PXML errors that would lead to the desired result with libpnd, e.g. omitting the application's id).
My proposal (and I have a - untested - patch for that 0001-Handle-standalone-PXML-attribute-as-specified.patch.gz) is simply to extend libpnd to stop creating desktop files according to the specification, if the standalone attribute of the exec tag is set to false.
But there are other options:
- not describing the bundled components in the PXML; that would be a different discussion about the legal requirements of redistribution; I don't want to go down that road, because I personally believe having it in the PXML is required for at least some combinations of license and jurisdiction and want to be on the safe side, but OTOH don't intend to force this view on anybody else's packages
- adding a library element that is like application except being not executable and therefore having slightly fewer elements
- officially making more elements of application optional extending it to the concept of non user runnable but nonetheless application like component
- something I missed
There is also the problem with providing access to the source code. While linking to the upstream distribution site is more than enough for many licenses it actually isn't good enough for copylefts that require providing local modifications and relevant build environment information and in the case of the GPL variants it is not enough even for a straight compile. A solution here may be to centrally provide a source archive hosting service in conjunction with the repo (optionally upload source archive when uploading PND) that helps to offload some license requirements from package authors. But that is also a different discussion.
Thanks for reading this rather long post
Attachments
Last edited by a moderator: