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
Also also relevant, the discussion in JuliaLang/julia#3540 (comment). I think it would be neat to have a provision for a "description" for each package a la
apt-get
, so that aPkg2.search()
function can give people a better shot of finding things that aren't named exactly what they're looking for.If we do put this in the Julep, is it unreasonable to demand it be mandatory? I don't think so, as these are pretty basic requirements, and not a huge strain to put on package developers.