Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request for Comments: the future of the Emcee Discord bot project #395

Open
kevinlul opened this issue Apr 25, 2022 · 2 comments
Open

Request for Comments: the future of the Emcee Discord bot project #395

kevinlul opened this issue Apr 25, 2022 · 2 comments
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

Comments

@kevinlul
Copy link
Contributor

kevinlul commented Apr 25, 2022

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.gg start.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:

  • freeze the current functionality as-is and only patch for breakage or security, since the original user no longer uses it for actually running a tournament
  • continue to improve and enhance Emcee on a Challonge-aligned track: e.g., implementing commands for currently-unexposed Challonge features wanted by other users or supporting Challonge community functionality
  • independence from Challonge and integrating and adopting Bracketeer, putting us in startup territory
  • literally anything else that we haven't considered!

Please feel free to comment in this issue or in our Discord #general channel if you have any ideas or pointers.

@kevinlul kevinlul added help wanted Extra attention is needed question Further information is requested future Currently out-of-scope feature to be added in the long term labels Apr 25, 2022
@kevinlul kevinlul pinned this issue Apr 25, 2022
@kevinlul
Copy link
Contributor Author

kevinlul commented Jun 6, 2022

Update: Logitech has released Challonge APIv2. APIv1 is to be deprecated, so this will eventually be a forced upgrade. It is unclear what improvements have been made.

@dor-rondel
Copy link

For what it's worth, we use Emcee on our server just for deck verifications and registration, and I manually run the bracket. We would 110% enjoy Emcee even if functionality is left as is. Thank you either way for all your work on this awesome bot, we've been using it religiously for rush duel tournaments using the banlist flag :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
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
Projects
None yet
Development

No branches or pull requests

2 participants