Skip to content

Discussion: Standardised Metadata in Project.toml #1070

@pfitzseb

Description

@pfitzseb

It would be great to have a standardised way for specifying metadata in a package's Project.toml. The following is heavily inspired by npm.

Package Discoverability

  • keywords/tags -> array of strings (could be autopopulated from GitHubs tags by some third party utility)
  • description/tagline -> string with a short (one line) description of the package

Utility

  • license -> string with license name
  • version (I know this is controversial but would still be nice to have...)
  • issue-url -> URL where the user can report issues with the package

Documentation

We need to support multiple cases here:

  • built-docs-url -> URL to git repo + branch (+ directory) that contains built documentation
  • hosted-docs-url -> URL to hosted docs
  • docs-directory -> path to the dir containing the packages Documenter.jl source, falls back to docs/

Those three options should span all sane use cases -- we have a default where the package author doesn't have to worry about docs deployment at all (because we'll build them), the current standard where you set up Documenter.jl on travis yourself and have it push to a gh-pages branch somewhere, and an option that allows you complete freedom with your self-hosted docs.


So for DifferentialEquations.jl the following metadata could be supplied:

[metadata]
keywords = ["differential-equations", "julia", "ode", "sde", "pde", "dae"]
description = "Julia suite for high-performance solvers of differential equations."
license = "MIT"
issue-url = "https://github.com/JuliaDiffEq/DifferentialEquations.jl/issues/new"
version = "v6.3.0"

[metadata.documentation]
built-docs-url = "https://github.com/JuliaDiffEq/DiffEqDocs.jl.git#gh-pages"

keywords, description, license and one of the docs keys are the most important for discoverability and usability, imho, so we should heavily encourage people to fill those in, e.g. when registering a package. Would also be sensible to sanity check the different fields.

The [metadata] section could of course contain arbitrary information (maybe a DOI or whatever).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions