markdown · 9460 bytes Raw Blame History

lib-modules

This repository is the umbrella catalog for reusable Fortran packages developed under the FortranGoingOnForty umbrella.

It is intentionally not a traditional code monorepo.

The goal is:

  • keep shared docs, roadmap, and package discovery in one place
  • keep each package in its own repository with its own history, releases, issues, and CI
  • collect those package repos here as Git submodules under packages/

That gives us the discoverability and organization benefits of one home page without burying every package inside a giant top-level repo.

Start here if you want the big-picture package map:

Go straight to the first standalone package if you already know what you want:

The most recently released library target is fgof-devloop, with fgof-archive and fgof-snapshot close behind in the backlog.

If you want local comparison checkouts for already-served or deferred areas, use ./scripts/sync-refs.sh to populate .refs/ from the curated reference set in docs/REFERENCE-LIBS.md.

Why This Structure

This repo exists to answer two different needs cleanly:

  1. People should be able to land on one GitHub repo and understand the whole library family.
  2. People should also be able to find, clone, star, release, and depend on one package at a time.

Git submodules are the best fit here because they preserve:

  • independent package history
  • independent package versioning
  • independent package visibility on GitHub
  • easy standalone consumption by fpm users

Layout

lib-modules/
  README.md
  LANDSCAPE.md
  docs/
    REPO-STRUCTURE.md
  packages/
    README.md
    fgof-process/     # git submodule
    fgof-fs/          # git submodule
    fgof-pty/         # git submodule
    fgof-lineedit/    # git submodule
    fgof-expect/      # git submodule
    fgof-proc-test/   # git submodule
    fgof-temp/        # git submodule
    fgof-cache/       # git submodule
    fgof-state/       # git submodule
    fgof-clipboard/   # git submodule
    fgof-screen/      # git submodule
    fgof-jobs/        # git submodule
    fgof-devloop/     # git submodule
    ...
  scripts/
    add-package-submodule.sh
    sync-refs.sh

Package Catalog

Package Status Repo Model Notes
fgof-process released v0.1.1 standalone repo + submodule POSIX-first process helpers, mounted at packages/fgof-process
fgof-fs released v0.1.0 standalone repo + submodule filesystem and path helpers, mounted at packages/fgof-fs
fgof-pty released v0.1.0 standalone repo + submodule POSIX-first PTY helpers, mounted at packages/fgof-pty
fgof-lineedit released v0.1.0 standalone repo + submodule Fortran-native line editing helpers, mounted at packages/fgof-lineedit
fgof-watch released v0.1.0 standalone repo + submodule polling-first watch helpers, mounted at packages/fgof-watch
fgof-termios released v0.1.0 standalone repo + submodule terminal mode helpers, mounted at packages/fgof-termios
fgof-keys released v0.1.0 standalone repo + submodule terminal key decoding helpers, mounted at packages/fgof-keys
fgof-expect released v0.1.0 standalone repo + submodule expect-style PTY automation helpers, mounted at packages/fgof-expect
fgof-proc-test released v0.1.0 standalone repo + submodule process-test fixtures, mounted at packages/fgof-proc-test
fgof-temp released v0.1.0 standalone repo + submodule temp files, temp dirs, and atomic write helpers, mounted at packages/fgof-temp
fgof-cache released v0.1.0 standalone repo + submodule disk cache helpers, mounted at packages/fgof-cache
fgof-state released v0.1.0 standalone repo + submodule persistent app and workspace state helpers, mounted at packages/fgof-state
fgof-clipboard released v0.1.0 standalone repo + submodule clipboard text helpers, mounted at packages/fgof-clipboard
fgof-screen released v0.1.0 standalone repo + submodule virtual screen buffer helpers, mounted at packages/fgof-screen
fgof-jobs released v0.1.0 standalone repo + submodule background job and wait-model helpers, mounted at packages/fgof-jobs
fgof-devloop released v0.1.0 standalone repo + submodule watch-driven development loop helpers, mounted at packages/fgof-devloop

As packages are created:

  • each package gets its own repository
  • each package is added here under packages/ as a submodule
  • this table should be updated with its repo URL and current status

How To Use This Repo

