Skip to content

Latest commit

 

History

History
106 lines (84 loc) · 4.06 KB

DEVELOPMENT.md

File metadata and controls

106 lines (84 loc) · 4.06 KB

DEVELOPMENT

OVERVIEW

This project is developed by using various developer systems and tools:

  • GIT SCM/VCS
  • IDE/Editor: Neovim, Vim, KDE Kate, VS Code etc.
  • Shell: zsh / bash
  • System: Unix/Linux-based, e.g. Debian (Ubuntu/Kubuntu) or alike ; MS Windows is not advised
  • others...

CONVENTIONS

Less is more - Chilon of Sparta (6th century BC)

Brevity
The code and docs must be brief / quick / easy to read; unavoidable complexities are allowed
Inexpensiveness
Requirement of zero maintenance and self-sufficiency is paramount; automation is the future
Resilience
No breaking changes or complexity are allowed unless cost/benefit ratio tends to be zero

GIT WORKLOW

  • Aggressive force-pushing and squash-rebasing into specific semver versions (AFPSR)
  • Consequently, tags are guaranteed to be dropped / hard reset in critical cases later
  • Eexceptions to the above rule: stable tags for package managers prohibiting version replacement
  • The above implies that any upstream commits pulled down may become obsolete very fast
Tag naming conventions
  • latest - latest released version
  • vX.Y.Z - version, per semver
  • nighlty - testing build
Branch naming convention
  • main - main/release line branch
  • dev - active development branch; don't use for end-product
  • release/X.Y.Z - next release; tightly coupled to main; very short halflife
Commits messages convention

Commits messages follow Conventional Commits spec

DEVELOP

This project approximates the following working tree hierarchy (similar to Folder Structure Conventions ):

.
├── .IDE/                 # IDE / GIT / Editor / LSP related dot folders
├──.githooks/             # Git hooks files
├── deps/                 # `node_modules/`, `third_party/`, `.deps/` etc. - deps
├── build/                # Distribution/build files for end-user; not versioned in git
├── examples/             # 
├── doc/                  # Documentation files; both user and dev
├── src/                  # Source files (alternatively `lib` or `packages`)
├── packages/             # Sources per package; subfolders may replicate top-level structure
├── test/                 # Test files
├── tools/                # Dev-x executables / scripts / files
├── .file.xyz/            # Dev-x specific dotfiles
├── README.md
├── CONTRIBUTING.md
├── DEVELOPMENT.md
└── LICENSE

TEMPLATE FILES

  • *.in
    files ending in .in usually mean a template file; this comes from C/C++ dev tools
    e.g. README.md.in means template of a README.md

BUILD

DEV DEPENDENCIES

  • git-hooks - git hooks are used for automation; see folder .githooks

RUNTIME DEPENDENCIES

UBUNTU / DEBIAN

TEST

PUBLISH


December 18, 2023
Copyright © 2023 - Alexander Davronov (a.k.a. github@hinell), et.al.