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 two questions:

Do I hope to get something out of this that I wouldn't be able to get out of the regular DMOJ?

One of the most frequent reasons we hear for people wishing to set up their own clones is that they feel the problems they'd like to add are too easy for the DMOJ (they may be for an introductory computer science course, for example). This worry is unfounded: if you have a good problem idea, no matter how easy it is, then in the vast majority of cases there is no problem in adding it directly to the DMOJ.

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 very 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 a working knowledge of Python, Django, Node.js, Ruby, MySQL and networking, you will have trouble setting it up. The DMOJ site was never written in such a way as to be run elsewhere than on this site, so installation is almost never smooth.

Now, while administrators and contributors will be available for you to ask for help on Slack, please understand that they do not take well to questions that demonstrate a lack of basic understanding of the material necessary. 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. Indeed, this page was written largely in response to the large number of people who have attempted to clone DMOJ to add easy problems, 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.