Everything as Code: How We Manage Our Company in One Monorepo
https://www.kasava.dev/blog/everything-as-code-monorepo
#HackerNews #EverythingAsCode #Monorepo #CompanyManagement #DevOps #SoftwareDevelopment
Everything as Code: How We Manage Our Company in One Monorepo
https://www.kasava.dev/blog/everything-as-code-monorepo
#HackerNews #EverythingAsCode #Monorepo #CompanyManagement #DevOps #SoftwareDevelopment
Cargo-rail: graph-aware monorepo tooling for Rust; 11 deps
We're thrilled to announce Fedify 1.8.1, a mega release made possible through the incredible efforts of contributors from South Korea's #OSSCA (Open Source Contribution Academy). This release marks a significant milestone in #Fedify's development, bringing major architectural changes, new packages, and numerous enhancements across the board.
Note: Version 1.8.0 was skipped due to a versioning error.
Fedify has been restructured as a #monorepo, consolidating all packages into a single repository with unified versioning. This change streamlines development and ensures all packages are released together with consistent version numbers.
All existing Fedify packages now live under one roof:
This release introduces four new packages to the Fedify ecosystem:
Federation and Context classesA powerful new feature that allows you to create custom collections beyond the standard ActivityPub collections. This enables implementation of domain-specific collections while maintaining federation compatibility.
Contributors: ChanHaeng Lee [#310, #332]
Federatable interface: setCollectionDispatcher() and setOrderedCollectionDispatcher()getCollectionUri() method to the Context interfaceKey–value stores now optionally support CAS operations for atomic updates, enabling optimistic locking and preventing lost updates in concurrent environments.
KvStore.cas() methodMemoryKvStore and DenoKvStoreNew utility functions make working with #fediverse handles more convenient.
Contributors: ChanHaeng Lee [#278]
parseFediverseHandle() — Parse handles into componentsisFediverseHandle() — Validate handle formattoAcctUrl() — Convert handles to URLsFediverseHandle interface for type safetyContributors: Lee ByeongJun [#248, #281], Hyunchae Kim [#51, #315]
LookupWebFingerOptions.maxRedirection option for controlling redirect behaviorAbortSignal for request cancellationDocumentLoaderOptions interfacesignal options to LookupObjectOptions, LookupWebFingerOptions, and DoubleKnockOptionsThe CLI has received significant improvements thanks to our OSSCA contributors:
fedify webfinger CommandContributors: ChanHaeng Lee [#260, #278], KeunHyeong Park [#311, #328]
Look up WebFinger information for any fediverse resource:
@user@server) and URLs--user-agent option for custom User-Agent headers--allow-private-address for local testing--max-redirection to control redirect followingfedify nodeinfo CommandContributors: Hyeonseo Kim [#267, #331, #168, #282, #304]
Replaces the deprecated fedify node command with improved terminal rendering.
fedify lookup CommandContributors: Jiwon Kwon [#169, #348, #261, #321]
-o/--output option to save results to filesfedify inbox CommandContributors: Hasang Cho [#262, #285], Jang Hanarae [#191, #342]
--actor-name and --actor-summary options for customizing temporary actorsfedify init --dry-runContributors: Lee ByeongJun [#263, #298]
Preview project initialization without creating files.
Contributors: Cho Hasang [#257, #341]
Correctly handles color output based on TTY detection and NO_COLOR environment variable.
Contributors: Hyeonseo Kim [#286, #339]
New Elysia integration brings Fedify to Bun-powered applications with a simple plugin interface:
import { Elysia } from "elysia";import { fedify } from "@fedify/elysia";const app = new Elysia() .use(fedify(federation, { /* options */ })) .listen(3000);Contributors: Jaeyeol Lee [#269, #309]
Enterprise-ready NestJS integration with dependency injection support:
import { FedifyModule } from "@fedify/nestjs";@Module({ imports: [ FedifyModule.forRoot({ kv: new MemoryKvStore(), queue: new InProcessMessageQueue(), origin: "https://example.com", }), ],})export class AppModule {}Contributors: An Subin [#274, #318]
SqliteKvStore implementation compatible across all major JavaScript runtimes:
import { SqliteKvStore } from "@fedify/sqlite";const kv = new SqliteKvStore("./fedify.db");Contributors: Lee ByeongJun [#197, #283]
Comprehensive testing utilities with mocking support for Fedify applications:
import { MockFederation, MockContext } from "@fedify/testing";const mockFederation = new MockFederation();const mockContext = new MockContext();// Track sent activities with full metadata// Support custom path registration// Multiple activity type listenersThis release represents an extraordinary community effort, particularly from the participants of South Korea's OSSCA (Open Source Contribution Academy)(Note: page in Korean). We extend our heartfelt thanks to all contributors:
Your contributions have made Fedify stronger and more versatile than ever. The OSSCA program's support has been instrumental in achieving this milestone release.
If you're using separate Fedify packages, update all packages to version 1.8.1:
{ "dependencies": { "@fedify/fedify": "^1.8.1", "@fedify/cli": "^1.8.1", "@fedify/express": "^1.8.1" }}All packages now share the same version number, simplifying dependency management.
There are no breaking changes in this release. All existing code should continue to work without modifications.
With the monorepo structure in place and new integrations available, we're excited to continue improving Fedify's developer experience and expanding its capabilities. Stay tuned for more updates, and thank you for being part of the Fedify community!
For detailed technical information about all changes, please refer to the full changelog.
Fedify is an open-source project that helps developers build federated server applications powered by ActivityPub. Join us on GitHub or Discord to contribute or get help!
We're thrilled to announce Fedify 1.8.1, a mega release made possible through the incredible efforts of contributors from South Korea's #OSSCA (Open Source Contribution Academy). This release marks a significant milestone in #Fedify's development, bringing major architectural changes, new packages, and numerous enhancements across the board.
Note: Version 1.8.0 was skipped due to a versioning error.
Fedify has been restructured as a #monorepo, consolidating all packages into a single repository with unified versioning. This change streamlines development and ensures all packages are released together with consistent version numbers.
All existing Fedify packages now live under one roof:
This release introduces four new packages to the Fedify ecosystem:
Federation and Context classesA powerful new feature that allows you to create custom collections beyond the standard ActivityPub collections. This enables implementation of domain-specific collections while maintaining federation compatibility.
Contributors: ChanHaeng Lee [#310, #332]
Federatable interface: setCollectionDispatcher() and setOrderedCollectionDispatcher()getCollectionUri() method to the Context interfaceKey–value stores now optionally support CAS operations for atomic updates, enabling optimistic locking and preventing lost updates in concurrent environments.
KvStore.cas() methodMemoryKvStore and DenoKvStoreNew utility functions make working with #fediverse handles more convenient.
Contributors: ChanHaeng Lee [#278]
parseFediverseHandle() — Parse handles into componentsisFediverseHandle() — Validate handle formattoAcctUrl() — Convert handles to URLsFediverseHandle interface for type safetyContributors: Lee ByeongJun [#248, #281], Hyunchae Kim [#51, #315]
LookupWebFingerOptions.maxRedirection option for controlling redirect behaviorAbortSignal for request cancellationDocumentLoaderOptions interfacesignal options to LookupObjectOptions, LookupWebFingerOptions, and DoubleKnockOptionsThe CLI has received significant improvements thanks to our OSSCA contributors:
fedify webfinger CommandContributors: ChanHaeng Lee [#260, #278], KeunHyeong Park [#311, #328]
Look up WebFinger information for any fediverse resource:
@user@server) and URLs--user-agent option for custom User-Agent headers--allow-private-address for local testing--max-redirection to control redirect followingfedify nodeinfo CommandContributors: Hyeonseo Kim [#267, #331, #168, #282, #304]
Replaces the deprecated fedify node command with improved terminal rendering.
fedify lookup CommandContributors: Jiwon Kwon [#169, #348, #261, #321]
-o/--output option to save results to filesfedify inbox CommandContributors: Hasang Cho [#262, #285], Jang Hanarae [#191, #342]
--actor-name and --actor-summary options for customizing temporary actorsfedify init --dry-runContributors: Lee ByeongJun [#263, #298]
Preview project initialization without creating files.
Contributors: Cho Hasang [#257, #341]
Correctly handles color output based on TTY detection and NO_COLOR environment variable.
Contributors: Hyeonseo Kim [#286, #339]
New Elysia integration brings Fedify to Bun-powered applications with a simple plugin interface:
import { Elysia } from "elysia";import { fedify } from "@fedify/elysia";const app = new Elysia() .use(fedify(federation, { /* options */ })) .listen(3000);Contributors: Jaeyeol Lee [#269, #309]
Enterprise-ready NestJS integration with dependency injection support:
import { FedifyModule } from "@fedify/nestjs";@Module({ imports: [ FedifyModule.forRoot({ kv: new MemoryKvStore(), queue: new InProcessMessageQueue(), origin: "https://example.com", }), ],})export class AppModule {}Contributors: An Subin [#274, #318]
SqliteKvStore implementation compatible across all major JavaScript runtimes:
import { SqliteKvStore } from "@fedify/sqlite";const kv = new SqliteKvStore("./fedify.db");Contributors: Lee ByeongJun [#197, #283]
Comprehensive testing utilities with mocking support for Fedify applications:
import { MockFederation, MockContext } from "@fedify/testing";const mockFederation = new MockFederation();const mockContext = new MockContext();// Track sent activities with full metadata// Support custom path registration// Multiple activity type listenersThis release represents an extraordinary community effort, particularly from the participants of South Korea's OSSCA (Open Source Contribution Academy)(Note: page in Korean). We extend our heartfelt thanks to all contributors:
Your contributions have made Fedify stronger and more versatile than ever. The OSSCA program's support has been instrumental in achieving this milestone release.
If you're using separate Fedify packages, update all packages to version 1.8.1:
{ "dependencies": { "@fedify/fedify": "^1.8.1", "@fedify/cli": "^1.8.1", "@fedify/express": "^1.8.1" }}All packages now share the same version number, simplifying dependency management.
There are no breaking changes in this release. All existing code should continue to work without modifications.
With the monorepo structure in place and new integrations available, we're excited to continue improving Fedify's developer experience and expanding its capabilities. Stay tuned for more updates, and thank you for being part of the Fedify community!
For detailed technical information about all changes, please refer to the full changelog.
Fedify is an open-source project that helps developers build federated server applications powered by ActivityPub. Join us on GitHub or Discord to contribute or get help!