Your question is very valid but to answer that I need to explain how TFS started and how other projects started so you can understand the context of having multiple repositories. Please note this is
MY PERSONAL VIEW of things and it might be heavily biased towards the experiences I had in the open tibia community since 2005
In the beginning the community was very fragmented because a lot of servers were being developed in parallel on top of leaked projects, to try and create a community TFS was created. The idea was awesome, a place where everyone could contribute and then releases would be sent to server admins, everyone would be using the same version of a software so reporting would be centralized and the team of devs would know clearly what is the backlog of issues to work on for the upcoming releases. Theoretically it would make a single project and end the crazy parallel market of bases being sold.
What could go wrong?
Well, it's a bit easier for us to point exactly what went wrong looking at the past but to be fair the main problem was how this idea was implemented. You see, latest release was only being shared in Premium Board of otland and GitHub didn't existed back then. That of course created 2 difficult situations for devs and otadmins:
- No documentation or history at all: There was some effort from a few devs to try and document a couple of areas, but mainly they had to choose between fix things and trying to implement new functions. This means it was hard for anyone trying to catch up with the project even to contribute, also this was very restrict to a couple of people.
- Because the latest was only shared to premium members, the market got even worse. Now people were not selling parallel projects but rather the SAME "official" repository. They paid premium board and could re-sell the latest releases to other people who were not around otland, especially in other OT communities. Plus, the idea could only sustain itself it everyone was using the same base and now people downloaded servers from parallel sources or from the releases of "free" tfs and the bug reports devs received were not clear if were from latest release or not, increasing the workload they had to do in order to find out if the bug was really in latest version or people were just using an outdated one.
Now, fast forward a couple of years. The situation got worst and now the team of developers has changed almost entirely. People grew old and couldn't stand anymore this vicious cycle of doing 3, 4 times the effort required to replicate and correct things while still trying to push latest tibia version and features. New devs didn't had the background of changes nor knew if bugs being reported were in latest version and if were already confirmed or denied by previous developers. Lack of communication created a harsh environment for the project development.
This culminated with a community that found bugs, fixed by themselves or paid others to do it mostly because:
1. Reports were not being taken seriously. One part because devs were occupied with other stuff and couldn't stop to check every single report, especially because there's a big chunk of them caused by local modifications.
Second part because the devs were egocentrics piece of shit that considered themselves gods just because they knew the bare basics of Lua and cpp and understood barely the architecture of the project.
2. Greedy: The environment for servers was always harsh. OT numbers has started declining and the servers had to compete heavily against one and another. It lead to most servers fixing critical issues as a way to show "stability" advantage towards competitors.
With all this context, it's easy to understand why most of the projects of this community are singlely maintained: It takes years to understand the architecture, learn the languages involved and start contributing.
By the time you're actually there most likely you won't have time anymore and you will know FOR SURE that you'll end up doing it all by yourself because other devs are not sharing their work, just to be crushed by competitors that knows hidden bugs and also don't share information.
Now, TFS has been in an almost freeze state for a couple of years. It was even hard for professional devs (seriously, I'm not joking) to get their PRs approved or their bug reports taken seriously. I've participated myself in a couple of other open source communities and it was easier for me to get my PRs approved at Nvidia than in TFS. In other side you have a very tiny team that claims this is because they have high standards (yes, higher than NVIDIA!!)
You can find a shit ton of topics saying "this is bullshit" to how TFS has been dealing with things but the truth is we lack devs, we lack maintainers, reviewers and testers. And this isn't exclusive to TFS, all other projects suffer the same as many of here says every now and then: the community is dying.
Because of how hard it was to contribute to TFS, new initiatives have been created: OTX, OTBR, PyOT, SharpOT, Optimized TFS, among others...
At the same time every now and then we still had projects leaking and new bases being formed on top of those already improved projects.
This creates a mixture that is:
- discouraging to every project maintainer to know their work is not being used or that they are doing it all alone.
- discouraging to devs who don't know which initiative to support and where to start
- bad for otadmins that don't know what to choose and where to get support
- bad for otadmins don't know how they can contribute to the projects they use
- bad for players because they have to deal with not updated and unstable servers
In each of the initiatives we had one aspect in where it diverged in both proposal and vision for future with TFS, and that's why they became their own projects at some point.
- OTX: Wanted to include more custom systems that nearly every otadmin includes in their servers but would never be accepted in TFS because it is not "global tibia stuff". TFS could open a custom branch or ask people to include those systems as "optional" with default configuration in config Lua being set to "FALSE" so we would have the custom options there but whoever wants to do a global would have it as default. Because they were not open to this, a new project started.
- OTBR: Wanted to simplify and improve the source code to include newest versions and features, regarding if that would break backwards compability
- PyOT: Make a cleaner source and architecture using Python
- SharpOt: Make a cleaner source and architecture using C#
- Optimized TFS: Now this is possibly the best project we had in this community since I joined it and I could never thank @fabian766 enough for driving it. The goal was to rework the source entirely to optimize it to the fullest, regardless of breaking backwards compability.
You see, TFS has been for years rejecting contributions because it would "break compability with previous TFS versions" but dragging this anchor that is the support to previous versions has its own costs.
1. It's hard to keep updating it thinking about how servers of TFS 0.2 will be affected. Honestly we should break compatibility every now and then to force people to get their bases updated, otherwise regardless of how much work we put into development and fixing things it will never reach end users.
2. The code is a spaguetti of conditions to handle every single version of tibia and tfs.
Now recently they finally moved to the latest tibia protocol, breaking (FINALY!!) the backwards compability. There isn't much of us around and splitting efforts between two bases (or branches in this case) is still BAD in essence, but at least it shows an evolution from their side that they didn't wanted to risk before.
Now, to your question, which base to choose between TFS and OtBR?
And the right answer is: BOTH!
Despite all the fights betweens devs, both projects have their value and what you see in reality is that both still feed from each other.
As
@skulls pointed out, the very essence and architecture of both bases are the same and they share common issues. Being it open source, when we see a critical issue being fixed in one of them, we don't even need to communicate, the other part will propose the correction in their supporting base as well.
Now, I'm personally closer to the OTBR team and I sense that they work in a better format (discussing between actually doing things, having a clear definition of roadmap and what is the future they want to achieve). Can it be because I'm closer to OTBR folks and I don't see the side of how TFS devs are doing this? Of course!
Because of the reasons stated above, and the fact that we are trying to understand the past so we don't fall into the same mistakes (again and again), if I were to start today I'd start with Canary, regardless if it was for a global 12.X or a custom project.
The way I see, Canary is the future of otserver community and the team is working really really hard for this future.
We acknowledge what is wrong and what needs to be changed, we want to bring otadmins and users into this cycle and have a more inclusive project for all of us, plus we have more people helping (there's always space for more) and Majesty simply does an immense job to catalog and create extensive tutorials in both english and portuguese for every process and tool.