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
Nice. I don't think we should make this a strict requirement for accepting packages into METADATA. We can strongly encourage people to do it by having an automated system to run the tests, and the package listing on the web could display an icon indicating if the tests pass or not. This should shame the package maintainers into implementing this framework.