Skip to content

Instantly share code, notes, and snippets.

@IainNZ
Last active December 20, 2015 06:29
Show Gist options
  • Save IainNZ/6086173 to your computer and use it in GitHub Desktop.
Save IainNZ/6086173 to your computer and use it in GitHub Desktop.
Julep 2: Package Requirements and Quality Standards

Julep 2: Package Requirements and Quality Standards

This is based on the discussion started here:

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.

Requirements for the Package Itself

REQUIRE file

  • 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.

License information

  • Packages should have license information, either in a dedicated LICENSE file or stated in a README

Package Testing

  • Packages should have a test/ directory, that contains a file runtests.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.

Requirements of the Package's METADATA.jl entry

Each package has a folder in METADATA.jl, with the following contents

url

  • 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

DESCRIPTION.md

  • Every package must have a DESCRIPTION.md file in the root of their folder in METADATA.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.

versions

@IainNZ
Copy link
Author

IainNZ commented Aug 3, 2013

More attention needed on the DESCRIPTION.md file, I don't know I like the idea of doing it as Markdown + reinventing the wheel...
@johnmyleswhite was suggesting we take the R package format. I'd feel comfortable with JSON personally, but I think this is all very personal-taste so maybe we should just semi-arbitrarily pick something.

@IainNZ
Copy link
Author

IainNZ commented Aug 5, 2013

Another thought: the description should probably go in the package repository as well as in METADATA. I dislike the duplication...

@johnmyleswhite
Copy link

The R DESCRIPTION file format is actually a Debian format. With trivial modifications, it can be treated as YAML.

@mlubin
Copy link

mlubin commented Aug 20, 2013

An idea for the testing infrastructure: http://jenkins-ci.org/. While Travis-CI is great for what it does, I think we need something a bit more flexible that we can run nightly with any combination of julia versions/package versions (metadata vs. master) that we like. This means we also need our own hardware.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment