Cloning the DMOJ


The DMOJ is an open-source project licensed under the AGPLv3, so this means that legally, you are allowed to do (almost) whatever you want with the code, so long as any changes you make to it remain public.

So you want to set up a clone. Awesome! But first, ask yourself this:

Is this something I can reasonably expect to set up myself (or with the group of people I'm working with, etc.)?

It is also important, when deciding on whether to clone the site, that you are confident in your abilities to go through with setting it up. The site is built up of many modules written in a large number of frameworks and languages. Unless you have (or are confident in your ability to acquire!) a working knowledge of Python, Django, Node.js, Ruby, MySQL, and networking, you will likely have trouble setting it up.

While administrators and contributors will be available for you to ask for help on Discord, please note that they won't take well to questions that demonstrate a lack of basic understanding of the prerequisites. They typically have limited time to spend between working on DMOJ and helping others, so don't use them as a source of information where Google would suffice. This page was written largely in response to the large number of people who have attempted to clone DMOJ, only to end up consuming a lot of contributor time in fixing issues in setup that they were unprepared to deal with.


In summary, if you think you can easily set up the DMOJ, without help, go for it! If not, please consider using the regular site for your purposes.

Finally, if you do decide to set up a clone of DMOJ, you must follow the AGPLv3 license that DMOJ code is licensed under. Specifically, we ask that you publicly release the exact version of the DMOJ source code you are running on your servers, and link to it on the cloned website itself in a noticeable manner. Typically, this means a link in the site footer or about page, but use your judgement.