MovingBlocks / Terasology

Terasology - open source voxel world
http://terasology.org
Apache License 2.0
3.69k stars 1.34k forks source link

Roadmap for moving Iota modules to the engine repo #5129

Closed skaldarnar closed 1 year ago

skaldarnar commented 1 year ago

Motivation

Terasology has a lot of modules, and working on bigger refactorings or large restructurings is cumbersome when changes need to be split over many repositories. (many PRs, many reviews, merging in the correct order, ...).

The goal is to achieve better development efficiency and higher velocity.

Proposal

We move the modules of the Iota line-up into the engine repository.

Concerns

Task Breakdown

Additional Notes

PurityLake commented 1 year ago

I'm wondering if we could do a squash merge commit for each module with a link to a document pointing to issues and PRs for the respective repos?

I feel it would be very possible with a script to parse the git repo of each module to generate a markdown document.

edit

Actually one thing a pygame-ce did once the fork was created, was to "copy" all completed issues and PRs (in progress PRs could not be done), linking up the issues and PRs by changing the numbers they pointed to, to the new ones. This may be less desirable though as this is not a fork with no outstanding issues or PRs.

skaldarnar commented 1 year ago

We discussed this roadmap in more detail with @BenjaminAmos , @jdrueckert , and @skaldarnar on August 13 on Discord. In particular, we discussed the mono repo idea, motivation and impact in some more detail and came to the conclusion to not change anything about the current setup, including not to move modules into the engine repo and not to move a bunch (or all) of them into a new shared repo.

We asked ourselves what the main driver for moving modules to the engine repo was/is, and ended up with developer efficiency as main argument. We are in particular concerned about large scale changes and refactoring (like JOML), and the overhead the multi-repo setup brings with that.

I think this was in the context of possibly changing the module API, as in the past (or in the case of NUI, in my personal experience) it's been quite onerous making those changes individually. With good tooling for git though it might not be as necessary.

However, we believe that we can address large scale refactorings by relaxed review processes, better git tooling (git and gh), and potential custom tooling (groovw scripts).

If the changes were mainly automated though, with a low risk of breaking things (like renaming packages), I think we could just agree to push direct and hoping that it still compiles in such cases.

In that context, we also discussed the workspace repo idea again. I will create a separate roadmap ticket for that to share the details.

I'm closing this issue based on the results of the discussion as summarized above.

skaldarnar commented 1 year ago

@PurityLake welcome, and thanks for your feedback!

I'm wondering if we could do a squash merge commit for each module with a link to a document pointing to issues and PRs for the respective repos?

That's a nice idea, the document could be the archived repo (I guess that's as stable as anything else), or some document we commit in the module itself (similar to the good ol' CHANGELOG files).

[…] was to "copy" all completed issues and PRs (in progress PRs could not be done), linking up the issues and PRs by changing the numbers they pointed to, to the new ones.

Agreed, and it might have been applicable here as we are merging repos. All this does not sound too complicated, but still would have needed someone to put the time into it. With the decision to leave it as is for now (see https://github.com/MovingBlocks/Terasology/issues/5129#issuecomment-1685304479) I would rather not invest into that right now (but keep those good suggestions coming on all the other issuse we're facing 🤓 ).