Clone the umbrella repo when you want the catalog, landscape docs, and package submodules together:

git clone --recurse-submodules git@github.com:FortranGoingOnForty/lib-modules.git

Go directly to an individual package repo when you only want one library.

Working Rules

  • Root repo holds docs, shared conventions, and package discovery.
  • Package code should live in standalone repos, not directly in the root repo.
  • The packages/ directory is reserved for Git submodules and package-specific notes.
  • Cross-package dependencies should stay shallow and optional.
  • Every package should remain usable as a standalone fpm dependency.

Current Packages

  • fgof-process: POSIX-first process and subprocess helpers
  • fgof-fs: filesystem and path helpers
  • fgof-pty: POSIX-first PTY and terminal session helpers
  • fgof-lineedit: Fortran-native line editing helpers for interactive CLIs
  • fgof-watch: polling-first watch helpers for tools and dev loops
  • fgof-termios: terminal mode helpers for interactive tools
  • fgof-keys: terminal key decoding helpers for interactive tools
  • fgof-expect: expect-style PTY automation helpers for interactive tools and tests
  • fgof-proc-test: process-test fixtures for command-line tools and integration suites
  • fgof-temp: temp files, temp directories, and atomic write helpers
  • fgof-cache: disk cache helpers for command-line tools and local developer workflows
  • fgof-state: persistent app and workspace state helpers
  • fgof-clipboard: clipboard text helpers for command-line and interactive tools
  • fgof-screen: virtual screen buffer helpers for future TUIs and prompt layers
  • fgof-jobs: background job and wait-model helpers for shells, supervisors, and tool hosts
  • fgof-devloop: watch-driven development loop helpers for rebuild, restart, and smoke workflows

See LANDSCAPE.md for the broader ecosystem assessment and package backlog.

