Skip to content

Bindings split plan, repo structural changes notice and call for contributors #2237

@wtdcode

Description

@wtdcode

Hello everyone!

As you might already notice, I'm more and more running out of time maintaining the huge Unicorn repo, since I have to be familiar with every details of the Unicorn project including different bindings and their distributions. This consumes huge amount of time on the design, testing, CI and distribution and hinders potential contributors. Now I think it is good chance to split the bindings out of our monorepo so that I can focus on the unicorn core semantics and thus I'm calling for contributors.

Generally, the process of the bindings split is that:

  • I will create separate repos under unicorn-engine for different bindings.
  • If you are keen for contribution, you could leave a message here or contact me privately if you are shy. My contact is quite easy to find.
  • At the very first beginning, I will help setup most things, explain our convention.
  • You will be granted a basic role that can involve in reviewing PR. In this period, all PR will need a member's consent to go.
  • Once we think you are mature enough, we will give you permission to merge PR without our consent.

Why does this benefit the community?

  • Bindings version could be standalone and no longer bound to our main repo. This allows bindings faster release and iteration.
  • The bar for contributors could be lower so that more people can participate.
  • Contributions will be much easier because newcomers no longer need to deal with the whole big project.
  • This makes our CI workflow easier and avoids bindings failure blocking our main release.

What's the potential side effects?

  • Some applications might rely on assumption that the bindings version equal to the library version. This will break this assumption.
  • Some downstream packaging will have to point to our new repos and thus need manual upgrading their scripts.
  • Other thing I might miss.

Priority list and help wanted

  • Java: We need to publish to maven.
  • Golang: Need polish and better building process.
  • Rust: need to use unicorn crate.
  • other minor bindings like zig ruby etc.

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