Repository and source code structure
Repositories are split between the following namespaces:
- Private source is located at https://gitlab.com/secata. Almost all development work should occur here.
- MIT open sourced code is located at https://gitlab.com/secata-public. These are fundamental libraries that rarely need updating.
- Repositories from the
secata/pbcnamespace are open sourced under the AGPL license to https://gitlab.com/partisiablockchain/. These are mostly read-only repositories, and should not be worked directly upon.
The intention is to align our repository structure in GitLab with our names in the code base.
Tip
This text uses Maven terminology: Group means the namespace we are working in and the Artifact the concrete repository.
Definitions
Group is the path in GitLab under root, skipping the first "secata" root folder (https://gitlab.com/secata).
Artifact is the project name in GitLab. The exceptions to this rule are project names that include
the project group's name.
To avoid having numerous GitLab projects named e.g. service, the project's group name can be
prepended: companjon-service. The artifact for companjon/companjon-service should just
be service.
Default strategy
Java
Root namespace is com.partisia or com.secata.
- Maven pom files:
groupid = <Root>.<Group>, artifactid = Artifact - Java package path:
<Root>.<Group>.<Artifact>
JAR deployment artifact names are derived from the POM.
TypeScript
Root is partisia or secata
package.json:name = @Root/Group-Artifact- npm package path: none
Package file names are derived from the name in package.json.
Rust
Cargo.toml: [package].name = Artifact
Root groups in secata
Some groups should be seen as root groups, these are:
Group is the path in GitLab under root, skipping the first secata/* root folder.
PBC exception
https://gitlab.com/secata/pbc is a notable exception from default behaviour. Here the root is either
com.partisia or com.partisiablockchain depending on there is an open source equivalent. Regardless
the maven pom root is always com.partisia (to distinguish from the open source variant with root
com.partisiablockchain.)
Java
Package root is: com.partisia
- Maven pom files:
groupid = com.partisia.blockchain.<Group>,artifactid = <Artifact> - Java package path:
com.partisiablockchain.<Artifact>
Core
For https://gitlab.com/secata/pbc/core we ignore the core suffix in packages:
- Java package path:
com.partisiablockchain.<Artifact>