ZeusWPI / MOZAIC

MOZAIC is the Massive Online Zeus Artificial Intelligence Competition platform
GNU Lesser General Public License v3.0
13 stars 6 forks source link

Gitlab migration - repo reorganisation #277

Open abeforgit opened 5 years ago

abeforgit commented 5 years ago

In my opinion, the repo has grown a bit out of control. Introducing new people to the project requires intense coaching and dependencies between different parts are not obvious. Furthermore there are some parts (such as the website) which have nothing to do with the project but which still reside in this repo, making merges very complex.

With the ongoing migration of (eventually) all Zeus projects to Gitlab, this seems like the perfect opportunity to kill two birds with one stone.

Here's what needs to be done:

This issue is mostly a place to discuss this process and decide on a final form to work towards. Anything is up for discussion, even the whole concept of splitting it up itself (although I'm very much in favor of it).

Attached is a diagram of the way I see the different parts interacting, and how they could be grouped in different repos. All the repos could then be grouped into one "mozaic" Gitlab project (or organisation or whatever those things are called). The ultimate goal is the following situation: "I want to work on mozaic" "What do you want to do?" "That visualizer looks cool." "OK, get the planetwars-client-lib repo, and run yarn build, you're good to go."

Ideally every repo is self-sufficient and pulls in its dependencies on its own. We could look at npm packages and rust crates for this, but iirc both rust and yarn can handle github repos as dependencies.

This also allows for easier development on breaking builds, by just stabilizing the version most things depend on, and releasing the new breaking version alongside the stable one. mozaic

abeforgit commented 5 years ago

By the way this diagram is made with Draw.io which also has an electron desktop client. It saves as XML so it can be version controlled, but I'm not sure if it has a place inside the repo.

iasoon commented 5 years ago

Not trying to be a negative nancy here, but have you considered what the current branch overload would look like when spread over multiple repositories? Especially when developing a feature would require modifying multiple repositories. I think an organization like that would make sense when there are parts that are quite stabilized and are developed in parallel to the other parts (such as the mozaic core and planetwars should be), but this is not exactly the case right now. All in all, I think it will just become a larger headache.

I'd propose just biting the bullet and going through this massive list of branches, and merge or delete all unactive ones (which is everything except for cap'n proto, as far as I'm concerned).

abeforgit commented 5 years ago

This is what we are doing now anyway, and which we will do before any migration. That alone won't solve the issue of introducing people to the confusing structure of the project though. However, thinking about it again it's probably better to cleanup the file structure of this repo (after cleaning up the branches) and once and for all settling on a solid build script. We can then reevaluate the merits of splitting repos after all this, and it might no longer be necessary.

Here's some points which I would address:

wschella commented 5 years ago

Some projects definitely have to get split up. Currently (after merging) I think we want following separation:

There will shift when components mature, but let's not consider those.

The main reason for splitting it like this is the ability to pin versions of dependencies. E.g. planetwars client depends on specific mozaic client and mozaic core versions. Now, when implementation happens for those projects, they need to be branched, and can not be merged before planetwars client has caught up. With separate projects, it will IMO be easier to work with tags/submodules, and allow development on all 3 projects to happen concurrently, without them mixing branch structures.

I feel this will create a more intuitive linear overview of progress.

iasoon commented 5 years ago

I disagree. IMO it makes sense to split MOZAIC and planetwars once the core is a bit more mature, but right now I think it will just complicate matters for zero gain.