fabric icon indicating copy to clipboard operation
fabric copied to clipboard

[Feature request]: Split the repo

Open meirm opened this issue 11 months ago • 6 comments

What do you need?

Proposal for Repository Reorganization: Fabric Project

Background

The Fabric project has evolved significantly since its inception, growing in both scope and complexity. Initially focused on providing a repository of curated prompts, it has expanded to include a command-line script for calling the LLM wrapper and a basic Electron app for those who prefer a GUI over CLI. As the project continues to grow, it's becoming increasingly important to organize our codebase in a way that promotes clarity, ease of use, and scalability.

Proposal

I propose to reorganize the current Fabric repository into three separate repositories, each dedicated to a specific aspect of the Fabric project:

  1. fabric_core: This repository will contain the core functionality of the Fabric project, including the LLM wrapper and the base code that is essential for the project's operation.

  2. fabric_patterns: Dedicated to the repository of curated prompts that form the heart of the Fabric project. This will allow for easier management, contribution, and usage of the prompts independently of the other components.

  3. fabric_community: This repository will house the community-driven developments, including the basic Electron app and potentially other community-contributed clients or tools in the future.

Branching Strategy for Each Repository

For each of the proposed repositories, we will adopt a simplified yet effective branching strategy to streamline development and releases:

  • main: The default branch that reflects the latest stable version of the project. It is used for production releases.

  • development: This branch is where active development takes place. Features, fixes, and improvements are merged into this branch before being tested and finalized for release to the main branch.

Rationale

This reorganization supports the project's main value - the curated prompts repository - by giving it a dedicated space that can be independently managed and scaled. Furthermore, it aligns with the best practices of software development, where separation of concerns allows for clearer focus, easier maintenance, and more straightforward contributions from the community.

By separating the CLI script and the Electron app into their own or respective repositories, we ensure that the usage of prompts remains independent of the client implementation. This not only makes the project more modular and flexible but also encourages innovation and experimentation within the community.

meirm avatar Mar 13 '24 12:03 meirm

Really really love this.

I think I'm going to leave this here, or we can put it in Discussions. For a long-term upgrade. @danigoland has been talking about something similar for a while.

danielmiessler avatar Mar 13 '24 20:03 danielmiessler

I can work on this immediately. Let me know how can I make it happen. One other repo would for the online documentation.

meirm avatar Mar 13 '24 22:03 meirm

I think we should definitely split the repo into sub repos, I made a "fabric-patterns" repo locally with some scripts to automate the README(has a table with all of the patterns) update and a checksum file creation.

I think it makes sense to have all of the repos under a Github Org.

danigoland avatar Mar 15 '24 23:03 danigoland

I also created a static repo with the template directory to be able to pull from it prompts. I already start using it in a sample app I wrote for mobile devices.

meirm avatar Mar 17 '24 18:03 meirm

If you're going to split into several repos, you might consider moving them to a new fabric GitHub org, so you'd end up with github.com/fabric/core, github.com/fabric/docs, github.com/fabric/patterns, etc.

erichs avatar Apr 04 '24 19:04 erichs