Skip to content

Split repo into multiple projects? #17

@jothepro

Description

@jothepro

Inspired by @a4z's thoughts I'd like to propose splitting the single repo up into multiple sub-projects to separate the different components into self-contained codebases. This helps clean up the repo structure.

When analysing the current repo I could isolate the following self-contained components:

  • djinni parser/generator commandline tool
  • support lib & integration-tests (depends on djinni parser/generator)
  • android example (depends on djinni parser/generator)
  • ios example (depends on djinni parser/generator)

The main benefits would be:

  • ✅ The generator/parser repo would be a lot cleaner & just contain the sbt project + documentation on how to use the cli
  • ✅ The support-lib repo just contains cpp/obj gluecode sources & could easily be published to dependency-managers like conan, hunter.
  • ✅ The iOS/Android examples would be closer to reality as they have to include the djinni-cli binary as external utility like any other project has to. They could easily serve as templates for a new project (just fork and modify to your needs).
  • ✅ More examples (e.g. CMake-based iOS/Android projects) could easily be added in separate repos without having to open PRs in the 'main' repo everytime.

Downsides & things that need further discussion:

  • ❌ The generator/parser & the support-lib have separate lifecycles, that may (theoretically) lead to incompatibilities ("upsidaisy I am using the generator in version X but it has features that are not supported in support-lib version Y"). In reality I don't expect changes that are big enough to often cause this kind of trouble.
  • ❌ The documentation is split up: The generator usage-instructions are in one repo, the support-lib instructions in the other repo. -- A github-page that provides a general-purpose documentation for all djinni stuff may be a solution for this.
  • ❌ ❌ ❌ The parser/generator repo looses tests for QA: Currently there is only integration-testing going on, no unit-tests for the generator itself. This means that all integration tests depend on the support-lib and therefore will have to be executed in the support-lib repo. To have any kind of QA we would have to write entirely new unit- or integration-tests for the parser/generator.

I am looking forward to your thoughts on this wall of text ☺️

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions