Request for Comments: the future of the Emcee Discord bot project #395
Labels
future
Currently out-of-scope feature to be added in the long term
help wanted
Extra attention is needed
question
Further information is requested
Current scenario
Over the past year of operations for Emcee, we have discovered that the Challonge API that Emcee highly relies upon to actually run a tournament is unreliable at large scales (number of participants >64). Challonge has catastrophically faulted in one-third of 2021 Chalislime Monthly tournaments. The typical failure scenario is Challonge claiming an "impossible pairing situation" in Swiss when it is perfectly possible; in fact, Challonge will find the pairing it if the bracket is reset and the scores are input again. However, there are other failure modes like a permanent 422 error state on a tournament, corrupting it, and whatever happened for August 2021. In all cases, Challonge support has not been forthcoming, typically ghosting our tickets with no solution, and to our knowledge these bugs have still not been resolved.
This raises serious questions about the future viability of Emcee, as a Discord bot that is essentially a client and Discord frontend to the Challonge API to function and sandwiched between the Discord API and the Challonge API. In light of Challonge's unreliability, the Chalislime Monthly tournaments for which Emcee was primarily designed for have switched away from Challonge entirely for 2022.
At the same time, there are other pressures to significantly transform Emcee's codebase from Discord. Discord originally intended for message content to become a privileged intent at the end of April, only to recently extend the deadline to the end of August. This would prevent verified bots from reading message content without explicit approval from Discord, and message-based commands are not an acceptable use case due to the introduction of Slash Commands. This change does only affect verified bots, so it will not be immediately effective on Emcee. However, as the bot's adoption grows, we will be forced to either limit the public instance of Emcee to 74 servers to avoid verification, or commit a significant amount of effort to rewriting this codebase to use Slash Commands instead of message-based commands.
Other software in this space
smash.ggstart.gg: this web application was frequently mentioned as an alternative to Challonge. However, its API does not allow fully automating the tournament lifecycle like Challonge.Tournament Kings: this is a startup with a proprietary Discord bot that fully integrates with Challonge. Of course, it cannot do Yu-Gi-Oh! deck checks like Emcee, but it is integrated with Challonge far beyond what is possible through the public API. Challonge and Tournament Kings are collaborating and tournaments can be linked from Challonge's web interface to Tournament Kings. The future of independent bots using the API seems bleak by comparison.
Pittsburgh Knights: this esports team announced recently in March that they are developing "MatchBot to elevate the current Yu-Gi-Oh! experience and create a centralized place to host both Master Duel tournaments as well as ranked TCG games, all through Discord."
Bracketeer: this is another open-source tournament bot by Matt Braddock. Notably, it has an independent implementation of tournament pairing algorithms. Last year, we tried to work on adopting this implementation over Challonge and integrating the two bots, but the effort has fallen through because it is truly a tremendous amount of work to rewrite Discord bots from fundamentals on free time.
Toornament: I literally just found it while writing this issue and don't know too much about it.
Discussion
Given all this, what should the future direction of the Emcee Discord bot project be? It is clear that improving Emcee to an ideal state requires a lot of work that puts us in startup territory, or at least firmly in contention with startups. While it is not unheard of for free and open-source community projects to contend with well-funded proprietary projects, Emcee does not have an established community of contributors; just two people who built this on some free time and then some.
Some options:
Please feel free to comment in this issue or in our Discord #general channel if you have any ideas or pointers.
The text was updated successfully, but these errors were encountered: