Replies: 5 comments
-
I am pleased with how the core and the modules work currently, no need to change anything from my point of view. I just use git clone manually to put the modules into the modules directory. But I only use a few modules on my server: |
Beta Was this translation helpful? Give feedback.
-
I'm not suggesting to change anything about modules, just improving a bit the dashboard to let you clone/pull/push modules with single line commands, helping the multi-repo strategy to be more handy. The only thing I would discussi with you is about the deps, we should definetly create our framework layer IMHO, moving generic code to deps and creating an azerothcore-framework repo managed with a "mono-repo" strategy |
Beta Was this translation helpful? Give feedback.
-
Hmm, ok, sorry, but I think I'm the wrong person to discuss these topics. The only thing I'm interested in is providing bugfixes for AC as WotLK server and for this I just need a stable and reliable environment. I'm neither interested in structural changes nor generic MMO frameworks and won't partake in implementing those (don't have the time or knowledge anyway). |
Beta Was this translation helpful? Give feedback.
-
I'm afraid I'll have to play the same role as Stoa here, I love improvements however I'm only interested on Wotlk as a viable experience right now... Maybe in the future when I'm more experienced developer and more open minded! |
Beta Was this translation helpful? Give feedback.
-
I use git clone and might use a tool called "mdlr" to manage tons of git submodules |
Beta Was this translation helpful? Give feedback.
-
Hello folks
This article deals with 3 important topics:
First of all, let me explain that the reason why I created this standard is that the "naming" is one the most complex job in software development. That's why I struggled a lot to find at least a directory structure that can be re-used in all kinds of projects, not only azerothcore. Nowadays, with directory-structure 2.x, I can definitely say that it's very stable and I used it on dozen of projects written in nodejs/reactjs/c++ etc.
However, with the version 1.x the AzerothCore introduced a fully-modular structure that was "too extreme". It was using the directory structure 1.x that was too limited for our purpose. I tried, in that case, to modularize the entire codebase of sunwellcore moving all parts of AC with different business logic in a separate module. But it came with some drawbacks, such as the difficulty to import patches from trinitycore and the complexity of identifying the application layers.
That's why with AzerothCore 2.x we created the latest directory-structure 2.x standard allowing us to reuse folders with an easier concept. I've updated the related wiki page to explain to you how our repo is organized: http://www.azerothcore.org/wiki/Directory-Structure.
Given that said before, we've not reverted back the idea of creating a general-purpose server framework, instead, we've moved that layer to the deps folder with a domain-oriented logic and a monorepo architecture.
What we have to do is to move all the code that can be reused by different projects that are not strictly related to the "wotlk/wow" logic, to a proper component inside the deps layer.
This component can be called azerothcore-framework and be handled by a VCS such as git subrepo (I've used it a lot) or git subtree, but if you have a better idea feel free to suggest me it (I would avoid using git submodule)
This framework could be used then to build other MMO servers or any kind of networking application. Thus to restore the original concept of AzerothCore as an MMO framework.
During the first 2 years of AzerothCore I had to develop and maintain a repository with 10-15 different modules. It was before the creation of azerothcore dashboard script so I ended up to manage them with a monorepo solution, handled by the git subrepo tool. In a few words, I've commented out the .gitignore row that excludes the modules folder content. This allowed me to include the modules source code directly inside my repo without downloading them separately every time. Then, with git-subrepo, I've created some scripts to pull/push changes to each module repository.
It's easier to download the entire repo with all the needed modules already included, but it's also harder to keep separated and extract changes made to AzerothCore to share them with the main repo. In fact, I had to work a lot with cherry-pick tool of git. It was not so bad for me but can be tricky for people who never used it before.
Recently, instead, I'm trying to do the other way around (the natural way): I've simply created an installation script that automatically downloads the azerothcore (git clone) and then runs the sequential installation of all required modules with the azerothcore dashboard.
In a few words it's essentially something like this:
This will allow you to have an intact azerothcore git history, so you can contribute easier with the AzerothCore without being afraid about AGPL3 infringement 😝
However, for now, the "acore.sh module" command is very limited and can be easily replaced with a git clone. But I'm working to improve it supporting more and more feature allowing the multi-repo strategy using acore.sh to be lot more suitable.
And what about you? which strategy are you using to work with modules? Do you feel comfortable with the structure described in the first 2 points?
Beta Was this translation helpful? Give feedback.
All reactions