View source
1 # lib-modules
2
3 This repository is the umbrella catalog for reusable Fortran packages developed under the `FortranGoingOnForty` umbrella.
4
5 It is intentionally not a traditional code monorepo.
6
7 The goal is:
8
9 - keep shared docs, roadmap, and package discovery in one place
10 - keep each package in its own repository with its own history, releases, issues, and CI
11 - collect those package repos here as Git submodules under `packages/`
12
13 That gives us the discoverability and organization benefits of one home page without burying every package inside a giant top-level repo.
14
15 Start here if you want the big-picture package map:
16
17 - [LANDSCAPE.md](LANDSCAPE.md)
18
19 Go straight to the first standalone package if you already know what you want:
20
21 - [fgof-process](https://github.com/FortranGoingOnForty/fgof-process)
22 - [fgof-fs](https://github.com/FortranGoingOnForty/fgof-fs)
23 - [fgof-pty](https://github.com/FortranGoingOnForty/fgof-pty)
24 - [fgof-lineedit](https://github.com/FortranGoingOnForty/fgof-lineedit)
25 - [fgof-watch](https://github.com/FortranGoingOnForty/fgof-watch)
26 - [fgof-termios](https://github.com/FortranGoingOnForty/fgof-termios)
27 - [fgof-keys](https://github.com/FortranGoingOnForty/fgof-keys)
28 - [fgof-expect](https://github.com/FortranGoingOnForty/fgof-expect)
29 - [fgof-proc-test](https://github.com/FortranGoingOnForty/fgof-proc-test)
30 - [fgof-temp](https://github.com/FortranGoingOnForty/fgof-temp)
31 - [fgof-cache](https://github.com/FortranGoingOnForty/fgof-cache)
32 - [fgof-state](https://github.com/FortranGoingOnForty/fgof-state)
33 - [fgof-clipboard](https://github.com/FortranGoingOnForty/fgof-clipboard)
34 - [fgof-screen](https://github.com/FortranGoingOnForty/fgof-screen)
35 - [fgof-jobs](https://github.com/FortranGoingOnForty/fgof-jobs)
36 - [fgof-devloop](https://github.com/FortranGoingOnForty/fgof-devloop)
37
38 The most recently released library target is `fgof-devloop`, with
39 `fgof-archive` and `fgof-snapshot` close behind in the backlog.
40
41 If you want local comparison checkouts for already-served or deferred areas,
42 use `./scripts/sync-refs.sh` to populate `.refs/` from the curated reference
43 set in [docs/REFERENCE-LIBS.md](docs/REFERENCE-LIBS.md).
44
45 ## Why This Structure
46
47 This repo exists to answer two different needs cleanly:
48
49 1. People should be able to land on one GitHub repo and understand the whole library family.
50 2. People should also be able to find, clone, star, release, and depend on one package at a time.
51
52 Git submodules are the best fit here because they preserve:
53
54 - independent package history
55 - independent package versioning
56 - independent package visibility on GitHub
57 - easy standalone consumption by `fpm` users
58
59 ## Layout
60
61 ```text
62 lib-modules/
63 README.md
64 LANDSCAPE.md
65 docs/
66 REPO-STRUCTURE.md
67 packages/
68 README.md
69 fgof-process/ # git submodule
70 fgof-fs/ # git submodule
71 fgof-pty/ # git submodule
72 fgof-lineedit/ # git submodule
73 fgof-expect/ # git submodule
74 fgof-proc-test/ # git submodule
75 fgof-temp/ # git submodule
76 fgof-cache/ # git submodule
77 fgof-state/ # git submodule
78 fgof-clipboard/ # git submodule
79 fgof-screen/ # git submodule
80 fgof-jobs/ # git submodule
81 fgof-devloop/ # git submodule
82 ...
83 scripts/
84 add-package-submodule.sh
85 sync-refs.sh
86 ```
87
88 ## Package Catalog
89
90 | Package | Status | Repo Model | Notes |
91 | --- | --- | --- | --- |
92 | [`fgof-process`](https://github.com/FortranGoingOnForty/fgof-process) | released `v0.1.1` | standalone repo + submodule | POSIX-first process helpers, mounted at `packages/fgof-process` |
93 | [`fgof-fs`](https://github.com/FortranGoingOnForty/fgof-fs) | released `v0.1.0` | standalone repo + submodule | filesystem and path helpers, mounted at `packages/fgof-fs` |
94 | [`fgof-pty`](https://github.com/FortranGoingOnForty/fgof-pty) | released `v0.1.0` | standalone repo + submodule | POSIX-first PTY helpers, mounted at `packages/fgof-pty` |
95 | [`fgof-lineedit`](https://github.com/FortranGoingOnForty/fgof-lineedit) | released `v0.1.0` | standalone repo + submodule | Fortran-native line editing helpers, mounted at `packages/fgof-lineedit` |
96 | [`fgof-watch`](https://github.com/FortranGoingOnForty/fgof-watch) | released `v0.1.0` | standalone repo + submodule | polling-first watch helpers, mounted at `packages/fgof-watch` |
97 | [`fgof-termios`](https://github.com/FortranGoingOnForty/fgof-termios) | released `v0.1.0` | standalone repo + submodule | terminal mode helpers, mounted at `packages/fgof-termios` |
98 | [`fgof-keys`](https://github.com/FortranGoingOnForty/fgof-keys) | released `v0.1.0` | standalone repo + submodule | terminal key decoding helpers, mounted at `packages/fgof-keys` |
99 | [`fgof-expect`](https://github.com/FortranGoingOnForty/fgof-expect) | released `v0.1.0` | standalone repo + submodule | expect-style PTY automation helpers, mounted at `packages/fgof-expect` |
100 | [`fgof-proc-test`](https://github.com/FortranGoingOnForty/fgof-proc-test) | released `v0.1.0` | standalone repo + submodule | process-test fixtures, mounted at `packages/fgof-proc-test` |
101 | [`fgof-temp`](https://github.com/FortranGoingOnForty/fgof-temp) | released `v0.1.0` | standalone repo + submodule | temp files, temp dirs, and atomic write helpers, mounted at `packages/fgof-temp` |
102 | [`fgof-cache`](https://github.com/FortranGoingOnForty/fgof-cache) | released `v0.1.0` | standalone repo + submodule | disk cache helpers, mounted at `packages/fgof-cache` |
103 | [`fgof-state`](https://github.com/FortranGoingOnForty/fgof-state) | released `v0.1.0` | standalone repo + submodule | persistent app and workspace state helpers, mounted at `packages/fgof-state` |
104 | [`fgof-clipboard`](https://github.com/FortranGoingOnForty/fgof-clipboard) | released `v0.1.0` | standalone repo + submodule | clipboard text helpers, mounted at `packages/fgof-clipboard` |
105 | [`fgof-screen`](https://github.com/FortranGoingOnForty/fgof-screen) | released `v0.1.0` | standalone repo + submodule | virtual screen buffer helpers, mounted at `packages/fgof-screen` |
106 | [`fgof-jobs`](https://github.com/FortranGoingOnForty/fgof-jobs) | released `v0.1.0` | standalone repo + submodule | background job and wait-model helpers, mounted at `packages/fgof-jobs` |
107 | [`fgof-devloop`](https://github.com/FortranGoingOnForty/fgof-devloop) | released `v0.1.0` | standalone repo + submodule | watch-driven development loop helpers, mounted at `packages/fgof-devloop` |
108
109 As packages are created:
110
111 - each package gets its own repository
112 - each package is added here under `packages/` as a submodule
113 - this table should be updated with its repo URL and current status
114
115 ## How To Use This Repo
116
117 Clone the umbrella repo when you want the catalog, landscape docs, and package submodules together:
118
119 ```bash
120 git clone --recurse-submodules git@github.com:FortranGoingOnForty/lib-modules.git
121 ```
122
123 Go directly to an individual package repo when you only want one library.
124
125 ## Working Rules
126
127 - Root repo holds docs, shared conventions, and package discovery.
128 - Package code should live in standalone repos, not directly in the root repo.
129 - The `packages/` directory is reserved for Git submodules and package-specific notes.
130 - Cross-package dependencies should stay shallow and optional.
131 - Every package should remain usable as a standalone `fpm` dependency.
132
133 ## Current Packages
134
135 - [`fgof-process`](https://github.com/FortranGoingOnForty/fgof-process): POSIX-first process and subprocess helpers
136 - [`fgof-fs`](https://github.com/FortranGoingOnForty/fgof-fs): filesystem and path helpers
137 - [`fgof-pty`](https://github.com/FortranGoingOnForty/fgof-pty): POSIX-first PTY and terminal session helpers
138 - [`fgof-lineedit`](https://github.com/FortranGoingOnForty/fgof-lineedit): Fortran-native line editing helpers for interactive CLIs
139 - [`fgof-watch`](https://github.com/FortranGoingOnForty/fgof-watch): polling-first watch helpers for tools and dev loops
140 - [`fgof-termios`](https://github.com/FortranGoingOnForty/fgof-termios): terminal mode helpers for interactive tools
141 - [`fgof-keys`](https://github.com/FortranGoingOnForty/fgof-keys): terminal key decoding helpers for interactive tools
142 - [`fgof-expect`](https://github.com/FortranGoingOnForty/fgof-expect): expect-style PTY automation helpers for interactive tools and tests
143 - [`fgof-proc-test`](https://github.com/FortranGoingOnForty/fgof-proc-test): process-test fixtures for command-line tools and integration suites
144 - [`fgof-temp`](https://github.com/FortranGoingOnForty/fgof-temp): temp files, temp directories, and atomic write helpers
145 - [`fgof-cache`](https://github.com/FortranGoingOnForty/fgof-cache): disk cache helpers for command-line tools and local developer workflows
146 - [`fgof-state`](https://github.com/FortranGoingOnForty/fgof-state): persistent app and workspace state helpers
147 - [`fgof-clipboard`](https://github.com/FortranGoingOnForty/fgof-clipboard): clipboard text helpers for command-line and interactive tools
148 - [`fgof-screen`](https://github.com/FortranGoingOnForty/fgof-screen): virtual screen buffer helpers for future TUIs and prompt layers
149 - [`fgof-jobs`](https://github.com/FortranGoingOnForty/fgof-jobs): background job and wait-model helpers for shells, supervisors, and tool hosts
150 - [`fgof-devloop`](https://github.com/FortranGoingOnForty/fgof-devloop): watch-driven development loop helpers for rebuild, restart, and smoke workflows
151
152 See [LANDSCAPE.md](LANDSCAPE.md) for the broader ecosystem assessment and package backlog.