Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: Cultivate an Effection ecosystem with a contrib mono repository #889

Open
taras opened this issue Jan 24, 2024 · 0 comments
Open

RFC: Cultivate an Effection ecosystem with a contrib mono repository #889

taras opened this issue Jan 24, 2024 · 0 comments
Labels

Comments

@taras
Copy link
Member

taras commented Jan 24, 2024

Motivation

One of the significant benefits of Effection is the ability to compose operations. We can increase the value provided by this benefit by increasing the number of special-purpose operations that can be reused. Ideally, no one should have to write an operation already written by someone else. Currently, the easiest way to reuse operations is to copy and paste the code.

This has many downsides,

  1. The existing operations are not very discoverable
  2. Once copied, they're not easily versioned
  3. Code snippets are usually not documented
  4. They don't have tests.

The result of all of this is that everyone using Effection spends more time writing operations than others have already written, which increases friction and slows down the adoption of Effection.

Approach

I propose creating a contrib monorepo where we will store all reusable operations. Anyone can create RPs against this repo. The PR will publish previews, and once merged, the merge operation will automatically get published.

Detailed Design

We need to flash this out, but I think we should make it :

  1. Deno first and publish to NPM
  2. One file per operation with a corresponding test
  3. Use typedocs to document the operation so that documentation will be available in the editor

Prior art

Several projects have done this successfully.

  1. Backstage - has all its community plugins in one monorepo. They also keep the main project source code in that repo, which we shouldn't do. Having everyone in one monorepo helped them grow the plugin ecosystem to over 200+ in a few years
  2. DefinitelyTyped - types for many packages with auto-publishing to @types namespace. I think TypeScript compiler suggests to check if @types/ package exists for a package with types.
@taras taras added the RFC label Jan 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant