This is based on the discussion started here:
- https://github.com/johnmyleswhite/PackageTesting.jl
- https://groups.google.com/forum/#!searchin/julia-dev/package/julia-dev/I_Ul4TgpcZw/z0PVPNurn3cJ
as well as the manual.
This Julep sets the rules for packages to improve the quality of the packaging ecosystem. All packages submitted to METADATA.jl
must meet these requirements.
- Packages must have a
REQUIRE
file that, as well as listing all packages it depends on, explicitly states the version of Julia it depends on.
- Packages should have license information, either in a dedicated
LICENSE
file or stated in a README
- Packages should have a
test/
directory, that contains a fileruntests.jl
- The
runtests.jl
file will be called by an automatic package ecosystem testing system. As such, it should not call long-running performance tests, and should not require any configuration above-and-beyond that is automatically carried out during package installation. If a test fails it should throw an error that causes Julia to exit with an error code. - Packages may contain other testing code in this folder of any nature, it will not be called.
- Packages are encouraged to have a
.travis.yml
file for TravisCI integration.
Each package has a folder in METADATA.jl, with the following contents
- Every package must have a url file in the root of their folder in
METADATA.jl
- The file should contain a single line that states the address of the package's git repository, e.g.
git://github.com/JuliaStats/DataFrames.jl.git
- Every package must have a
DESCRIPTION.md
file in the root of their folder inMETADATA.jl
- The format of the file should be as follows:
# Description
A short description of the package
# Keywords
A comma separated list of keywords, e.g. distributions, probability, random normals, monte carlo
# Maintainers
A comma separated list of maintainers
# Install notes
A short description that will be displayed when the package is installed. Should be used only if manual operations must be performed to complete installation.
- Every package must have a
versions
folder, see the README in https://github.com/JuliaLang/METADATA.jl/tree/devel
Right now its just experimental, but yes, if we can get everyone to agree on the above requirements, it will.
My timeline is vaguely:
a) People seem fairly OK with the Julep, so
b) I wrote PackageEvaluator to give people a feel for how they are doing.
c) Announce: packages must meet these clear rules, and should probably do these other things too. See how you are doing using PackageEvaluator
d) After x weeks, put it into METADATA.jl test suite. It'll almost surely fail on some unmaintained package. We try and address all the troublesome packages before doing this though.
e) Do we kick out bad packages?
f) In parallel, we have the package ecosystem testing stuff. I think it'd be cool to have a score for each package based on its pass rate and PackageEvaluator score. I stole this idea from Perl CPAN, and I know that Node.js/NPM are planning on doing this too.