[ADR 06] Convention to choose names for rudof crates - rudof-project/rudof GitHub Wiki

[ADR 06] Convention to choose names for rudof crates

Context

At the start of the rudof project we were a bit informal in the way that we chose names for our crates. In this way, we had some crates like: iri_s, srdf, shex_ast, shex_validation, shapemap, etc. which don't follow a clear convention.

One of the problems is that some crates are about some common technologies for which the ideal name has already been taken like iri or rdf so we needed to separate our names from them. In the case of RDF, as rudof has its roots on a previous Scala implementation which had a module called SRDF we started to use srdf as something like "Simple RDF" which was initially intended to contain several common traits about RDF that we were using for validation.

Nevertheless, the crate started to grow as we added some features like RDF parser combinators making it a not so simple crate.

@samuel-bustamante suggested to use rudof_rdf and we had some internal discussions about the name. We even created a poll where Samuel argumented in favor of changing the name to rudof_rdf.

Decision

After the poll we have chosen to rename the crate to rudof_rdf.

At this moment, we have several other crates that are using the rudof_xxx convention like:

  • rudof_cli
  • rudof_generate
  • rudof_lib
  • rudof_mcp

Although we still have several other crates which are not using that convention like:

  • dctap
  • shapemap
  • prefixmap
  • . . .

In principle, we will use the following convention:

  • If it is a technology that is core to rudof and which is mainly provided by rudof, like shapemap, dctap, etc. we will keep the name without the rudof_ prefix.
  • If it is a technology that is provided already by other organizations which we specialize in rudof for some reason, like rdf, we will use the rudof_xxx convention.

We notice that according to the previous rules iri_s should probably be renamed to rudof_iri

Consecuences

  • Verbosity: The names of the crates will be a bit more verbose like rudof_xxx.
  • Clarity: It immediately tells the user that this crate is part of the rudof suite.
  • Lost of independence: If we would want the crate to stand alone outside the rudof project, a non-prefixed name would be better. That's why for crates like dctap we prefer to keep the non-prefixed version.
  • Trust: It will be more clear if those crates belong to the rudof project so users who trust rudof, could trust those crates.