|
| 1 | +# Maintenance and continuity |
| 2 | + |
| 3 | +This page tells you who maintains Solid Objects, how a release is made, and |
| 4 | +what you keep if maintenance stops. It also tells you how to help maintain the |
| 5 | +project. |
| 6 | + |
| 7 | +## Who maintains it |
| 8 | + |
| 9 | +Lucas Carlson ([@cardmagic](https://github.com/cardmagic)) is the lead |
| 10 | +maintainer of the Ruby gem `solid_objects` and of the npm package |
| 11 | +[`solid-objects`](https://github.com/cardmagic/solid-objects-js). The two |
| 12 | +packages use the same model and the same correctness contract. A change to the |
| 13 | +model goes into both packages, and the |
| 14 | +[parity ledger](https://github.com/cardmagic/solid-objects-js/blob/main/docs/parity.md) |
| 15 | +records each difference between them. |
| 16 | + |
| 17 | +The same maintainer sells [Solid Objects Pro](https://solidobjects.pro), a |
| 18 | +commercial package that batches operations at scale. Pro depends on this gem. |
| 19 | +This gem does not depend on Pro, and it needs no account, license key, or |
| 20 | +service from the maintainer. |
| 21 | + |
| 22 | +## How a change is checked |
| 23 | + |
| 24 | +CI runs on each push and each pull request: |
| 25 | + |
| 26 | +- The full test suite on SQLite, on each pair of Ruby 3.3, 3.4, or 4.0 and |
| 27 | + Rails 7.1, 7.2, 8.0, or 8.1. |
| 28 | +- The full test suite on PostgreSQL and on MySQL, with both MySQL clients. |
| 29 | +- Standard, RuboCop, RBS, Steep, and Brakeman. |
| 30 | + |
| 31 | +[Compatibility and maturity](virtual-actors.md#compatibility-and-maturity) |
| 32 | +lists the supported versions. The [correctness contract](correctness.md) lists |
| 33 | +the guarantees that the tests check. |
| 34 | + |
| 35 | +## How a release is made |
| 36 | + |
| 37 | +1. The maintainer pushes a version tag, for example `v1.0.3`. |
| 38 | +2. GitHub Actions runs all test jobs again on that tag. |
| 39 | +3. If all test jobs pass, GitHub Actions builds the gem and pushes it to |
| 40 | + RubyGems with trusted publishing. The repository keeps no RubyGems key. |
| 41 | +4. The same job makes a GitHub release and attaches the gem file. |
| 42 | + |
| 43 | +[Versioning](versioning.md) tells you what a release can change. |
| 44 | +`CHANGELOG.md` lists each release. |
| 45 | + |
| 46 | +## What you keep if maintenance stops |
| 47 | + |
| 48 | +- **Your data.** Actor state, mailboxes, reminders, and effects are rows in |
| 49 | + your application's database. [Database schema](database-schema.md) describes |
| 50 | + each table. No service of the maintainer holds your data. |
| 51 | +- **The code.** The [MIT License](../MIT-LICENSE) lets anyone use, change, |
| 52 | + fork, and publish the code. |
| 53 | +- **The checks.** The tests and the CI configuration are in this repository. A |
| 54 | + fork can check its changes with the same suite. |
| 55 | + |
| 56 | +## Help maintain Solid Objects |
| 57 | + |
| 58 | +The project wants more maintainers. Experience with Rails, with locks and |
| 59 | +transactions in PostgreSQL or MySQL, or with TypeScript and Node.js helps. |
| 60 | + |
| 61 | +1. Read [CONTRIBUTING.md](../CONTRIBUTING.md). |
| 62 | +2. Send a small pull request: a fix, a test, or a correction to a guide. |
| 63 | +3. After some of your pull requests are merged, open an |
| 64 | + [issue](https://github.com/cardmagic/solid-objects-ruby/issues) to ask to |
| 65 | + become a maintainer. |
0 commit comments