Development Workflow

How our developers update systems and content for the upcoming rewrite

kablekompany

Kable

5 min read

July 25, 2022

Managing a bot the size of Dank Memer takes tentativeness and a strict workflow. Ensuring a smooth transitioning of systems and content, for both our users and our developers is key in providing a quality service. With the approaching eclipse of the rewrite, we detail how our development team executes this workflow from point of planning, all the way to deployment.

Planning

There are two lanes we approach when it comes to the planning aspect of the bot;

  • Content
  • Engineering

From a content perspective, our team internally discusses new systems (for example "Adventure") to release to our user base. These systems consist of multiple strings, pro/con actions and events, and outcomes. The initial content system is discussed among the economy team before it's passed into conversation with the development team for implementation. These 'think tank' sessions pour out various balancing updates, events, responses, and economic systems that you know and love within the bot.

An example snippet from Adventure

  • all chance and reward values have been removed for this example Adventure snippet, values removed

From the engineering perspective, our development team writes systems to adhere to Discord's requirements for 3rd party services, as well as providing back-end efficiency for all functions within the bot. Lottery, DM notifications, future slash commands, and many more system features, all require standalone functioning to ensure snappy response time when interacting with the bot. These services, paired with our codebase of core bot functions, are what makes Dank Memer achieve optimal uptimes, and low latency response (network willing 😁).

Both of these planning avenues are plain in nature. At this phase, they are designed in notion, notepads, channels, or journals with limited information on the approach for design. Instead, the emphasis sits on the outcome result and expressing what that result is, whether it be content-driven or back-end optimization.

Developing

With both aspects previously mentioned in mind, our developers begin to fit feature requests into our codebase. They will determine if it is a system that needs expanding, a new function or class created from scratch, or a new reference library for content. In the example of the rewrite, our developers refactored our entire codebase from the ground up and in a new coding language; from writing authentication for the bot to access Discord's gateway, porting previous content and its systems, transferring our user data into a brand new database, AND ensuring our back-end services are cross compatible.

Our developers commit hours to writing functions in our codebase, while running private instances of the bot to ensure no issues occur when compiling newly crafted code. Once a stable instance is achieved, we move toward the testing phase.

Testing

Our developers release an alpha version of the bot to our testing group (aptly named "Alpha Testers"). This internal group of volunteers is made up of different types of players in the community. They work to 'break' the bot, find exploits in new or old systems, as well as provide feedback on content. While we have active alpha testing, bug logs are tracked via a separate bot that our team created specifically for tracking bugs, and fixes. Once our developers issue a changelog to our testers, our volunteers will begin to target test those particular pieces of changes, create bug reports, and provide feedback. This cycle will start over with each new or rewritten feature before a release is made to our scaled user base; ensuring we codify, quantify, and mitigate any potential efficiency issues or obvious duplicative exploits before deploying the bot to the beta phase.

Dank Memer Beta

Did you know that if you run pls invert <@270904126974590976> using Dank Memer you'll find how we chose our Beta version's profile picture?

Once our development team determines we are ready to release beta into the wild is when things take off in overall development. Some common occurrences we discover once we ship beta are:

  • Unforeseen race conditions that appear once the bot is released to scale that we couldn't find when we were testing alpha with a small group

  • Our testers potentially missing the simple exploits (looking at you negative integers)

  • Implemented content can be cumbersome to navigate, or not contain enough help strings to assist in navigating

  • Community feedback could shift our decisions to implement, or cease implementation of, various systems (for example us introducing market, and deprecating user-to-user trade)

  • Identifying "scam" techniques used by players throughout the user-base to upend fair gameplay when interacting with other players, and issuing UI changes to prevent them

  • Identifying the least amount of EUD (end-user data) to keep backend to ensure privacy is maintained while allowing various moderation metrics to remain

  • Database optimization (if you ever come across Melmsie in one of our servers, he really has an affinity for RethinkDB and you should start a conversation about the positives of it with him 😏)

These are just a very FEW examples of returned data we receive from our beta releases. The more users that collude in providing us this information, the more refined our production instance will be once it is deployed soon(tm). We are grateful for the user-base that has helped, and continues to help, us in our current stage of beta testing!

If you're reading this and have no idea about the beta bot, you can add it to your server by clicking here to see what we've been working on AND how you'll interact with Dank Memer in the near future

But... Why?

Our legacy codebase, the bot some of you have interacted with for more than 3 years, contains multiple inefficient systems. Systems that are outdated, bandaged to debug, or cumbersome. While Discord is requiring slash commands from all verified bots by the end of August, this rewrite has made it possible for our development team to re-engineer the bot from the ground up; increasing its efficiency, reliability, and UI. We are proud of the product we've shipped for so many years and are even more excited to see the next step for Dank Memer and its placement on Discord. This rewrite has been years in the making, and carefully curated and crafted by a very small development team. As we set eyes on the homestretch before release, there's still much to do! Help us do it by checking out our beta!

Add Dank Memer

Add Dank Memer Beta

Join our support server

Join our community server