Skip to content

Proposal: split flowscope-core into smaller reusable crates #67

Description

@eitsupi

Would you consider splitting flowscope-core into smaller crates with narrower responsibilities?

The current internal structure is already well organized, but from a downstream user's perspective the package boundary is still fairly monolithic.
For example, there are plausible use cases where someone may want to depend only on:

  • SQL lineage analysis
  • SQL formatting / rewriting
  • dialect semantics and identifier normalization
  • schema-aware analysis

without pulling in the rest of the core functionality such as linting, completion, templating, or other higher-level analysis features.

A structure along the lines of:

  • flowscope-semantics
  • flowscope-lineage
  • flowscope-schema
  • flowscope-core as a higher-level facade

could make FlowScope's existing semantic work much easier to reuse in other Rust tools.

My particular interest is using the lineage engine as a library dependency. The current implementation looks quite capable, but depending on all of flowscope-core just to consume lineage makes integration less attractive than it otherwise would be.

I think this could also broaden FlowScope's role from being primarily a product core to being a reusable SQL tooling ecosystem.

Would this kind of crate-level decomposition fit the project's direction?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions