lib-modules Public
Fortran Systems Ecosystem Landscape
Date: 2026-04-21
This document is a decision aid for FortranGoingOnForty/lib-modules.
It is not an implementation plan, and it is not trying to survey all of Fortran. It is focused on reusable systems and tooling packages that working Fortran programmers could actually depend on for shells, terminals, editors, file tools, developer tooling, local services, and command-line applications.
The central question is not "can Fortran do this?" The central question is:
where does the Fortran ecosystem still lack a small, dependable, ergonomic package that an application author would realistically reach for?
Package names in this document are provisional and only meant to make the backlog easier to discuss.
Candidate count: 48
Status note: fgof-process, fgof-fs, fgof-pty, and fgof-lineedit have now shipped as v0.1.0 packages. They remain in the backlog tables as completed reference points so the original scoring context stays visible.
Contents
- Executive Summary
- Purpose And Framing
- Ecosystem Snapshot
- How To Read The Scores
- Category Backlog
- Organization Recommendations
- Local Extraction Evidence
- Sources Appendix
- Final Read
Executive Summary
What The Current Landscape Looks Like
- The first FortranGoingOnForty wave is now real, not hypothetical:
fgof-process,fgof-fs,fgof-pty, andfgof-lineeditare shipped and establish a credible baseline for process, filesystem, PTY, and interactive editing work. - The official package index already has credible coverage for config and serialization formats, CLI parsing, logging, regex, ncurses bindings, raw POSIX wrappers, SQLite bindings, libcurl bindings, compression bindings, and many scientific utilities.
stdlibis also expanding into general-purpose territory. Its published scope includes utilities, logging, strings, containers, and OS or environment integration, and the currentstdlib_systemspec already covers path operations plus synchronous and asynchronous process execution.- The big gap is not "nothing exists." The big gap is that many systems-oriented areas are still split between:
- thin bindings
- experimental
stdlibsurfaces - personal utility collections
- app-local code inside projects like
fortsh,fifftty,fortress,sniffert, andfacsimile
Highest-Signal Conclusion
The first wave is now shipped:
- subprocess and process control via
fgof-process - filesystem ergonomics via
fgof-fs - PTY session control via
fgof-pty - line editing primitives via
fgof-lineedit
The strongest remaining opportunity cluster now looks like:
- file watching
- terminal state and key normalization
- expect-style testing and process-test tooling
- temp, cache, clipboard, and app-state helpers
- archive and compression ergonomics
These are the places where:
- real apps need the functionality repeatedly
- the Fortran ecosystem still lacks an obvious default
- your own codebase already contains extractable proof that the need is real
Top Gaps
- File watching still looks like the single biggest remaining library hole: there are tools around the ecosystem, but no obvious reusable Fortran default that normal app authors would pull in.
- Terminal mode handling and key decoding are still brittle, low-level, and repeatedly reinvented across interactive apps.
- Expect-style PTY automation and process-test tooling remain unusually thin despite clear value for shells, TUIs, and CI.
- Temp files, clipboard helpers, cache helpers, and app-state persistence are still mostly hand-rolled even though they are common practical needs.
- Compression and archive support still exists mostly as bindings rather than as a small ergonomic package surface.
- SQLite and local-data ergonomics remain promising, but they now look like a second-tier priority behind watch and interactive tooling.
Shipped First Wave
These packages are no longer just candidates. They are shipped v0.1.0 packages and form the current baseline of the library family.
| Project | What It Covers | Repo |
|---|---|---|
fgof-process |
argv-first subprocess helpers, capture, cwd and env overrides, timeouts | fgof-process |
fgof-fs |
paths, metadata, traversal, copy or move, lookup helpers | fgof-fs |
fgof-pty |
PTY sessions, reads or writes, resize, lifecycle helpers | fgof-pty |
fgof-lineedit |
line editing core, history, actions, completions, render snapshots | fgof-lineedit |
Strongest Remaining Bets Right Now
These are the best "start here next" candidates now that the first wave exists.
Scores are Impact / Gap severity / Feasibility / Local leverage / Maintenance burden. Lower maintenance burden is better.
| Project | Why It Stands Out | Existing Leverage | Scores | Verdict |
|---|---|---|---|---|
fgof-watch |
Genuine ecosystem hole; useful for dev loops, editors, sync tools, live reload | no obvious default local package yet | 5/5/3/3/4 |
Strong candidate |
fgof-termios |
Terminal mode handling is still low-level and easy to get wrong; it would strengthen the interactive stack immediately | fortsh system interface, fit keyboard handling |
4/4/5/5/2 |
Strong candidate |
fgof-keys |
Terminal key handling is a pain point that many apps re-solve badly | fit, fortsh, facsimile input handling |
4/5/4/4/3 |
Strong candidate |
fgof-expect |
PTY automation is valuable for interactive testing, demos, and CI, and the local leverage is strong | fifftty PTY manager, fortsh interactive YAML specs |
4/5/4/5/3 |
Strong candidate |
fgof-proc-test |
Process-fixture tooling would be useful immediately on top of fgof-process |
fortsh system interface and executor stack | 4/5/4/5/3 |
Strong candidate |
fgof-clipboard |
Small, very practical, and clearly underpackaged | local clipboard code in facsimile |
4/5/4/4/3 |
Strong candidate |
fgof-temp |
Temp files, temp dirs, atomic writes, and safe replacement show up everywhere | fit, fortress, facsimile backup flows |
4/4/5/4/2 |
Strong candidate |
fgof-cache |
Local caches are useful for tools and usually hand-written badly | fuss cache module, command tooling |
4/5/4/4/2 |
Strong candidate |
fgof-state |
Workspace and session persistence is a repeated app need with no obvious default package | facsimile workspace vision |
4/5/5/4/2 |
Strong candidate |
fgof-sqlite |
Bindings exist, but an ergonomic layer would be broadly useful | existing SQLite bindings in ecosystem | 4/4/4/2/3 |
Strong candidate |
fgof-devloop |
There is already fpm-watch as a tool, but not a reusable library surface |
process and watch primitives can feed it | 4/4/5/3/2 |
Strong candidate |
Crowded Or Lower-Priority Areas
These are not "bad ideas." They are areas where you should only enter if you have a very clear differentiator.
| Area | Why It Is Lower Priority | Existing Options |
|---|---|---|
| JSON | Multiple packages already exist | json-fortran, FortJSON, jsonff |
| TOML | Clear ecosystem option already exists | toml-f |
| YAML | Not empty enough to justify a me-too entry | yaFyaml |
| CLI parsing | Several options already cover the basics well | FLAP, M_CLI |
| Logging and errors | Active stdlib work plus multiple ecosystem packages |
stdlib_logger, erloff, fortran-error-handler, pFlogger |
| Regex | Solid wrapper exists already | fortran-pcre2 |
| ncurses bindings | More than one binding exists | fortran-ncurses, M_ncurses |
| Raw HTTP baseline | There is already an HTTP client plus libcurl bindings | http-client, fortran-curl |
| Raw OS wrappers | The ecosystem already has several low-level wrappers | fortran-unix, M_system, os |
Purpose And Framing
This document assumes that the future lib-modules repo acts as an umbrella catalog repo, not a traditional monorepo:
- docs and coordination live here
- individual packages live in their own repos
- this repo can later collect them via Git submodules
That matters because it changes the target shape of good projects:
- each package should be viable as a standalone
fpmdependency - each package should have a clear surface area and release story
- cross-package coupling should be optional, not structural
The ideal end state is not "one giant dependency graph." It is:
- a coherent family of small packages
- consistent naming and conventions
- clear discovery from one umbrella repo
- independent adoption by people who only want one package
Ecosystem Snapshot
What Already Exists
The official package index shows that Fortran already has a meaningful spread of non-numerical packages:
- strings and text handling
- config and serialization formats
- logging and error handling
- CLI argument parsing
- regex
- ncurses bindings
- SQLite, LMDB, Lua, Tcl, Modbus, XMPP and other interfaces
- libcurl, zlib, zstd and POSIX wrappers
That means the right strategy is not to pretend the ecosystem is empty. The right strategy is to find the places where coverage is shallow, awkward, stale, or too low-level.
stdlib Is Moving Toward This Space
stdlib already positions itself as a community general-purpose library, and the current docs show:
- strings and string types
- logger
- containers
- OS and subprocess APIs in
stdlib_system
Inference: if you build in this space, the best approach is to complement stdlib, align where it helps, and avoid fighting it head-on in areas where it is already the natural default.
Why Your Local Codebase Matters
Your local projects are not toy examples. They are real end-user tools:
- shell:
fortsh - terminal emulator:
fifftty - file explorer:
fortress - disk analyzer:
sniffert - editor and workspace tooling:
facsimile - merge tool / TUI tooling:
fit - tree and git helper tooling:
fuss
Those projects repeatedly need:
- filesystem traversal and metadata
- subprocess and job control
- PTY interaction
- terminal state management
- clipboard and prompt helpers
- persistent workspace or tool state
That makes extraction-based packages unusually credible here. These are not hypothetical package ideas; they are recurring needs that have already been paid for in app code.
How To Read The Scores
Every candidate uses the same five scores:
Impact: how broadly useful this would be to app authorsGap severity: how underserved the area still looksFeasibility: how likely it is to ship something solid without heroic effortLocal leverage: how much existing FortranGoingOnForty code or tests could accelerate itMaintenance burden: how expensive it will be to support over time
Interpretation:
- higher is better for
Impact,Gap severity,Feasibility, andLocal leverage - lower is better for
Maintenance burden
Verdicts:
Strong candidate: worth serious consideration soonWorth exploring: promising, but needs sharper differentiation or depends on upstream choicesLow priority: possible someday, but not where the leverage is right now
Category Backlog
1. Filesystem And Paths
Takeaway: the ecosystem has pieces here, but not yet a clear ergonomic default for app authors.
| Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict |
|---|---|---|---|---|---|---|---|---|
fgof-path |
Path type plus joins, normalize, relatives, basename, dirname, tilde and home handling | Path helpers exist, but they are either low-level or experimental rather than a polished everyday API | stdlib_system, M_IO, M_system, os |
ergonomic facade | mostly pure Fortran | fortress filesystem ops, sniffert file system | 4/4/5/4/2 |
Strong candidate |
fgof-fs |
stat, lstat, exists, scandir, walk, metadata, symlink handling, permissions |
There are wrappers, but not an obvious small package people would confidently standardize on | stdlib_system, fortran-unix, fortyxima, os |
ergonomic facade | POSIX C shim first | fortsh system interface, sniffert file system, fortress filesystem ops | 5/5/4/5/3 |
Strong candidate |
fgof-temp |
Temp files, temp dirs, atomic write or replace, safe move semantics | Almost every tool needs this and almost every tool hand-rolls it | no obvious default package surfaced in official index | new implementation | pure Fortran plus OS calls | fit temp-file flows, fortress scratch files, facsimile backup ideas |
4/4/5/4/2 |
Strong candidate |
fgof-trash-open |
Trash files safely, reveal paths, open with default app, launch file manager | Very practical, clearly useful, and not obviously covered by a standard package | no obvious default package surfaced in official index | new implementation | shell or C shims by platform | fortress filesystem ops, sniffert file system | 4/5/4/4/3 |
Strong candidate |
fgof-xdg |
Config, cache, state, runtime-dir discovery for CLI and TUI apps | Every serious app repeats this logic; existing wrappers stop at environment access | M_system, raw env helpers |
new implementation | pure Fortran | facsimile workspace vision | 3/4/5/4/1 |
Worth exploring |
fgof-ignore |
.gitignore-style rules, include or exclude filters, reusable path selection engine |
Globbing is not the same as ignore semantics, and tooling authors often need the latter | local fortsh globbing, regex packages |
extracted module or new implementation | pure Fortran | fortsh glob parser, fuss tree scanning |
4/4/4/4/2 |
Worth exploring |
2. Processes And Jobs
Takeaway: this is one of the strongest clusters in the whole document.
| Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict |
|---|---|---|---|---|---|---|---|---|
fgof-process |
High-level run, spawn, capture, timeouts, cwd, env overrides, exit status |
stdlib and wrappers exist, but there is still no obvious ergonomic default for apps and tests |
stdlib_system, M_process, M_system, fortran-unix |
ergonomic facade | POSIX first with C shim | fortsh system interface and executor stack | 5/5/4/5/3 |
Strong candidate |
fgof-cmd |
Safe argv construction and shell quoting helpers to stop command-string bugs | Command construction is still mostly hand-built strings | ad hoc code; general wrappers do not center this | new implementation | pure Fortran | fortress git command building, fortsh parser and execution model |
4/4/5/4/1 |
Strong candidate |
fgof-env |
Environment variables, executable lookup, PATH resolution, cwd stack helpers | Existing wrappers expose pieces, but not a small opinionated convenience layer | M_system, stdlib_system, fortran-unix |
ergonomic facade | pure Fortran plus OS calls | fortress, facsimile, fortsh startup logic |
3/3/5/4/1 |
Worth exploring |
fgof-jobs |
Background jobs, process groups, wait models, pipeline status tracking | Shells need this; most general packages do not even try to expose it well | local shell code only; low-level POSIX bindings | extracted module | POSIX only at first | fortsh jobs and signal handling |
4/5/3/5/4 |
Strong candidate |
fgof-proc-test |
Test fixtures for child processes, retry loops, cleanup, capture, fail-fast helpers | General test frameworks exist, but process-fixture tooling is thin | test-drive, vegetables, pFUnit do not specialize here |
new implementation | fgof-process backend |
fortsh integration tests and runner logic |
4/5/4/5/3 |
Strong candidate |
3. PTY And Terminal Control
Takeaway: this is unusually underpackaged given how important it is for interactive tools.
| Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict |
|---|---|---|---|---|---|---|---|---|
fgof-pty |
PTY sessions, child attach, reads and writes, resize, close, signal delivery | This capability is critical for shells and terminals but still mostly app-local | no obvious general-purpose default in official index | extracted module or ergonomic facade | POSIX C shim | fifftty PTY manager, fortsh interactive harnesses |
5/5/4/5/4 |
Strong candidate |
fgof-termios |
Raw and canonical mode guards, echo restore, cursor restore safety | Terminal mode handling is low-level and error-prone | fortran-unix and raw POSIX only |
ergonomic facade | POSIX C shim | fortsh system interface, fit keyboard handling |
4/4/5/5/2 |
Strong candidate |
fgof-ttysize |
Terminal size querying, resize propagation, helper APIs for UI layouts | This logic appears all over interactive tools, but rarely as a standalone package | low-level ioctl wrappers only | small utility package | POSIX first | fortsh, fifftty, fit terminal sizing code |
3/4/5/4/2 |
Worth exploring |
fgof-expect |
Expect-style PTY testing library for scripted interactions | Great fit for shells, TUIs, terminal apps, and CI; ecosystem surface is tiny | no obvious general-purpose default in official index | new implementation | fgof-pty backend |
fortsh interactive YAML specs, fifftty tests |
4/5/4/5/3 |
Strong candidate |
4. Terminal UX And TUI Primitives
Takeaway: the ecosystem has low-level pieces, but a lot of day-to-day TUI ergonomics are still hand-built.
| Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict |
|---|---|---|---|---|---|---|---|---|
fgof-ansi |
Styles, cursor movement, alternate screen, clear regions, restore helpers | ANSI codes exist in stdlib, but many apps still want a friendlier composition layer |
stdlib_ansi, app-local snippets |
ergonomic facade | pure Fortran | fortsh, facsimile, fortress, fit |
3/3/5/5/1 |
Worth exploring |
fgof-keys |
Normalize escape sequences and terminal key decoding across terminals | Everyone reinvents this differently, and it is brittle | ncurses or custom parsing; no obvious standalone default | new implementation | pure Fortran plus termios helpers | fit, fortsh, facsimile input work |
4/5/4/4/3 |
Strong candidate |
fgof-lineedit |
History, kill/yank, completion hooks, prompt editing for CLI tools | Readline integration exists, but a clean Fortran-native line editor surface is still rare | local readline wrappers, M_history |
extracted module or new implementation | termios plus terminal I/O | fortsh I/O stack, editor input ideas |
5/5/4/5/4 |
Strong candidate |
fgof-clipboard |
Cross-platform clipboard get and set for text tools | Small but useful package with clear practical demand | no obvious default package in official index | extracted module | shell tools by platform | facsimile clipboard module |
4/5/4/4/3 |
Strong candidate |
fgof-prompt |
Menus, confirm prompts, pickers, spinners, progress, forms | Useful to many CLI and TUI tools, but usually bolted onto apps | CLI parsers cover args, not interactive prompts | new implementation | pure Fortran | fortress UI, sniffert UI, fit TUI layout |
3/4/4/4/2 |
Worth exploring |
fgof-screen |
Virtual screen buffer and diff renderer for TUIs | ncurses bindings exist, but a higher-level compositional model does not clearly dominate | fortran-ncurses, M_ncurses |
ergonomic facade | can sit on ANSI or ncurses | sniffert terminal UI, fifftty terminal grid, facsimile rendering code |
4/4/3/4/4 |
Worth exploring |
5. Filesystem Watching
Takeaway: this is one of the clearest "library gap" areas in the whole document.
| Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict |
|---|---|---|---|---|---|---|---|---|
fgof-watch |
High-level watch API with native backends and polling fallback | There are tools and external libraries, but no obvious reusable Fortran default for app authors | fpm-watch is a tool, not a library; no obvious package-index default |
ergonomic facade | native backends via C or libfswatch | future editor and dev-loop use across local tools | 5/5/3/3/4 |
Strong candidate |
fgof-watch-poll |
Pure polling backend for portability, CI, and fallback behavior | Native watchers are complex; polling still has value as a reliable baseline | no obvious package-index default | new implementation | pure Fortran | useful for any future watch-based package | 3/4/5/2/2 |
Worth exploring |
fgof-watch-rules |
Ignore rules, debounce, coalescing, event filtering | Real watchers need event shaping; many libraries stop at raw notifications | app authors usually reimplement this themselves | library sidecar | pure Fortran | combines well with fgof-ignore and fgof-watch |
3/4/4/2/2 |
Worth exploring |
fgof-devloop |
Auto restart and rebuild supervision library for tools and tests | There is visible demand for watch-driven dev loops, but the reusable library layer is missing | fpm-watch as a tool |
new implementation | fgof-watch plus fgof-process |
useful for local tool development and CI smoke loops | 4/4/5/3/2 |
Strong candidate |
6. Networking And Services
Takeaway: this space is not empty, but it is still mostly thin bindings plus isolated projects.
| Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict |
|---|---|---|---|---|---|---|---|---|
fgof-http |
Friendlier HTTP client with requests, headers, forms, timeouts, and composable responses | HTTP exists, but ecosystem default status and ergonomics still look unsettled | http-client, fortran-curl |
ergonomic facade | libcurl backend likely | useful to future package tooling and local service clients | 4/3/4/2/3 |
Worth exploring |
fgof-url |
URL parsing, joining, encoding, decoding, query building | Useful even outside HTTP, and not clearly solved by a common package | no obvious default package surfaced in official index | new implementation | pure Fortran | can support HTTP and service tooling later | 3/4/5/1/1 |
Worth exploring |
fgof-tcp |
Simple TCP client or server API for tools and local services | Package-index coverage looks more demo-like and binding-like than ergonomic | tcp-client-server, fortran-unix |
ergonomic facade | POSIX sockets or C shim | could support future dev tools and editor integrations | 4/4/4/2/3 |
Worth exploring |
fgof-tls |
Secure socket helpers, certificate loading, client defaults | Important, but hard and expensive, especially cross-platform | raw OpenSSL world only | thin binding first, if at all | OpenSSL or similar | little local leverage yet | 4/5/2/1/5 |
Low priority |
fgof-websocket |
WebSocket client for live tools, streaming APIs, and dashboards | No obvious Fortran default surfaced in official package landscape | no obvious package-index default | new implementation | handshake, framing, and likely TLS | little local leverage yet | 4/5/2/1/5 |
Low priority |
fgof-service |
Daemon or service lifecycle helpers, pidfile, signal glue, status checks | A niche but useful layer for people writing long-running local services | process libraries expose pieces, not a full shape | new implementation | fgof-process and signals |
fortsh signal and job work |
3/4/4/3/3 |
Worth exploring |
7. Storage And Local Data
Takeaway: bindings exist here; ergonomic local-tool persistence packages mostly do not.
| Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict |
|---|---|---|---|---|---|---|---|---|
fgof-sqlite |
Friendly query and transaction layer on top of SQLite bindings | SQLite bindings exist, but the "pleasant to use in an app" layer is still open | fortran-sqlite3, sqliteff |
ergonomic facade | SQLite C library | future workspace, cache, and metadata tooling | 4/4/4/2/3 |
Strong candidate |
fgof-kv |
Tiny embedded key-value store API backed by SQLite or LMDB | Tool authors often want simple persistence, not a full SQL surface | fortran-lmdb is low-level |
ergonomic facade | SQLite or LMDB backend | can power caches and tool state | 4/4/4/2/3 |
Worth exploring |
fgof-cache |
Disk cache with content hashing, TTLs, invalidation, and cleanup | Extremely useful for CLI tools and build-ish workflows; mostly hand-rolled today | no obvious default package surfaced in official index | new implementation | pure plus filesystem helpers | fuss cache ideas and tooling workflows |
4/5/4/4/2 |
Strong candidate |
fgof-state |
Persistent app, session, and workspace state with atomic saves and versioning | Editors, shells, and file tools need this repeatedly, and config parsers alone do not solve it | config packages exist, but not a state-management default | new implementation | pure plus filesystem helpers | facsimile workspace vision | 4/5/5/4/2 |
Strong candidate |
8. Archives And Compression
Takeaway: low-level coverage exists, but the package-author-friendly layer still looks open.
| Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict |
|---|---|---|---|---|---|---|---|---|
fgof-archive |
Single high-level API for tar and zip style archive creation and extraction | Compression bindings exist, but not an obvious archive package people would instinctively use | fortran-zlib, fortran-zstd are lower-level |
ergonomic facade | libarchive or bespoke backends |
useful across packaging and artifact tools | 4/5/3/1/4 |
Strong candidate |
fgof-compress |
Simple gzip and zstd compress/decompress functions and streams | The raw bindings are not the same thing as a pleasant package surface | fortran-zlib, fortran-zstd |
ergonomic facade | zlib or zstd backend | would support archives and caching | 4/4/4/1/3 |
Worth exploring |
fgof-checksum |
File and buffer digests for SHA-256 or similar | Great utility layer for caches, archives, snapshots, and integrity checks | no obvious package-index default surfaced | new implementation | C crypto backend likely | cross-cutting utility for many later packages | 3/4/4/1/3 |
Worth exploring |
fgof-pack |
Bundle manifests plus files into reproducible tool artifacts | Useful for release tooling and app bundles, but more specialized than base archive work | no obvious package-index default surfaced | new implementation | archive plus checksum backends | future release and packaging workflows | 3/3/3/1/3 |
Worth exploring |
9. Developer Tooling
Takeaway: this is fertile ground because tooling libraries often have high leverage and lower platform pain.
| Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict |
|---|---|---|---|---|---|---|---|---|
fgof-snapshot |
Snapshot or golden-file testing helpers for CLIs and diagnostics | Existing test frameworks do not specialize in this workflow | test-drive, vegetables, pFUnit |
new implementation | pure Fortran | snapshot-like local tests in armfortas and CLI tools |
4/5/5/3/2 |
Strong candidate |
fgof-fixture |
Temp project, temp worktree, and fixture builders for tests | Process-heavy tools need better test fixtures than raw shell setup | general test frameworks exist, but not this niche | new implementation | filesystem plus process helpers | fortsh, fit, and other test suites |
4/4/5/3/2 |
Strong candidate |
fgof-parser |
General parser combinators and token-stream library | Parsers exist, but reusable general parser infrastructure is still thin | parff, equation parsers |
new implementation or extracted core | pure Fortran | fortsh parser stack is strong evidence |
4/4/4/5/3 |
Strong candidate |
fgof-modulegraph |
Build module-dependency graph for Fortran source trees | Useful for tooling and editors; current options are more tool-like than library-like | FortranCallGraph, fortls, external parsers |
new implementation | pure Fortran | future workspace tooling in facsimile |
3/4/4/2/2 |
Worth exploring |
fgof-trace |
Structured timing and tracing spans for CLIs, tests, and services | Logging exists, but trace-style instrumentation is still sparse | stdlib_logger, coretran, pFlogger |
new implementation | pure Fortran | fortsh performance helpers |
3/3/5/3/1 |
Worth exploring |
10. Interop And Bindings
Takeaway: low-level wrappers are not glamorous, but a few carefully chosen ones could unlock many higher-level packages.
| Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict |
|---|---|---|---|---|---|---|---|---|
fgof-posix-core |
Curated POSIX core for files, dirs, fd I/O, processes, signals, and terminals | Low-level wrappers exist, but coverage and naming are inconsistent and often not shaped for reuse | fortran-unix, M_system, os |
thin binding with sane naming | POSIX C APIs | fortsh system interface, sniffert file system, fifftty PTY manager | 5/4/4/5/3 |
Strong candidate |
fgof-cstr |
Safe C-string, argv, and buffer conversion helpers for iso_c_binding work |
Every wrapper package ends up reinventing this small but annoying layer | raw iso_c_binding plus scattered discourse advice |
thin utility package | pure Fortran | nearly every local C-interop-heavy repo | 4/4/5/5/1 |
Strong candidate |
fgof-libfswatch |
Thin binding to libfswatch for future watcher packages |
Useful enabler, but not the highest-value user-facing package by itself | no obvious Fortran binding surfaced in official package index | thin binding | external libfswatch |
prerequisite for some watch strategies | 3/4/3/1/4 |
Worth exploring |
fgof-openssl-bind |
Thin OpenSSL binding foundation for TLS and hashing | Potentially useful, but expensive and fiddly to support well | no obvious general-purpose Fortran binding surfaced in official package index | thin binding | OpenSSL | little local leverage today | 4/5/2/1/5 |
Low priority |
Organization Recommendations
Recommended Repo Shape
Use lib-modules as an umbrella repo:
lib-modules/
LANDSCAPE.md
packages/
fgof-fs/ # git submodule
fgof-process/ # git submodule
fgof-pty/ # git submodule
...
This is not a classic monorepo. It is better described as:
- a catalog repo
- shared docs and roadmap
- independent package repos collected via Git submodules
That choice fits your stated organizational preference and keeps package adoption simple for outsiders.
Independent Package Defaults
Every serious package should aim to be:
- its own repository
- its own
fpmpackage - independently versioned
- independently releasable
- independently listable in the Fortran package index
Naming Recommendations
Use a consistent prefix to avoid module collisions.
Provisional recommendation:
- repo names:
fgof-fs,fgof-process,fgof-pty - top-level module prefix:
fgof_
Example:
- repo:
fgof-process - modules:
fgof_process,fgof_process_types,fgof_process_test
Release And Dependency Recommendations
- keep packages standalone by default
- avoid cross-package dependencies until a real need appears
- if cross-package dependencies become useful, prefer a shallow graph:
- foundational packages first
- ergonomic facades on top
- give each package:
README.md- examples
- tests
- CI
- explicit compiler support notes
Practical Sequencing
With the first wave already shipped, the most sensible next-wave sequence now looks like:
fgof-watchfgof-termiosfgof-keysfgof-expectorfgof-proc-testfgof-temporfgof-clipboard
That sequence adds the most obvious missing value on top of what is already shipped without jumping too early into crowded territory.
Local Extraction Evidence
These local files are especially strong signals that the package surface is not hypothetical:
- fortsh system interface
- fifftty PTY manager
- fortress filesystem ops
- sniffert file system
- facsimile workspace vision
- facsimile fortress integration plan
Inference from those files:
- filesystem and path handling recur across multiple apps
- terminal state and PTY handling are already deep enough locally to extract
- workspace state, config locations, prompts, and app-state persistence are not theoretical needs
- integration tests for interactive tools could directly benefit from reusable PTY and process-test packages
Sources Appendix
Official Ecosystem Sources
- Fortran package index
- General libraries
- I/O packages
- Interface packages
- Programming utilities
- String libraries
- Data-type libraries
stdlib Sources
- Fortran stdlib landing page
- Fortran stdlib specs index
- Fortran stdlib system spec
- Fortran stdlib logger spec
Community Discussions And Announcements
- Stdlib system interaction API: call for feedback
- GSoC '25: stdlib filesystem
- GSOC Intro - stdlib File system library, OS processes
- GSoC 2026 Introduction: interested in stdlib file system library
- New Release of http-client
- Troubleshooting dependency issues with http-client
- New fpm Plugin: fpm-watch
- Will the Fortran Community participate at GSoC 2024?
Local Evidence
Final Read
If the goal is to close one of the most visible non-numerical gaps in the Fortran ecosystem, the best lane is not "write a random library." It is:
- extract and harden the systems layers your apps already need
- package them so they stand alone cleanly
- prefer ergonomic facades where the ecosystem already has low-level coverage
- avoid crowded categories unless you have a very sharp differentiator
The practical center of gravity remains:
- filesystem
- process control
- PTY and terminal control
- watch or dev-loop tooling
- persistence and local app state
That is the area where Fortran still looks most ready for a coherent family of packages rather than one more isolated project.
View source
| 1 | # Fortran Systems Ecosystem Landscape |
| 2 | |
| 3 | Date: 2026-04-21 |
| 4 | |
| 5 | This document is a decision aid for `FortranGoingOnForty/lib-modules`. |
| 6 | |
| 7 | It is not an implementation plan, and it is not trying to survey all of Fortran. It is focused on reusable systems and tooling packages that working Fortran programmers could actually depend on for shells, terminals, editors, file tools, developer tooling, local services, and command-line applications. |
| 8 | |
| 9 | The central question is not "can Fortran do this?" The central question is: |
| 10 | |
| 11 | > where does the Fortran ecosystem still lack a small, dependable, ergonomic package that an application author would realistically reach for? |
| 12 | |
| 13 | Package names in this document are provisional and only meant to make the backlog easier to discuss. |
| 14 | |
| 15 | Candidate count: `48` |
| 16 | |
| 17 | Status note: `fgof-process`, `fgof-fs`, `fgof-pty`, and `fgof-lineedit` have now shipped as `v0.1.0` packages. They remain in the backlog tables as completed reference points so the original scoring context stays visible. |
| 18 | |
| 19 | ## Contents |
| 20 | |
| 21 | - [Executive Summary](#executive-summary) |
| 22 | - [Purpose And Framing](#purpose-and-framing) |
| 23 | - [Ecosystem Snapshot](#ecosystem-snapshot) |
| 24 | - [How To Read The Scores](#how-to-read-the-scores) |
| 25 | - [Category Backlog](#category-backlog) |
| 26 | - [Organization Recommendations](#organization-recommendations) |
| 27 | - [Local Extraction Evidence](#local-extraction-evidence) |
| 28 | - [Sources Appendix](#sources-appendix) |
| 29 | - [Final Read](#final-read) |
| 30 | |
| 31 | ## Executive Summary |
| 32 | |
| 33 | ### What The Current Landscape Looks Like |
| 34 | |
| 35 | - The first FortranGoingOnForty wave is now real, not hypothetical: `fgof-process`, `fgof-fs`, `fgof-pty`, and `fgof-lineedit` are shipped and establish a credible baseline for process, filesystem, PTY, and interactive editing work. |
| 36 | - The official package index already has credible coverage for config and serialization formats, CLI parsing, logging, regex, ncurses bindings, raw POSIX wrappers, SQLite bindings, libcurl bindings, compression bindings, and many scientific utilities. |
| 37 | - `stdlib` is also expanding into general-purpose territory. Its published scope includes utilities, logging, strings, containers, and OS or environment integration, and the current `stdlib_system` spec already covers path operations plus synchronous and asynchronous process execution. |
| 38 | - The big gap is not "nothing exists." The big gap is that many systems-oriented areas are still split between: |
| 39 | - thin bindings |
| 40 | - experimental `stdlib` surfaces |
| 41 | - personal utility collections |
| 42 | - app-local code inside projects like `fortsh`, `fifftty`, `fortress`, `sniffert`, and `facsimile` |
| 43 | |
| 44 | ### Highest-Signal Conclusion |
| 45 | |
| 46 | The first wave is now shipped: |
| 47 | |
| 48 | 1. subprocess and process control via `fgof-process` |
| 49 | 2. filesystem ergonomics via `fgof-fs` |
| 50 | 3. PTY session control via `fgof-pty` |
| 51 | 4. line editing primitives via `fgof-lineedit` |
| 52 | |
| 53 | The strongest remaining opportunity cluster now looks like: |
| 54 | |
| 55 | 1. file watching |
| 56 | 2. terminal state and key normalization |
| 57 | 3. expect-style testing and process-test tooling |
| 58 | 4. temp, cache, clipboard, and app-state helpers |
| 59 | 5. archive and compression ergonomics |
| 60 | |
| 61 | These are the places where: |
| 62 | |
| 63 | - real apps need the functionality repeatedly |
| 64 | - the Fortran ecosystem still lacks an obvious default |
| 65 | - your own codebase already contains extractable proof that the need is real |
| 66 | |
| 67 | ### Top Gaps |
| 68 | |
| 69 | - File watching still looks like the single biggest remaining library hole: there are tools around the ecosystem, but no obvious reusable Fortran default that normal app authors would pull in. |
| 70 | - Terminal mode handling and key decoding are still brittle, low-level, and repeatedly reinvented across interactive apps. |
| 71 | - Expect-style PTY automation and process-test tooling remain unusually thin despite clear value for shells, TUIs, and CI. |
| 72 | - Temp files, clipboard helpers, cache helpers, and app-state persistence are still mostly hand-rolled even though they are common practical needs. |
| 73 | - Compression and archive support still exists mostly as bindings rather than as a small ergonomic package surface. |
| 74 | - SQLite and local-data ergonomics remain promising, but they now look like a second-tier priority behind watch and interactive tooling. |
| 75 | |
| 76 | ### Shipped First Wave |
| 77 | |
| 78 | These packages are no longer just candidates. They are shipped `v0.1.0` packages and form the current baseline of the library family. |
| 79 | |
| 80 | | Project | What It Covers | Repo | |
| 81 | | --- | --- | --- | |
| 82 | | `fgof-process` | argv-first subprocess helpers, capture, cwd and env overrides, timeouts | [fgof-process](https://github.com/FortranGoingOnForty/fgof-process) | |
| 83 | | `fgof-fs` | paths, metadata, traversal, copy or move, lookup helpers | [fgof-fs](https://github.com/FortranGoingOnForty/fgof-fs) | |
| 84 | | `fgof-pty` | PTY sessions, reads or writes, resize, lifecycle helpers | [fgof-pty](https://github.com/FortranGoingOnForty/fgof-pty) | |
| 85 | | `fgof-lineedit` | line editing core, history, actions, completions, render snapshots | [fgof-lineedit](https://github.com/FortranGoingOnForty/fgof-lineedit) | |
| 86 | |
| 87 | ### Strongest Remaining Bets Right Now |
| 88 | |
| 89 | These are the best "start here next" candidates now that the first wave exists. |
| 90 | |
| 91 | Scores are `Impact / Gap severity / Feasibility / Local leverage / Maintenance burden`. Lower maintenance burden is better. |
| 92 | |
| 93 | | Project | Why It Stands Out | Existing Leverage | Scores | Verdict | |
| 94 | | --- | --- | --- | --- | --- | |
| 95 | | `fgof-watch` | Genuine ecosystem hole; useful for dev loops, editors, sync tools, live reload | no obvious default local package yet | `5/5/3/3/4` | Strong candidate | |
| 96 | | `fgof-termios` | Terminal mode handling is still low-level and easy to get wrong; it would strengthen the interactive stack immediately | [fortsh system interface](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortsh/src/system/interface.f90:1), `fit` keyboard handling | `4/4/5/5/2` | Strong candidate | |
| 97 | | `fgof-keys` | Terminal key handling is a pain point that many apps re-solve badly | `fit`, `fortsh`, `facsimile` input handling | `4/5/4/4/3` | Strong candidate | |
| 98 | | `fgof-expect` | PTY automation is valuable for interactive testing, demos, and CI, and the local leverage is strong | [fifftty PTY manager](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fifftty/src/pty_manager.f90:1), `fortsh` interactive YAML specs | `4/5/4/5/3` | Strong candidate | |
| 99 | | `fgof-proc-test` | Process-fixture tooling would be useful immediately on top of `fgof-process` | [fortsh system interface](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortsh/src/system/interface.f90:1) and executor stack | `4/5/4/5/3` | Strong candidate | |
| 100 | | `fgof-clipboard` | Small, very practical, and clearly underpackaged | local clipboard code in `facsimile` | `4/5/4/4/3` | Strong candidate | |
| 101 | | `fgof-temp` | Temp files, temp dirs, atomic writes, and safe replacement show up everywhere | `fit`, `fortress`, `facsimile` backup flows | `4/4/5/4/2` | Strong candidate | |
| 102 | | `fgof-cache` | Local caches are useful for tools and usually hand-written badly | `fuss` cache module, command tooling | `4/5/4/4/2` | Strong candidate | |
| 103 | | `fgof-state` | Workspace and session persistence is a repeated app need with no obvious default package | `facsimile` workspace vision | `4/5/5/4/2` | Strong candidate | |
| 104 | | `fgof-sqlite` | Bindings exist, but an ergonomic layer would be broadly useful | existing SQLite bindings in ecosystem | `4/4/4/2/3` | Strong candidate | |
| 105 | | `fgof-devloop` | There is already `fpm-watch` as a tool, but not a reusable library surface | process and watch primitives can feed it | `4/4/5/3/2` | Strong candidate | |
| 106 | |
| 107 | ### Crowded Or Lower-Priority Areas |
| 108 | |
| 109 | These are not "bad ideas." They are areas where you should only enter if you have a very clear differentiator. |
| 110 | |
| 111 | | Area | Why It Is Lower Priority | Existing Options | |
| 112 | | --- | --- | --- | |
| 113 | | JSON | Multiple packages already exist | `json-fortran`, `FortJSON`, `jsonff` | |
| 114 | | TOML | Clear ecosystem option already exists | `toml-f` | |
| 115 | | YAML | Not empty enough to justify a me-too entry | `yaFyaml` | |
| 116 | | CLI parsing | Several options already cover the basics well | `FLAP`, `M_CLI` | |
| 117 | | Logging and errors | Active `stdlib` work plus multiple ecosystem packages | `stdlib_logger`, `erloff`, `fortran-error-handler`, `pFlogger` | |
| 118 | | Regex | Solid wrapper exists already | `fortran-pcre2` | |
| 119 | | ncurses bindings | More than one binding exists | `fortran-ncurses`, `M_ncurses` | |
| 120 | | Raw HTTP baseline | There is already an HTTP client plus libcurl bindings | `http-client`, `fortran-curl` | |
| 121 | | Raw OS wrappers | The ecosystem already has several low-level wrappers | `fortran-unix`, `M_system`, `os` | |
| 122 | |
| 123 | ## Purpose And Framing |
| 124 | |
| 125 | This document assumes that the future `lib-modules` repo acts as an umbrella catalog repo, not a traditional monorepo: |
| 126 | |
| 127 | - docs and coordination live here |
| 128 | - individual packages live in their own repos |
| 129 | - this repo can later collect them via Git submodules |
| 130 | |
| 131 | That matters because it changes the target shape of good projects: |
| 132 | |
| 133 | - each package should be viable as a standalone `fpm` dependency |
| 134 | - each package should have a clear surface area and release story |
| 135 | - cross-package coupling should be optional, not structural |
| 136 | |
| 137 | The ideal end state is not "one giant dependency graph." It is: |
| 138 | |
| 139 | - a coherent family of small packages |
| 140 | - consistent naming and conventions |
| 141 | - clear discovery from one umbrella repo |
| 142 | - independent adoption by people who only want one package |
| 143 | |
| 144 | ## Ecosystem Snapshot |
| 145 | |
| 146 | ### What Already Exists |
| 147 | |
| 148 | The official package index shows that Fortran already has a meaningful spread of non-numerical packages: |
| 149 | |
| 150 | - strings and text handling |
| 151 | - config and serialization formats |
| 152 | - logging and error handling |
| 153 | - CLI argument parsing |
| 154 | - regex |
| 155 | - ncurses bindings |
| 156 | - SQLite, LMDB, Lua, Tcl, Modbus, XMPP and other interfaces |
| 157 | - libcurl, zlib, zstd and POSIX wrappers |
| 158 | |
| 159 | That means the right strategy is not to pretend the ecosystem is empty. The right strategy is to find the places where coverage is shallow, awkward, stale, or too low-level. |
| 160 | |
| 161 | ### `stdlib` Is Moving Toward This Space |
| 162 | |
| 163 | `stdlib` already positions itself as a community general-purpose library, and the current docs show: |
| 164 | |
| 165 | - strings and string types |
| 166 | - logger |
| 167 | - containers |
| 168 | - OS and subprocess APIs in `stdlib_system` |
| 169 | |
| 170 | Inference: if you build in this space, the best approach is to complement `stdlib`, align where it helps, and avoid fighting it head-on in areas where it is already the natural default. |
| 171 | |
| 172 | ### Why Your Local Codebase Matters |
| 173 | |
| 174 | Your local projects are not toy examples. They are real end-user tools: |
| 175 | |
| 176 | - shell: `fortsh` |
| 177 | - terminal emulator: `fifftty` |
| 178 | - file explorer: `fortress` |
| 179 | - disk analyzer: `sniffert` |
| 180 | - editor and workspace tooling: `facsimile` |
| 181 | - merge tool / TUI tooling: `fit` |
| 182 | - tree and git helper tooling: `fuss` |
| 183 | |
| 184 | Those projects repeatedly need: |
| 185 | |
| 186 | - filesystem traversal and metadata |
| 187 | - subprocess and job control |
| 188 | - PTY interaction |
| 189 | - terminal state management |
| 190 | - clipboard and prompt helpers |
| 191 | - persistent workspace or tool state |
| 192 | |
| 193 | That makes extraction-based packages unusually credible here. These are not hypothetical package ideas; they are recurring needs that have already been paid for in app code. |
| 194 | |
| 195 | ## How To Read The Scores |
| 196 | |
| 197 | Every candidate uses the same five scores: |
| 198 | |
| 199 | - `Impact`: how broadly useful this would be to app authors |
| 200 | - `Gap severity`: how underserved the area still looks |
| 201 | - `Feasibility`: how likely it is to ship something solid without heroic effort |
| 202 | - `Local leverage`: how much existing FortranGoingOnForty code or tests could accelerate it |
| 203 | - `Maintenance burden`: how expensive it will be to support over time |
| 204 | |
| 205 | Interpretation: |
| 206 | |
| 207 | - higher is better for `Impact`, `Gap severity`, `Feasibility`, and `Local leverage` |
| 208 | - lower is better for `Maintenance burden` |
| 209 | |
| 210 | Verdicts: |
| 211 | |
| 212 | - `Strong candidate`: worth serious consideration soon |
| 213 | - `Worth exploring`: promising, but needs sharper differentiation or depends on upstream choices |
| 214 | - `Low priority`: possible someday, but not where the leverage is right now |
| 215 | |
| 216 | ## Category Backlog |
| 217 | |
| 218 | ### 1. Filesystem And Paths |
| 219 | |
| 220 | Takeaway: the ecosystem has pieces here, but not yet a clear ergonomic default for app authors. |
| 221 | |
| 222 | | Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict | |
| 223 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| 224 | | `fgof-path` | Path type plus joins, normalize, relatives, basename, dirname, tilde and home handling | Path helpers exist, but they are either low-level or experimental rather than a polished everyday API | `stdlib_system`, `M_IO`, `M_system`, `os` | ergonomic facade | mostly pure Fortran | [fortress filesystem ops](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortress/src/filesystem/fs_ops.f90:1), [sniffert file system](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/sniffert/src/file_system.f90:1) | `4/4/5/4/2` | Strong candidate | |
| 225 | | `fgof-fs` | `stat`, `lstat`, `exists`, `scandir`, `walk`, metadata, symlink handling, permissions | There are wrappers, but not an obvious small package people would confidently standardize on | `stdlib_system`, `fortran-unix`, `fortyxima`, `os` | ergonomic facade | POSIX C shim first | [fortsh system interface](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortsh/src/system/interface.f90:1), [sniffert file system](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/sniffert/src/file_system.f90:1), [fortress filesystem ops](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortress/src/filesystem/fs_ops.f90:1) | `5/5/4/5/3` | Strong candidate | |
| 226 | | `fgof-temp` | Temp files, temp dirs, atomic write or replace, safe move semantics | Almost every tool needs this and almost every tool hand-rolls it | no obvious default package surfaced in official index | new implementation | pure Fortran plus OS calls | `fit` temp-file flows, `fortress` scratch files, `facsimile` backup ideas | `4/4/5/4/2` | Strong candidate | |
| 227 | | `fgof-trash-open` | Trash files safely, reveal paths, open with default app, launch file manager | Very practical, clearly useful, and not obviously covered by a standard package | no obvious default package surfaced in official index | new implementation | shell or C shims by platform | [fortress filesystem ops](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortress/src/filesystem/fs_ops.f90:1), [sniffert file system](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/sniffert/src/file_system.f90:1) | `4/5/4/4/3` | Strong candidate | |
| 228 | | `fgof-xdg` | Config, cache, state, runtime-dir discovery for CLI and TUI apps | Every serious app repeats this logic; existing wrappers stop at environment access | `M_system`, raw env helpers | new implementation | pure Fortran | [facsimile workspace vision](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/facsimile/docs/WORKSPACE_VISION.md:1) | `3/4/5/4/1` | Worth exploring | |
| 229 | | `fgof-ignore` | `.gitignore`-style rules, include or exclude filters, reusable path selection engine | Globbing is not the same as ignore semantics, and tooling authors often need the latter | local `fortsh` globbing, regex packages | extracted module or new implementation | pure Fortran | `fortsh` glob parser, `fuss` tree scanning | `4/4/4/4/2` | Worth exploring | |
| 230 | |
| 231 | ### 2. Processes And Jobs |
| 232 | |
| 233 | Takeaway: this is one of the strongest clusters in the whole document. |
| 234 | |
| 235 | | Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict | |
| 236 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| 237 | | `fgof-process` | High-level `run`, `spawn`, capture, timeouts, cwd, env overrides, exit status | `stdlib` and wrappers exist, but there is still no obvious ergonomic default for apps and tests | `stdlib_system`, `M_process`, `M_system`, `fortran-unix` | ergonomic facade | POSIX first with C shim | [fortsh system interface](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortsh/src/system/interface.f90:1) and executor stack | `5/5/4/5/3` | Strong candidate | |
| 238 | | `fgof-cmd` | Safe argv construction and shell quoting helpers to stop command-string bugs | Command construction is still mostly hand-built strings | ad hoc code; general wrappers do not center this | new implementation | pure Fortran | `fortress` git command building, `fortsh` parser and execution model | `4/4/5/4/1` | Strong candidate | |
| 239 | | `fgof-env` | Environment variables, executable lookup, PATH resolution, cwd stack helpers | Existing wrappers expose pieces, but not a small opinionated convenience layer | `M_system`, `stdlib_system`, `fortran-unix` | ergonomic facade | pure Fortran plus OS calls | `fortress`, `facsimile`, `fortsh` startup logic | `3/3/5/4/1` | Worth exploring | |
| 240 | | `fgof-jobs` | Background jobs, process groups, wait models, pipeline status tracking | Shells need this; most general packages do not even try to expose it well | local shell code only; low-level POSIX bindings | extracted module | POSIX only at first | `fortsh` jobs and signal handling | `4/5/3/5/4` | Strong candidate | |
| 241 | | `fgof-proc-test` | Test fixtures for child processes, retry loops, cleanup, capture, fail-fast helpers | General test frameworks exist, but process-fixture tooling is thin | `test-drive`, `vegetables`, `pFUnit` do not specialize here | new implementation | `fgof-process` backend | `fortsh` integration tests and runner logic | `4/5/4/5/3` | Strong candidate | |
| 242 | |
| 243 | ### 3. PTY And Terminal Control |
| 244 | |
| 245 | Takeaway: this is unusually underpackaged given how important it is for interactive tools. |
| 246 | |
| 247 | | Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict | |
| 248 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| 249 | | `fgof-pty` | PTY sessions, child attach, reads and writes, resize, close, signal delivery | This capability is critical for shells and terminals but still mostly app-local | no obvious general-purpose default in official index | extracted module or ergonomic facade | POSIX C shim | [fifftty PTY manager](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fifftty/src/pty_manager.f90:1), `fortsh` interactive harnesses | `5/5/4/5/4` | Strong candidate | |
| 250 | | `fgof-termios` | Raw and canonical mode guards, echo restore, cursor restore safety | Terminal mode handling is low-level and error-prone | `fortran-unix` and raw POSIX only | ergonomic facade | POSIX C shim | [fortsh system interface](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortsh/src/system/interface.f90:1), `fit` keyboard handling | `4/4/5/5/2` | Strong candidate | |
| 251 | | `fgof-ttysize` | Terminal size querying, resize propagation, helper APIs for UI layouts | This logic appears all over interactive tools, but rarely as a standalone package | low-level ioctl wrappers only | small utility package | POSIX first | `fortsh`, `fifftty`, `fit` terminal sizing code | `3/4/5/4/2` | Worth exploring | |
| 252 | | `fgof-expect` | Expect-style PTY testing library for scripted interactions | Great fit for shells, TUIs, terminal apps, and CI; ecosystem surface is tiny | no obvious general-purpose default in official index | new implementation | `fgof-pty` backend | `fortsh` interactive YAML specs, `fifftty` tests | `4/5/4/5/3` | Strong candidate | |
| 253 | |
| 254 | ### 4. Terminal UX And TUI Primitives |
| 255 | |
| 256 | Takeaway: the ecosystem has low-level pieces, but a lot of day-to-day TUI ergonomics are still hand-built. |
| 257 | |
| 258 | | Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict | |
| 259 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| 260 | | `fgof-ansi` | Styles, cursor movement, alternate screen, clear regions, restore helpers | ANSI codes exist in `stdlib`, but many apps still want a friendlier composition layer | `stdlib_ansi`, app-local snippets | ergonomic facade | pure Fortran | `fortsh`, `facsimile`, `fortress`, `fit` | `3/3/5/5/1` | Worth exploring | |
| 261 | | `fgof-keys` | Normalize escape sequences and terminal key decoding across terminals | Everyone reinvents this differently, and it is brittle | ncurses or custom parsing; no obvious standalone default | new implementation | pure Fortran plus termios helpers | `fit`, `fortsh`, `facsimile` input work | `4/5/4/4/3` | Strong candidate | |
| 262 | | `fgof-lineedit` | History, kill/yank, completion hooks, prompt editing for CLI tools | Readline integration exists, but a clean Fortran-native line editor surface is still rare | local readline wrappers, `M_history` | extracted module or new implementation | termios plus terminal I/O | `fortsh` I/O stack, editor input ideas | `5/5/4/5/4` | Strong candidate | |
| 263 | | `fgof-clipboard` | Cross-platform clipboard get and set for text tools | Small but useful package with clear practical demand | no obvious default package in official index | extracted module | shell tools by platform | `facsimile` clipboard module | `4/5/4/4/3` | Strong candidate | |
| 264 | | `fgof-prompt` | Menus, confirm prompts, pickers, spinners, progress, forms | Useful to many CLI and TUI tools, but usually bolted onto apps | CLI parsers cover args, not interactive prompts | new implementation | pure Fortran | `fortress` UI, `sniffert` UI, `fit` TUI layout | `3/4/4/4/2` | Worth exploring | |
| 265 | | `fgof-screen` | Virtual screen buffer and diff renderer for TUIs | ncurses bindings exist, but a higher-level compositional model does not clearly dominate | `fortran-ncurses`, `M_ncurses` | ergonomic facade | can sit on ANSI or ncurses | `sniffert` terminal UI, `fifftty` terminal grid, `facsimile` rendering code | `4/4/3/4/4` | Worth exploring | |
| 266 | |
| 267 | ### 5. Filesystem Watching |
| 268 | |
| 269 | Takeaway: this is one of the clearest "library gap" areas in the whole document. |
| 270 | |
| 271 | | Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict | |
| 272 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| 273 | | `fgof-watch` | High-level watch API with native backends and polling fallback | There are tools and external libraries, but no obvious reusable Fortran default for app authors | `fpm-watch` is a tool, not a library; no obvious package-index default | ergonomic facade | native backends via C or libfswatch | future editor and dev-loop use across local tools | `5/5/3/3/4` | Strong candidate | |
| 274 | | `fgof-watch-poll` | Pure polling backend for portability, CI, and fallback behavior | Native watchers are complex; polling still has value as a reliable baseline | no obvious package-index default | new implementation | pure Fortran | useful for any future watch-based package | `3/4/5/2/2` | Worth exploring | |
| 275 | | `fgof-watch-rules` | Ignore rules, debounce, coalescing, event filtering | Real watchers need event shaping; many libraries stop at raw notifications | app authors usually reimplement this themselves | library sidecar | pure Fortran | combines well with `fgof-ignore` and `fgof-watch` | `3/4/4/2/2` | Worth exploring | |
| 276 | | `fgof-devloop` | Auto restart and rebuild supervision library for tools and tests | There is visible demand for watch-driven dev loops, but the reusable library layer is missing | `fpm-watch` as a tool | new implementation | `fgof-watch` plus `fgof-process` | useful for local tool development and CI smoke loops | `4/4/5/3/2` | Strong candidate | |
| 277 | |
| 278 | ### 6. Networking And Services |
| 279 | |
| 280 | Takeaway: this space is not empty, but it is still mostly thin bindings plus isolated projects. |
| 281 | |
| 282 | | Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict | |
| 283 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| 284 | | `fgof-http` | Friendlier HTTP client with requests, headers, forms, timeouts, and composable responses | HTTP exists, but ecosystem default status and ergonomics still look unsettled | `http-client`, `fortran-curl` | ergonomic facade | libcurl backend likely | useful to future package tooling and local service clients | `4/3/4/2/3` | Worth exploring | |
| 285 | | `fgof-url` | URL parsing, joining, encoding, decoding, query building | Useful even outside HTTP, and not clearly solved by a common package | no obvious default package surfaced in official index | new implementation | pure Fortran | can support HTTP and service tooling later | `3/4/5/1/1` | Worth exploring | |
| 286 | | `fgof-tcp` | Simple TCP client or server API for tools and local services | Package-index coverage looks more demo-like and binding-like than ergonomic | `tcp-client-server`, `fortran-unix` | ergonomic facade | POSIX sockets or C shim | could support future dev tools and editor integrations | `4/4/4/2/3` | Worth exploring | |
| 287 | | `fgof-tls` | Secure socket helpers, certificate loading, client defaults | Important, but hard and expensive, especially cross-platform | raw OpenSSL world only | thin binding first, if at all | OpenSSL or similar | little local leverage yet | `4/5/2/1/5` | Low priority | |
| 288 | | `fgof-websocket` | WebSocket client for live tools, streaming APIs, and dashboards | No obvious Fortran default surfaced in official package landscape | no obvious package-index default | new implementation | handshake, framing, and likely TLS | little local leverage yet | `4/5/2/1/5` | Low priority | |
| 289 | | `fgof-service` | Daemon or service lifecycle helpers, pidfile, signal glue, status checks | A niche but useful layer for people writing long-running local services | process libraries expose pieces, not a full shape | new implementation | `fgof-process` and signals | `fortsh` signal and job work | `3/4/4/3/3` | Worth exploring | |
| 290 | |
| 291 | ### 7. Storage And Local Data |
| 292 | |
| 293 | Takeaway: bindings exist here; ergonomic local-tool persistence packages mostly do not. |
| 294 | |
| 295 | | Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict | |
| 296 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| 297 | | `fgof-sqlite` | Friendly query and transaction layer on top of SQLite bindings | SQLite bindings exist, but the "pleasant to use in an app" layer is still open | `fortran-sqlite3`, `sqliteff` | ergonomic facade | SQLite C library | future workspace, cache, and metadata tooling | `4/4/4/2/3` | Strong candidate | |
| 298 | | `fgof-kv` | Tiny embedded key-value store API backed by SQLite or LMDB | Tool authors often want simple persistence, not a full SQL surface | `fortran-lmdb` is low-level | ergonomic facade | SQLite or LMDB backend | can power caches and tool state | `4/4/4/2/3` | Worth exploring | |
| 299 | | `fgof-cache` | Disk cache with content hashing, TTLs, invalidation, and cleanup | Extremely useful for CLI tools and build-ish workflows; mostly hand-rolled today | no obvious default package surfaced in official index | new implementation | pure plus filesystem helpers | `fuss` cache ideas and tooling workflows | `4/5/4/4/2` | Strong candidate | |
| 300 | | `fgof-state` | Persistent app, session, and workspace state with atomic saves and versioning | Editors, shells, and file tools need this repeatedly, and config parsers alone do not solve it | config packages exist, but not a state-management default | new implementation | pure plus filesystem helpers | [facsimile workspace vision](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/facsimile/docs/WORKSPACE_VISION.md:1) | `4/5/5/4/2` | Strong candidate | |
| 301 | |
| 302 | ### 8. Archives And Compression |
| 303 | |
| 304 | Takeaway: low-level coverage exists, but the package-author-friendly layer still looks open. |
| 305 | |
| 306 | | Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict | |
| 307 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| 308 | | `fgof-archive` | Single high-level API for tar and zip style archive creation and extraction | Compression bindings exist, but not an obvious archive package people would instinctively use | `fortran-zlib`, `fortran-zstd` are lower-level | ergonomic facade | `libarchive` or bespoke backends | useful across packaging and artifact tools | `4/5/3/1/4` | Strong candidate | |
| 309 | | `fgof-compress` | Simple gzip and zstd compress/decompress functions and streams | The raw bindings are not the same thing as a pleasant package surface | `fortran-zlib`, `fortran-zstd` | ergonomic facade | zlib or zstd backend | would support archives and caching | `4/4/4/1/3` | Worth exploring | |
| 310 | | `fgof-checksum` | File and buffer digests for SHA-256 or similar | Great utility layer for caches, archives, snapshots, and integrity checks | no obvious package-index default surfaced | new implementation | C crypto backend likely | cross-cutting utility for many later packages | `3/4/4/1/3` | Worth exploring | |
| 311 | | `fgof-pack` | Bundle manifests plus files into reproducible tool artifacts | Useful for release tooling and app bundles, but more specialized than base archive work | no obvious package-index default surfaced | new implementation | archive plus checksum backends | future release and packaging workflows | `3/3/3/1/3` | Worth exploring | |
| 312 | |
| 313 | ### 9. Developer Tooling |
| 314 | |
| 315 | Takeaway: this is fertile ground because tooling libraries often have high leverage and lower platform pain. |
| 316 | |
| 317 | | Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict | |
| 318 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| 319 | | `fgof-snapshot` | Snapshot or golden-file testing helpers for CLIs and diagnostics | Existing test frameworks do not specialize in this workflow | `test-drive`, `vegetables`, `pFUnit` | new implementation | pure Fortran | snapshot-like local tests in `armfortas` and CLI tools | `4/5/5/3/2` | Strong candidate | |
| 320 | | `fgof-fixture` | Temp project, temp worktree, and fixture builders for tests | Process-heavy tools need better test fixtures than raw shell setup | general test frameworks exist, but not this niche | new implementation | filesystem plus process helpers | `fortsh`, `fit`, and other test suites | `4/4/5/3/2` | Strong candidate | |
| 321 | | `fgof-parser` | General parser combinators and token-stream library | Parsers exist, but reusable general parser infrastructure is still thin | `parff`, equation parsers | new implementation or extracted core | pure Fortran | `fortsh` parser stack is strong evidence | `4/4/4/5/3` | Strong candidate | |
| 322 | | `fgof-modulegraph` | Build module-dependency graph for Fortran source trees | Useful for tooling and editors; current options are more tool-like than library-like | `FortranCallGraph`, `fortls`, external parsers | new implementation | pure Fortran | future workspace tooling in `facsimile` | `3/4/4/2/2` | Worth exploring | |
| 323 | | `fgof-trace` | Structured timing and tracing spans for CLIs, tests, and services | Logging exists, but trace-style instrumentation is still sparse | `stdlib_logger`, `coretran`, `pFlogger` | new implementation | pure Fortran | `fortsh` performance helpers | `3/3/5/3/1` | Worth exploring | |
| 324 | |
| 325 | ### 10. Interop And Bindings |
| 326 | |
| 327 | Takeaway: low-level wrappers are not glamorous, but a few carefully chosen ones could unlock many higher-level packages. |
| 328 | |
| 329 | | Project | Pitch And Problem Solved | Why The Gap Remains | Existing Options | Recommended Shape | Dependency Story | Local Leverage | Scores | Verdict | |
| 330 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| 331 | | `fgof-posix-core` | Curated POSIX core for files, dirs, fd I/O, processes, signals, and terminals | Low-level wrappers exist, but coverage and naming are inconsistent and often not shaped for reuse | `fortran-unix`, `M_system`, `os` | thin binding with sane naming | POSIX C APIs | [fortsh system interface](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortsh/src/system/interface.f90:1), [sniffert file system](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/sniffert/src/file_system.f90:1), [fifftty PTY manager](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fifftty/src/pty_manager.f90:1) | `5/4/4/5/3` | Strong candidate | |
| 332 | | `fgof-cstr` | Safe C-string, argv, and buffer conversion helpers for `iso_c_binding` work | Every wrapper package ends up reinventing this small but annoying layer | raw `iso_c_binding` plus scattered discourse advice | thin utility package | pure Fortran | nearly every local C-interop-heavy repo | `4/4/5/5/1` | Strong candidate | |
| 333 | | `fgof-libfswatch` | Thin binding to `libfswatch` for future watcher packages | Useful enabler, but not the highest-value user-facing package by itself | no obvious Fortran binding surfaced in official package index | thin binding | external `libfswatch` | prerequisite for some watch strategies | `3/4/3/1/4` | Worth exploring | |
| 334 | | `fgof-openssl-bind` | Thin OpenSSL binding foundation for TLS and hashing | Potentially useful, but expensive and fiddly to support well | no obvious general-purpose Fortran binding surfaced in official package index | thin binding | OpenSSL | little local leverage today | `4/5/2/1/5` | Low priority | |
| 335 | |
| 336 | ## Organization Recommendations |
| 337 | |
| 338 | ### Recommended Repo Shape |
| 339 | |
| 340 | Use `lib-modules` as an umbrella repo: |
| 341 | |
| 342 | ```text |
| 343 | lib-modules/ |
| 344 | LANDSCAPE.md |
| 345 | packages/ |
| 346 | fgof-fs/ # git submodule |
| 347 | fgof-process/ # git submodule |
| 348 | fgof-pty/ # git submodule |
| 349 | ... |
| 350 | ``` |
| 351 | |
| 352 | This is not a classic monorepo. It is better described as: |
| 353 | |
| 354 | - a catalog repo |
| 355 | - shared docs and roadmap |
| 356 | - independent package repos collected via Git submodules |
| 357 | |
| 358 | That choice fits your stated organizational preference and keeps package adoption simple for outsiders. |
| 359 | |
| 360 | ### Independent Package Defaults |
| 361 | |
| 362 | Every serious package should aim to be: |
| 363 | |
| 364 | - its own repository |
| 365 | - its own `fpm` package |
| 366 | - independently versioned |
| 367 | - independently releasable |
| 368 | - independently listable in the Fortran package index |
| 369 | |
| 370 | ### Naming Recommendations |
| 371 | |
| 372 | Use a consistent prefix to avoid module collisions. |
| 373 | |
| 374 | Provisional recommendation: |
| 375 | |
| 376 | - repo names: `fgof-fs`, `fgof-process`, `fgof-pty` |
| 377 | - top-level module prefix: `fgof_` |
| 378 | |
| 379 | Example: |
| 380 | |
| 381 | - repo: `fgof-process` |
| 382 | - modules: `fgof_process`, `fgof_process_types`, `fgof_process_test` |
| 383 | |
| 384 | ### Release And Dependency Recommendations |
| 385 | |
| 386 | - keep packages standalone by default |
| 387 | - avoid cross-package dependencies until a real need appears |
| 388 | - if cross-package dependencies become useful, prefer a shallow graph: |
| 389 | - foundational packages first |
| 390 | - ergonomic facades on top |
| 391 | - give each package: |
| 392 | - `README.md` |
| 393 | - examples |
| 394 | - tests |
| 395 | - CI |
| 396 | - explicit compiler support notes |
| 397 | |
| 398 | ### Practical Sequencing |
| 399 | |
| 400 | With the first wave already shipped, the most sensible next-wave sequence now looks like: |
| 401 | |
| 402 | 1. `fgof-watch` |
| 403 | 2. `fgof-termios` |
| 404 | 3. `fgof-keys` |
| 405 | 4. `fgof-expect` or `fgof-proc-test` |
| 406 | 5. `fgof-temp` or `fgof-clipboard` |
| 407 | |
| 408 | That sequence adds the most obvious missing value on top of what is already shipped without jumping too early into crowded territory. |
| 409 | |
| 410 | ## Local Extraction Evidence |
| 411 | |
| 412 | These local files are especially strong signals that the package surface is not hypothetical: |
| 413 | |
| 414 | - [fortsh system interface](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortsh/src/system/interface.f90:1) |
| 415 | - [fifftty PTY manager](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fifftty/src/pty_manager.f90:1) |
| 416 | - [fortress filesystem ops](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortress/src/filesystem/fs_ops.f90:1) |
| 417 | - [sniffert file system](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/sniffert/src/file_system.f90:1) |
| 418 | - [facsimile workspace vision](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/facsimile/docs/WORKSPACE_VISION.md:1) |
| 419 | - [facsimile fortress integration plan](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/facsimile/docs/fortress_integration.md:1) |
| 420 | |
| 421 | Inference from those files: |
| 422 | |
| 423 | - filesystem and path handling recur across multiple apps |
| 424 | - terminal state and PTY handling are already deep enough locally to extract |
| 425 | - workspace state, config locations, prompts, and app-state persistence are not theoretical needs |
| 426 | - integration tests for interactive tools could directly benefit from reusable PTY and process-test packages |
| 427 | |
| 428 | ## Sources Appendix |
| 429 | |
| 430 | ### Official Ecosystem Sources |
| 431 | |
| 432 | - [Fortran package index](https://fortran-lang.org/packages/) |
| 433 | - [General libraries](https://fortran-lang.org/packages/libraries/) |
| 434 | - [I/O packages](https://fortran-lang.org/packages/io/) |
| 435 | - [Interface packages](https://fortran-lang.org/packages/interfaces/) |
| 436 | - [Programming utilities](https://fortran-lang.org/packages/programming/) |
| 437 | - [String libraries](https://fortran-lang.org/packages/strings/) |
| 438 | - [Data-type libraries](https://fortran-lang.org/packages/data-types/) |
| 439 | |
| 440 | ### `stdlib` Sources |
| 441 | |
| 442 | - [Fortran stdlib landing page](https://stdlib.fortran-lang.org/) |
| 443 | - [Fortran stdlib specs index](https://stdlib.fortran-lang.org/page/specs/index.html) |
| 444 | - [Fortran stdlib system spec](https://stdlib.fortran-lang.org/page/specs/stdlib_system.html) |
| 445 | - [Fortran stdlib logger spec](https://stdlib.fortran-lang.org/page/specs/stdlib_logger.html) |
| 446 | |
| 447 | ### Community Discussions And Announcements |
| 448 | |
| 449 | - [Stdlib system interaction API: call for feedback](https://fortran-lang.discourse.group/t/stdlib-system-interaction-api-call-for-feedback/9037) |
| 450 | - [GSoC '25: stdlib filesystem](https://fortran-lang.discourse.group/t/gsoc-25-stdlib-filesystem/9798) |
| 451 | - [GSOC Intro - stdlib File system library, OS processes](https://fortran-lang.discourse.group/t/gsoc-intro-stdlib-file-system-library-os-processes/9295) |
| 452 | - [GSoC 2026 Introduction: interested in stdlib file system library](https://fortran-lang.discourse.group/t/gsoc-2026-introduction-jatin-kumar-interested-in-stdlib-file-system-library/10712) |
| 453 | - [New Release of http-client](https://fortran-lang.discourse.group/t/new-release-of-http-client-enhancing-http-requests-in-fortran/6407) |
| 454 | - [Troubleshooting dependency issues with http-client](https://fortran-lang.discourse.group/t/troubleshooting-dependency-issues-with-http-client-in-fpm-projects-resolving-stdlib-optval-error/6196) |
| 455 | - [New fpm Plugin: fpm-watch](https://fortran-lang.discourse.group/t/new-fpm-plugin-fpm-watch/10753) |
| 456 | - [Will the Fortran Community participate at GSoC 2024?](https://fortran-lang.discourse.group/t/will-the-fortran-community-participate-at-gsoc-2024/7266) |
| 457 | |
| 458 | ### Local Evidence |
| 459 | |
| 460 | - [fortsh README](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortsh/README.md:1) |
| 461 | - [facsimile README](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/facsimile/README.md:1) |
| 462 | - [fortress README](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fortress/README.md:1) |
| 463 | - [fifftty README](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fifftty/README.md:1) |
| 464 | - [fuss README](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fuss/README.md:1) |
| 465 | - [fit README](/Users/mfwolffe/GithubOrgs/FortranGoingOnForty/fit/README.md:1) |
| 466 | |
| 467 | ## Final Read |
| 468 | |
| 469 | If the goal is to close one of the most visible non-numerical gaps in the Fortran ecosystem, the best lane is not "write a random library." It is: |
| 470 | |
| 471 | - extract and harden the systems layers your apps already need |
| 472 | - package them so they stand alone cleanly |
| 473 | - prefer ergonomic facades where the ecosystem already has low-level coverage |
| 474 | - avoid crowded categories unless you have a very sharp differentiator |
| 475 | |
| 476 | The practical center of gravity remains: |
| 477 | |
| 478 | - filesystem |
| 479 | - process control |
| 480 | - PTY and terminal control |
| 481 | - watch or dev-loop tooling |
| 482 | - persistence and local app state |
| 483 | |
| 484 | That is the area where Fortran still looks most ready for a coherent family of packages rather than one more isolated project. |