diff --git a/README.md b/README.md index b7e6733..f11816d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,12 @@ -cms-dev.github.io -================= +# [cms-dev.github.io](https://cms-dev.github.io) -Website for the cms-dev organization. +Website for CMS and the cms-dev organization. + +## Deploy + +``` +$ python3 -m venv mkdocs +$ source mkdocs/bin/activate +$ pip install -r requirements.txt +$ mkdocs gh-deploy +``` diff --git a/contribute.html b/contribute.html deleted file mode 100644 index 6cc926c..0000000 --- a/contribute.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - - - - - - - CMS :: Contribute - - - -
-
- -
- -

CMS :: Contribute

-

Contest Management System

-

- Build Status - Codecov Status - Get Support on Telegram -

-
- - - -
- -

How to contribute

- -

Before starting the design and implementation of any major feature, please contact the core team via the discussion mailing list to organize the effort and making sure there is no duplication of work.

- -

For every change, you should ensure that:

-
    -
  1. no PEP8 errors are introduced (check with the pep8 command)
  2. -
  3. the Pylint score does not decrease too much (use pylint)
  4. -
  5. you add your copyright line in the header of all files you changed substantially;
  6. -
  7. if it is your first contribution, your name is in AUTHORS.txt.
  8. -
-

You can setup automatic checks for the first three items using git hooks as explained in the wiki.

- -

Depending on the size of your project, the review process is slightly different.

-

For a small to medium change (that is reasonably reviewed in a single time), you should:

-
    -
  1. fork cms-dev/cms on github;
  2. -
  3. create a new branch and commit there your change(s);
  4. -
  5. create a pull request against the master branch of cms-dev/cms
  6. -
  7. after about 5 minutes, check on Travis CI that your pull request passes all the tests;
  8. -
  9. wait for a member of the core team to review the pull request;
  10. -
  11. implement the required changes as new commits in your branch without modifying the existing commits;
  12. -
  13. the pull request will pick up the new commits and the cycle begins again (Travis, review, new follow up commits)
  14. -
  15. when the reviewer agree on the change, you should rebase your branch in a way that makes sense, and inform the reviewer when it's done
  16. -
  17. the reviewer will then push your change to master
  18. -
- -

For a big change that requires several commits, we may want to review it in several steps that may also break cms or the tests. Since we try to keep the master branch as clean as possible, we will create a feature branch on cms-dev, and you will issue pull requests against that branch. The review process will be the same, but you will be allowed to temporarily break tests and features (not to break the style!). When the feature is completed, we will agree on how to rebase the branch on top of master and we will merge it.

- - -

Contribution ideas

- -

The following are some ideas for self-contained projects to expand CMS’s features. All of these require some knowledge of Python, SQLAlchemy and relational databases. Experience with the organization of programming contests and training camps is a plus.

- -

If you are interested in developing one or more of these ideas, please contact us via the discussion mailing list, and we will arrange for a member of the core team to provide guidance.

- - - - - -
- - -

Representative submissions

- -

Allow admins to store, for each task a set of representative submissions, intended to have a precise result (for example: a wrong submission which should score zero points, a correct one which should score full points, and an intermediate one which should score half of the points. Admins should be able to test at any moment that the representative submissions score exactly as expected.

- -

More precisely, there should be a way to associate to tasks a set of tuples (submission, (name), expected result); moreover, AWS should be extended to allow the recomputation of the scores associated to the representative submissions and to warn the admins when the score is different from the expected.

- -

Expected changes.

- -
    -
  1. Adding the new fields for the representative submissions to the task DB class, together with their metadata (name and expected results); writing the updater.
  2. -
  3. Adding hooks to the YamlImporter for easy testing.
  4. -
  5. Adding AWS UI to show and edit the representative solutions and their metadata (including the actual results), and to trigger a re-evaluation.
  6. -
  7. Letting ES and SS know that there is a new “type” of submission and make sure that the path taken by these submissions is correct and do not spill over the paths taken by the contestants’ submissions.
  8. -
- -

Additional requirements: none.

- -

Difficulty: medium.

- -

Size: medium.

- - - - -
- -

Expand test coverage

- -

CMS currently has a functional test that runs all the services (apart from RWS) and simulating the creation of contests and tasks by the admins, and some submissions from the user. There are some unit tests but very limited. The task is to increase the coverage of the unit tests (possibly reorganizing code to make it more testable), extend the functional tests to other aspects (like importing of tasks) and to speed up the execution of functional tests.

- -

Additional requirements: testing experience (especially in Python).

- -

Difficulty: high.

- -

Size: big.

- - - -
- -

In-browser code editing

- -

Many online services for programmers (e.g., github) are starting to offer in-browsing editing of source files. It would be very cool to add these capabilities to CMS, allowing editing of submissions directly from the browser. Existing open source projects could be used, like Ace or CodeMirror. There is a lot of potential for follow ups, like for example branching and auto-snapshotting.

- -

Expected changes.

- -
    -
  1. Experimenting with the existing in-browser plugins to decide which one to use, using as metrics: browser compatibility, performances, user experience, offline capabilities (many contests don’t allow Internet access).
  2. -
  3. Modifying CWS to include a new tab for each task to allow editing and submitting of solutions from scratch.
  4. -
  5. Adding a canvas to the new tab to display the existing submissions (with some basic info, like timestamp and score) to allow contestants to edit and submit previously submitted solutions (that will be displayed as branching out from the starting solution); allowing contestants to branch multiple times from a single submission.
  6. -
  7. Implementing auto-snapshotting after x minutes and/or y chars of delta; deciding how to store the snapshot (probably as a submission with a special flag); adding the new field to the submission DB object; writing the updater.
  8. -
- -

Additional requirements: JavaScript.

- -

Difficulty: medium to high, depending on the follow ups.

- -

Size: big.

- - - - - -
- -

Contest statistics and graphs

- -

After an official contest is often nice to have some easily retrievable statistics about scores distributions, language usage, and so on.

- -

Expected changes.

- -
    -
  1. Add a new page to AWS to contain graphs and downloadable data.
  2. -
  3. Think of the useful aggregated data.
  4. -
  5. Actually implement the graphs and let admins download CSV data.
  6. -
- -

Additional requirements: JavaScript.

- -

Difficulty: low.

- -

Size: small.

- - - - - - - - -
- -

Exposing complexity guess

- -

There is already an experimental code in cmscontrib that tries to compute the complexity of the contestants’ solutions based on the size of the input. A similar computation was suggested as a more sane way of scoring at some IOI conference, though it has many problems in reliability and is subject to cheating. Still, it would be interesting for admins to see this information, for example to have an idea of the cleverness of the solutions of two contestants.

- -

Expected changes.

- -
    -
  1. Adding a new appropriate field to the submission DB object to store the complexity of the submission; writing the updater.
  2. -
  3. Writing a new service that “subscribes” to the event “submission scored” and computes the complexity of the submission.
  4. -
  5. Exposing the complexity in an appropriate UI in AWS.
  6. -
- -

Additional requirements: statistical regression.

- -

Difficulty: low.

- -

Size: medium.

- - - - - - -
- -

Ease the usage of CMS in a training settings

- -

At least, make sure that all interfaces are usable with a high number of contestants, tasks (and of contests for RWS). This may mean to have adaptive UIs after a certain threshold (for example, not showing a single page in RWS if you have 10k contestants.

- -

Additional requirements: training camps experience.

- -

Difficulty: medium to high, depending on how thorough is the investigation.

- -

Size: big.

- - - - - - -
- -

Team competitions

- -

Many online contests are in the form of team competitions: multiple contestants cooperate to solve the same set of problems. The easiest way to implement this without changing a lot of code is to put the team information in the user table and add a new table for team participants (“sub-users"?). As extras, with in-browser code editing it would be nice to allow real-time cooperation, and also for admins it would be nice to be able to see who wrote a specific piece of code.

- -

Expected changes.

- -
    -
  1. Adding the new table to the DB; writing the updater.
  2. -
  3. Modifying YamlImporter and similar to accept the new information.
  4. -
  5. Modifying CMS to understand sub-users and allow the login with the sub-user credential but contributing to the team submissions.
  6. -
- -

Additional requirements: none.

- -

Difficulty: low.

- -

Size: medium.

- - - - - - - -
- -

Visual solutions in RWS

- -

Note: this is currently in progress here.

- -

Allow spectators to be more involved with the contest by giving them the possibility of looking at the internal functioning of the participants’ submission. During the evaluation process, CMS will record in the submission one or more opaque pieces of data, that will be passed to RWS; on his side, RWS will have a plugin able to translate back each piece of data into the solution given by the contestant’s submission to a simple input, and to show this solution to the spectators. Bonus point for implementing this also for interactive tasks and showing the spectators an animation.

- -

Expected changes.

- -
    -
  1. Adding new opaque fields to the submission DB class; adding a boolean to the inputs marking those whose solution will be exported; writing the updater.
  2. -
  3. Designing the system that will fill the opaque fields starting from the submission; decide to do that at the evaluation time, or to create a new job type; implementing the proposed solution.
  4. -
  5. Modifying SS and RWS to understand the new data being passed.
  6. -
  7. Implementing the plugin system for RWS, mimicking what CMS has for task types and score types.
  8. -
  9. Modifying RWS to let the plugins draw the UI of the solution.
  10. -
  11. Implementing some examples task to showcase the new feature.
  12. -
- -

Additional requirements: contest organization experience, JavaScript.

- -

Difficulty: high.

- -

Size: big.

- - - - - -
- -

Mobile-ready RWS (or an app?)

- -

The RankingWebServer works awfully on mobile devices (mostly phones) due to their small screens and to the mouse-driven interaction model. It’s advisable to redesign the client to handle these use-cases better, or to develop dedicated applications for mobile (Android, iOS, etc.). The latter ones should get the data from the same server that provides the current in-browser scoreboard (i.e. communicate over the existing HTTP API). Notifications could be interesting too.

- -

Additional requirements: JavaScript, accessible web development; possibly app development.

- -

Difficulty: high (there will be no guidance available from the core team for native app development).

- -

Size: big.

- - - - - - - -
- -

Non-interactive scoreboard for public screening

- -

Important competitions may have on-site large screens, projectors or “totems” to display the live scoreboard to the audience, so they don’t have to use their laptops or phones (which wouldn’t work anyway, see above). These use-cases have a totally different set of needs than an interactive online ranking. These are best addressed by writing a new and different scoreboard client. Again, the server should remain the same: we just need a new client.

- -

Additional requirements: JavaScript.

- -

Difficulty: medium.

- -

Size: small.

- - - - - -
-
- - - - diff --git a/docs/assets/.DS_Store b/docs/assets/.DS_Store new file mode 100644 index 0000000..0e40d96 Binary files /dev/null and b/docs/assets/.DS_Store differ diff --git a/images/cms_icon.png b/docs/assets/favicon.png old mode 100755 new mode 100644 similarity index 100% rename from images/cms_icon.png rename to docs/assets/favicon.png diff --git a/cms.svg b/docs/assets/logo.svg similarity index 100% rename from cms.svg rename to docs/assets/logo.svg diff --git a/docs/assets/totem-ioi2012.jpg b/docs/assets/totem-ioi2012.jpg new file mode 100644 index 0000000..6bceebd Binary files /dev/null and b/docs/assets/totem-ioi2012.jpg differ diff --git a/docs/contact.md b/docs/contact.md new file mode 100644 index 0000000..da66b38 --- /dev/null +++ b/docs/contact.md @@ -0,0 +1,17 @@ +You can contact us in chat on [Telegram](https://t.me/contestms), or write on +the support mailing list , where no +registration is required (you can see [the archives on Google +Groups](https://groups.google.com/g/contestms-support)). + +To help with the troubleshooting, you can upload on some online pastebin the +relevant log files, that you can find in `/var/local/log/cms/`. + +If you encountered a bug, please file a [GitHub issue](https://github.com/cms-dev/cms/issues) +following the instructions in the issue template. + +Please don't file issues to ask for help, we are happy to help on +[Telegram](https://t.me/contestms) or on the +[mailing list](mailto:contestms-support@googlegroups.com), and it is more likely +somebody will answer your query sooner. + +For development queries, please use the [Telegram group](https://t.me/contestms). diff --git a/docs/contribute.md b/docs/contribute.md new file mode 100644 index 0000000..2c4ba76 --- /dev/null +++ b/docs/contribute.md @@ -0,0 +1,256 @@ +## How to contribute + +If you want to help translate CMS to your language, you can do so on +[Weblate](https://hosted.weblate.org/engage/cms/). + +If you are interested in implementing major features, please [contact the core +team](./contact.md) before starting the design and implementation, so that the +effort can be better organized and we can make sure there is no duplication of +work. + +For every change, you should ensure that: + + +- no PEP8 errors are introduced (check with the pep8 command) +- the Pylint score does not decrease too much (use pylint) +- you add your copyright line in the header of all files you changed substantially; +- if it is your first contribution, your name is in AUTHORS.txt. + +The process to send changes is as follows: + +- fork cms-dev/cms on github; +- create a new branch and commit there your change(s); +- create a pull request against the main branch of cms-dev/cms + +The following are some ideas for self-contained projects to expand CMS’s +features. All of these require some knowledge of Python, SQLAlchemy and +relational databases. Experience with the organization of programming contests +and training camps is a plus. + +## :material-head-lightbulb: Contribution ideas + +If you are interested in developing one or more of these ideas, please +[contact us](./contact.md), and we will arrange for a member of the core team to +provide guidance. + +### Representative submissions + +Allow admins to store, for each task a set of representative submissions, +intended to have a precise result (for example: a wrong submission which should +score zero points, a correct one which should score full points, and an +intermediate one which should score half of the points. Admins should be able to +test at any moment that the representative submissions score exactly as +expected. + +More precisely, there should be a way to associate to tasks a set of tuples +(submission, (name), expected result); moreover, AWS should be extended to allow +the recomputation of the scores associated to the representative submissions and +to warn the admins when the score is different from the expected. + +#### Expected changes + +1. Adding the new fields for the representative submissions to the task DB + class, together with their metadata (name and expected results); writing the + updater. +1. Adding hooks to the YamlImporter for easy testing. +1. Adding AWS UI to show and edit the representative solutions and their + metadata (including the actual results), and to trigger a re-evaluation. +1. Letting ES and SS know that there is a new “type” of submission and make sure + that the path taken by these submissions is correct and do not spill over the + paths taken by the contestants’ submissions. + +**Additional requirements:** none. + +**Difficulty:** medium. + +**Size:** medium. + +### Expand test coverage + +CMS currently has a functional test that runs all the services (apart from RWS) +and simulating the creation of contests and tasks by the admins, and some +submissions from the user. There are some unit tests but very limited. The task +is to increase the coverage of the unit tests (possibly reorganizing code to +make it more testable), extend the functional tests to other aspects (like +importing of tasks) and to speed up the execution of functional tests. + +**Additional requirements:** testing experience (especially in Python). + +**Difficulty:** high. + +**Size:** big. + +### In-browser code editing + +Many online services for programmers (e.g., github) are starting to offer +in-browsing editing of source files. It would be very cool to add these +capabilities to CMS, allowing editing of submissions directly from the browser. +Existing open source projects could be used, like +[Monaco](https://microsoft.github.io/monaco-editor/). There is a lot of +potential for follow ups, like for example branching and auto-snapshotting. + +#### Expected changes + +1. Experimenting with the existing in-browser plugins to decide which one to + use, using as metrics: browser compatibility, performances, user experience, + offline capabilities (many contests don’t allow Internet access). +1. Modifying CWS to include a new tab for each task to allow editing and + submitting of solutions from scratch. +1. Adding a canvas to the new tab to display the existing submissions (with some + basic info, like timestamp and score) to allow contestants to edit and submit + previously submitted solutions (that will be displayed as branching out from + the starting solution); allowing contestants to branch multiple times from a + single submission. +1. Implementing auto-snapshotting after x minutes and/or y chars of delta; + deciding how to store the snapshot (probably as a submission with a special + flag); adding the new field to the submission DB object; writing the updater. + +**Additional requirements:** JavaScript. + +**Difficulty:** medium to high, depending on the follow ups. + +**Size:** big. + +### Contest statistics and graphs + +After an official contest is often nice to have some easily retrievable +statistics about scores distributions, language usage, and so on. + +#### Expected changes + +1. Add a new page to AWS to contain graphs and downloadable data. +1. Think of the useful aggregated data. +1. Actually implement the graphs and let admins download CSV data. + +**Additional requirements:** JavaScript. + +**Difficulty:** low. + +**Size:** small. + +### Exposing complexity guess + +There is already an experimental code in cmscontrib that tries to compute the +complexity of the contestants’ solutions based on the size of the input. A +similar computation was suggested as a more sane way of scoring at some IOI +conference, though it has many problems in reliability and is subject to +cheating. Still, it would be interesting for admins to see this information, for +example to have an idea of the cleverness of the solutions of two contestants. + +#### Expected changes + +1. Adding a new appropriate field to the submission DB object to store the + complexity of the submission; writing the updater. +1. Writing a new service that “subscribes” to the event “submission scored” and + computes the complexity of the submission. +1. Exposing the complexity in an appropriate UI in AWS. + +**Additional requirements:** statistical regression. + +**Difficulty:** low. + +**Size:** medium. + +### Ease the usage of CMS in a training settings + +At least, make sure that all interfaces are usable with a high number of +contestants, tasks (and of contests for RWS). This may mean to have adaptive UIs +after a certain threshold (for example, not showing a single page in RWS if you +have 10k contestants). + +In the [related](./related.md) page there is a + +**Additional requirements:** training camps experience. + +**Difficulty:** medium to high, depending on how thorough is the investigation. + +**Size:** big. + +### Team competitions + +Many online contests are in the form of team competitions: multiple contestants +cooperate to solve the same set of problems. The easiest way to implement this +without changing a lot of code is to put the team information in the user table +and add a new table for team participants (“sub-users"?). As extras, with +in-browser code editing it would be nice to allow real-time cooperation, and +also for admins it would be nice to be able to see who wrote a specific piece of +code. + +#### Expected changes + +1. Adding the new table to the DB; writing the updater. +1. Modifying YamlImporter and similar to accept the new information. +1. Modifying CMS to understand sub-users and allow the login with the sub-user + credential but contributing to the team submissions. + +**Additional requirements:** none. + +**Difficulty:** low. + +**Size:** medium. + +### Visual solutions in RWS + +(An old attempt at this can be found in +) + +Allow spectators to be more involved with the contest by giving them the +possibility of looking at the internal functioning of the participants’ +submission. During the evaluation process, CMS will record in the submission one +or more opaque pieces of data, that will be passed to RWS; on his side, RWS will +have a plugin able to translate back each piece of data into the solution given +by the contestant’s submission to a simple input, and to show this solution to +the spectators. Bonus point for implementing this also for interactive tasks and +showing the spectators an animation. + +#### Expected changes + +1. Adding new opaque fields to the submission DB class; adding a boolean to the + inputs marking those whose solution will be exported; writing the updater. +1. Designing the system that will fill the opaque fields starting from the + submission; decide to do that at the evaluation time, or to create a new job + type; implementing the proposed solution. +1. Modifying SS and RWS to understand the new data being passed. +1. Implementing the plugin system for RWS, mimicking what CMS has for task types and score types. +1. Modifying RWS to let the plugins draw the UI of the solution. +1. Implementing some examples task to showcase the new feature. + +**Additional requirements:** contest organization experience, JavaScript. + +**Difficulty:** high. + +**Size:** big. + +### Mobile-ready RWS (or an app?) + +**NEW:** a mobile client is now available! **Ranky** [:simple-android:](https://play.google.com/store/apps/details?id=org.ioinformatics.ranky) [:simple-github:](https://github.com/wil93/ranky) + +The RankingWebServer works awfully on mobile devices (mostly phones) due to +their small screens and to the mouse-driven interaction model. It’s advisable to +redesign the client to handle these use-cases better, or to develop dedicated +applications for mobile (Android, iOS, etc.). The latter ones should get the +data from the same server that provides the current in-browser scoreboard (i.e. +communicate over the existing HTTP API). Notifications could be interesting too. + +**Additional requirements:** JavaScript, accessible web development; possibly +app development. + +**Difficulty:** high (there will be no guidance available from the core team for +native app development). + +**Size:** big. + +### Non-interactive scoreboard for public screening + +Important competitions may have [on-site large screens, projectors or +“totems”](./assets/totem-ioi2012.jpg) to display the live scoreboard to the +audience (team leaders, guests) so they don’t have to use their laptops or +phones. This use-case is most likely best addressed by adding some kind of +"totem" or "demo" mode to the RankingWebServer frontend, which can be toggled +on/off. + +**Additional requirements:** JavaScript. + +**Difficulty:** medium. + +**Size:** small. diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..a2474af --- /dev/null +++ b/docs/index.md @@ -0,0 +1,48 @@ +# Contest Management System + +![](assets/logo.svg){ width="400" align="right" .off-glb } + +CMS, or Contest Management System, is a distributed system for running and (to +some extent) organizing a programming contest. + +CMS has been designed to be general and to handle many different types of +contests, tasks, scorings, etc. Nonetheless, CMS has been explicitly build to be +used in the 2012 International Olympiad in Informatics, held in September 2012 +in Italy. + +## Stable version: 1.5.1 + +[:material-download: Download .tar.gz](https://github.com/cms-dev/cms/releases/download/v1.5.1/v1.5.1.tar.gz){ .md-button } +[:simple-github: View on GitHub](https://github.com/cms-dev/cms/tree/v1.5){ .md-button } +[:simple-readthedocs: Read the docs](https://cms.readthedocs.io/en/v1.5){ .md-button } + +## Development version + +[:simple-github: View on GitHub](https://github.com/cms-dev/cms){ .md-button } +[:simple-readthedocs: Read the docs](https://cms.readthedocs.io/en/){ .md-button } + +--- + +## Stay informed + +You can subscribe to +[contestms-announce@googlegroups.com](https://groups.google.com/g/contestms-announce) +to receive announcements of new releases and other important news. + +## Please, help us help you! + +Have you ever wanted to give us your opinion about CMS and let us hear your +voice? Now it's the time! + +You can fill [this form](http://goo.gl/7PRmHW) to let us know about you and your +general opinion on CMS, and [this other form](http://goo.gl/atFJtw) to let us +know about specific contests you ran with CMS (you can fill this second form +several times for different contests). + +## Support + +To learn how to install and use CMS, please read the documentation, available at +. + +If you have questions or need help troubleshooting some problem, [contact +us](./contact.md). diff --git a/docs/related.md b/docs/related.md new file mode 100644 index 0000000..f87937f --- /dev/null +++ b/docs/related.md @@ -0,0 +1,76 @@ +This page lists some resources that may be useful for CMS users. If you are +aware of others, please [let us know](./contact.md). + +## Related projects + +We are aware of the following projects related to CMS. These projects are not +developed nor maintained by us, hence we do not give guarantees or support for +them. + +### Forks + +- A ["social fork" of CMS](https://github.com/olimpiadi-informatica/cmsocial), +started by William Di Luigi and Luca Versari, adding some social features to CMS +(for example, a forum), and used by the Italian Olympiads. + +- A [list of CMS forks](https://docs.google.com/spreadsheets/d/1gpagCkcQgCPHG6Cys9AzhVRKCKKJwBAznDJ959jKRXw/edit?gid=0) + used by the local Olympiads organizers of a number of countries, each with its + own peculiar set of features that might not yet be available in the official + CMS version. + +### Utilities + +- [Support scripts](https://github.com/CristianCantoro/cms-utils) used in the + University of Trento, in particular start-up scripts for Upstart and systemd, + by Cristian Consonni. + +### Tutorials + +- A [video tutorial](https://drive.google.com/drive/folders/0B-lFexqGexwdY2ZIbWZsazFnbEk?resourcekey=0-zexDrGKUNu2PWIc5osLSXA) + on how to install and run CMS, by Marco Romagnoli. + +--- + +Other potentially useful patches for CMS can be found in the [pull requests +list](https://github.com/cms-dev/cms/pulls) and among the [many GitHub forks of +CMS](https://github.com/cms-dev/cms/network). Many of them are being considered +for inclusion in the official CMS repository. + +## Reports on CMS + +CMS has used in many national and international contests. Some contest +organizers wrote detailed reports on their experience with CMS, which may be +useful for other contest hosts using or considering to use CMS. In particular, +many of them discuss the problems to address in order to use CMS with several +hundreds of users. + +- [Report of stage 1 of LMIO 2015 (Lithuanian Olympiad in + Informatics)](https://docs.google.com/document/d/1CM0zB-5HBroCMDr8NVREsmDn_GHL6Zr5X0L93FqwZX0/edit?pli=1) + written by Motiejus Jakštys in November 2014. There is also a [report on the + results of a testing + session](https://github.com/Motiejus/cms_docker/blob/master/doc/report.md) + (October 2014). The contest had 754 participants, 6222 submissions and was run + on the Amazon Web Services cloud. +- [Report on APIO 2014 (Asia-Pacific International + Olympiad)](https://www.freelists.org/archives/contestms/05-2014/pdfbxiDPzfp0l.pdf), + written by Artem Iglikov in May 2014. The contest had around 600 participants, + around 7500 submissions and was run partially on local hardware and partially + on the Amazon Web Services cloud. +- [Report on IOI 2013 (Brisbane, + Australia)](https://docs.google.com/document/d/1cwvWVOWRhsnDib9UqcmfZlfrHQ1Vq6rpx7YzRo48OV8/pub) + written by Bernard Blackham in July 2013. The contest had 303 participants and + was run on local hardware. The report also enters into the challenges posed by + the management and monitoring of the physical infrastructure. + +## Papers on CMS + +CMS has been described in the following papers by CMS core developers. They can +be useful for who wants to catch a bird's eye overview of the inner CMS +structure. + +- Stefano Maggiolo, Giovanni Mascellani, Luca Wehrstedt. _CMS: a growing grading + system._ Olympiads in Informatics **8** (2014), 123–131. [Full + text](http://www.mii.lt/olympiads_in_informatics/files/volume8.pdf#page=125). +- Stefano Maggiolo, Giovanni Mascellani. _Introducing CMS: A Contest Management + System._ Olympiads in Informatics **6** (2012), 86–99. [Full + text](http://www.mii.lt/olympiads_in_informatics/pdf/INFOL107.pdf). diff --git a/docs/screenshots.md b/docs/screenshots.md new file mode 100644 index 0000000..7295758 --- /dev/null +++ b/docs/screenshots.md @@ -0,0 +1,29 @@ +## Contestant interface + +![](screenshots/cws1.png){ align=left width="250" data-title="The login page presented to the contestant. In the upper-right corner there is a language selector." } + +![](screenshots/cws2.png){ align=left width="250" data-title="The task view, where the statement can be downloaded. It's possible to set up attachments for a task (e.g. to show a sample implementation to the contestant)." } + +![](screenshots/cws3.png){ align=left width="250" data-title="The submission view, where files can be submitted. This specific task is a TwoStep kind of task (like IOI2011's parrots), so the contestant must send two files (or a single archive containing two files)." } + +
+ +## External scoreboard + +![](screenshots/rws1.png){ align=left width="250" data-title="The ranking page presented as seen by contest spectators. The clock shows that the contest has started about 2.5 hours ago. It's possible to show the remaining time by clicking on the clock." } + +![](screenshots/rws2.png){ align=left width="250" data-title="When you click on a row in the ranking page, a summary of the contestant's activity pops up." } + +
+ +## Admin interface + +![](screenshots/aws1.png){ align=left width="250" data-title="The admin page of a single contest. You can see that there's an evaluation enqueued, and that the 4 available workers are busy running different testcases." } + +![](screenshots/aws2.png){ align=left width="250" data-title="The 'Resource usage' page lets you monitor which services are up and lets you analyze how many resources they are consuming." } + +![](screenshots/aws3.png){ align=left width="250" data-title="This is the notification that the admins see when a contestant asks a question during a contest." } + +![](screenshots/aws4.png){ align=left width="250" data-title="As shown here, the admin can decide to write an extended answer or just use a precompiled one." } + +
diff --git a/screenshots/aws1.png b/docs/screenshots/aws1.png similarity index 100% rename from screenshots/aws1.png rename to docs/screenshots/aws1.png diff --git a/screenshots/aws2.png b/docs/screenshots/aws2.png similarity index 100% rename from screenshots/aws2.png rename to docs/screenshots/aws2.png diff --git a/screenshots/aws3.png b/docs/screenshots/aws3.png similarity index 100% rename from screenshots/aws3.png rename to docs/screenshots/aws3.png diff --git a/screenshots/aws4.png b/docs/screenshots/aws4.png similarity index 100% rename from screenshots/aws4.png rename to docs/screenshots/aws4.png diff --git a/screenshots/cws1.png b/docs/screenshots/cws1.png similarity index 100% rename from screenshots/cws1.png rename to docs/screenshots/cws1.png diff --git a/screenshots/cws2.png b/docs/screenshots/cws2.png similarity index 100% rename from screenshots/cws2.png rename to docs/screenshots/cws2.png diff --git a/screenshots/cws3.png b/docs/screenshots/cws3.png similarity index 100% rename from screenshots/cws3.png rename to docs/screenshots/cws3.png diff --git a/screenshots/rws1.png b/docs/screenshots/rws1.png similarity index 100% rename from screenshots/rws1.png rename to docs/screenshots/rws1.png diff --git a/screenshots/rws2.png b/docs/screenshots/rws2.png similarity index 100% rename from screenshots/rws2.png rename to docs/screenshots/rws2.png diff --git a/docs/testimonials.md b/docs/testimonials.md new file mode 100644 index 0000000..04eafd0 --- /dev/null +++ b/docs/testimonials.md @@ -0,0 +1,86 @@ +CMS has been used in several official and unofficial contests. In particular we +are aware of the following. + +## International competitions + +- [International Olympiad in Informatics (IOI)](http://ioinformatics.org/) + + The IOI is an annual competitive programming competition and one of the + International Science Olympiads for secondary school students. The first + edition was held in 1989 in Pravetz, Bulgaria. + + Before IOI 1994, a human evaluator would sit behind the competitor's + computer and do the testing manually (enter test data through the keyboard, + check the output on the screen). + + Starting in IOI 1994, an automatic grading process has been used, with test + input defined in files. We don't know much about the systems used in these + early IOI editions. + + CMS was explicitly designed to be used in IOI 2012 and has been used + every year since, including in IOI 2024, with the only exception of IOI 2016 + where the local host (Russia) opted for a different system. + +- [French-Australian Regional Informatics Olympiad (FARIO)](https://orac.amt.edu.au/hub/fario/) + + Since FARIO 2012. + +- [Baltic Olympiad in Informatics (BOI)](https://boi2024.lmio.lt/) + + Since BOI 2014. + +- [Asia-Pacific Informatics Olympiad (APIO)](https://www.apio2024.org/) + + Since APIO 2014. + +- [Central European Olympiad in Informatics (CEOI)](http://ceoi.inf.elte.hu/) + + Since CEOI 2014. + +- [Romanian Master of Informatics (RMI)](https://rmi.lbi.ro/) + + Since RMI 2014. + +## National competitions + +Many countries choose CMS to run their National programming contests. We are +aware of at least the following ones: + +- Italy, since 2011. +- Australia, since 2012. +- Croatia, since 2013. +- Slovenia, since 2013. +- Norway, since 2013. +- Korea, since 2013. +- Taiwan, since 2013. +- Chile, since 2013. +- Belgium, since 2014. +- Tunisia, since 2014. +- Lithuania, since 2014. +- Argentina, since 2014. +- Malaysia, since 2014. +- Mongolia, since 2014. +- Estonia, since 2014. +- South Africa, since 2015. +- Ireland, since 2016. +- Latvia, since 2017. +- Thailand, since 2022. + +## Training camps + +CMS is used in training camps for the selections of the national IOI teams of at +least the following countries: Australia, Egypt, Germany, India, Ireland, +Israel, Italy, Japan, Latvia, Serbia, South Africa, South Korea and Taiwan. + +## Other + +- Laboratory exercises and exams of the course "Algorithms and data structures" + at University of Trento, Italy (year 2011-2012). + +--- + +If you used CMS for a contest, selection, or a similar event, and want to +publicize this information, we would be more than happy to hear from you and add +it to this list. + + diff --git a/images/body-bg.png b/images/body-bg.png deleted file mode 100644 index d0618fe..0000000 Binary files a/images/body-bg.png and /dev/null differ diff --git a/images/cms_64.png b/images/cms_64.png deleted file mode 100755 index 529a402..0000000 Binary files a/images/cms_64.png and /dev/null differ diff --git a/images/hr.png b/images/hr.png deleted file mode 100644 index 6c723a5..0000000 Binary files a/images/hr.png and /dev/null differ diff --git a/images/octocat-icon.png b/images/octocat-icon.png deleted file mode 100644 index f0ba137..0000000 Binary files a/images/octocat-icon.png and /dev/null differ diff --git a/images/readthedocs-icon.png b/images/readthedocs-icon.png deleted file mode 100644 index 11c8bab..0000000 Binary files a/images/readthedocs-icon.png and /dev/null differ diff --git a/images/tar-gz-icon.png b/images/tar-gz-icon.png deleted file mode 100644 index d50f34f..0000000 Binary files a/images/tar-gz-icon.png and /dev/null differ diff --git a/index.html b/index.html deleted file mode 100644 index 7aecc05..0000000 --- a/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - CMS :: Main - - - -
-
- -
- -

CMS :: Main

-

Contest Management System

-

- Build Status - Codecov Status - Get Support on Telegram -

-
- - - -
- -

CMS, or Contest Management System, is a distributed system for -running and (to some extent) organizing a programming contest.

- -

CMS has been designed to be general and to handle many different types -of contests, tasks, scorings, etc. Nonetheless, CMS has been -explicitly build to be used in the 2012 International Olympiad in -Informatics, held in September 2012 in Italy.

- -
- -
-

Stable version: 1.5.0

- Download .tar.gz - View on GitHub - Read the docs -
- -
- -
-

Development version

- View on GitHub - Read the docs -
- -
- -

Please, help us help you!

- -

Have you ever wanted to give us your opinion about CMS and let us -hear your voice? Now it's the time!

- -

You can fill this form to let us -know about you and your general opinion on CMS, -and this other form to let us know -about specific contests you ran with CMS (you can fill this second -form several times for different contests).

- -

Support

- - -

To learn how to install and use CMS, please read the documentation, available at https://cms.readthedocs.io/.

- -

If you have questions or need help troubleshooting some problem, contact us in chat on Telegram, or write on the support mailing list contestms-support@googlegroups.com, where no registration is required (you can see the archives on Google Groups).

- -

To help with the troubleshooting, you can upload on some online pastebin the relevant log files, that you can find in /var/local/log/cms/.

- -

If you encountered a bug, please file an issue on GitHub following the instructions in the issue template.

- -

Please don't file issues to ask for help, we are happy to help on the mailing list or on gitter, and it is more likely somebody will answer your query sooner.

- -

You can subscribe to contestms-announce@googlegroups.com to receive announcements of new releases and other important news. Register on Google Groups.

- -

For development queries, please use the Telegram group.

- -
-
- - - - diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..4fd86a3 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,34 @@ +site_name: CMS +site_url: https://cms-dev.github.io/ + +repo_name: cms-dev/cms +repo_url: https://github.com/cms-dev/cms + +theme: + name: material + logo: assets/logo.svg + favicon: assets/favicon.png + +markdown_extensions: + - attr_list + - footnotes + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + +plugins: + - glightbox + - redirects: + redirect_maps: + 'screenshots.html': 'screenshots.md' + 'testimonials.html': 'testimonials.md' + 'contribute.html': 'contribute.md' + 'related.html': 'related.md' + +nav: + - index.md + - screenshots.md + - testimonials.md + - contribute.md + - related.md + - contact.md diff --git a/related.html b/related.html deleted file mode 100644 index 7894479..0000000 --- a/related.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - - - - - - CMS :: Related - - - - -
-
- -
- -

CMS :: Related

-

Contest Management System

-

- Build Status - Codecov Status - Get Support on Telegram -

-
- - - -
- -

This page lists some resources that may be useful for CMS users. If -you are aware of others, please let us know (see contact information -on the main page).

- -

Related projects

- -

We are aware of the following projects related to CMS. These -projects are not developed nor maintained by us, hence we do not give -guarantees or support for them.

- -Forks -
    -
  • - A "social" fork - of CMS , started by William Di Luigi and Luca Versari, adding some - social features to CMS (for example, a forum), and used by the Italian - Olympiads. -
  • -
  • - A list - of CMS forks used by the local Olympiads organizers of a number of - countries, each with its own peculiar set of features that might not yet be - available in the official CMS version. -
  • -
- -Utilities -
    -
  • - Support - scripts used in the University of Trento, in particular - start-up scripts for Upstart and systemd, by Cristian Consonni. -
  • -
- -Tutorial - - -

Others potentially useful patches for CMS can be found in -the pull requests -list and among -the many GitHub forks -of CMS. Many of them are being considered for inclusion in the -official CMS repository.

- -

Reports on CMS

- -

CMS has used in many national and international contests. Some -contest organizers wrote detailed reports on their experience with -CMS, which may be useful for other contest hosts using or considering -to use CMS. In particular, many of them discuss the problems to -address in order to use CMS with several hundreds of users.

- - - -

Papers on CMS

- -

CMS has been described in the following papers by CMS core -developers. They can be useful for who wants to catch a bird's eye - overview of the inner CMS structure.

- -
    -
  • - Stefano Maggiolo, Giovanni Mascellani, Luca Wehrstedt. CMS: a - growing grading system. Olympiads in - Informatics 8 (2014), - 123–131. Full - text. -
  • -
  • - Stefano Maggiolo, Giovanni Mascellani. Introducing CMS: A - Contest Management System. Olympiads in - Informatics 6 (2012), - 86–99. Full - text. -
  • -
- - - - diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..18d2b2e --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +mkdocs-material +mkdocs-glightbox +mkdocs-redirects diff --git a/screenshots.html b/screenshots.html deleted file mode 100644 index 3bbf051..0000000 --- a/screenshots.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - CMS :: Main - - - -
-
- -
- -

CMS :: Main

-

Contest Management System

-

- Build Status - Codecov Status - Get Support on Telegram -

-
- - - -
- - - -
-
- - - - - - diff --git a/screenshots/aws1.small.png b/screenshots/aws1.small.png deleted file mode 100644 index 9888eea..0000000 Binary files a/screenshots/aws1.small.png and /dev/null differ diff --git a/screenshots/aws2.small.png b/screenshots/aws2.small.png deleted file mode 100644 index f3f7bbb..0000000 Binary files a/screenshots/aws2.small.png and /dev/null differ diff --git a/screenshots/aws3.small.png b/screenshots/aws3.small.png deleted file mode 100644 index dd3b4e2..0000000 Binary files a/screenshots/aws3.small.png and /dev/null differ diff --git a/screenshots/aws4.small.png b/screenshots/aws4.small.png deleted file mode 100644 index 02e3ad9..0000000 Binary files a/screenshots/aws4.small.png and /dev/null differ diff --git a/screenshots/cws1.small.png b/screenshots/cws1.small.png deleted file mode 100644 index fe7497d..0000000 Binary files a/screenshots/cws1.small.png and /dev/null differ diff --git a/screenshots/cws2.small.png b/screenshots/cws2.small.png deleted file mode 100644 index a155626..0000000 Binary files a/screenshots/cws2.small.png and /dev/null differ diff --git a/screenshots/cws3.small.png b/screenshots/cws3.small.png deleted file mode 100644 index 242d135..0000000 Binary files a/screenshots/cws3.small.png and /dev/null differ diff --git a/screenshots/rws1.small.png b/screenshots/rws1.small.png deleted file mode 100644 index c315ca0..0000000 Binary files a/screenshots/rws1.small.png and /dev/null differ diff --git a/screenshots/rws2.small.png b/screenshots/rws2.small.png deleted file mode 100644 index cfc20ad..0000000 Binary files a/screenshots/rws2.small.png and /dev/null differ diff --git a/stylesheets/print.css b/stylesheets/print.css deleted file mode 100644 index 2a0f674..0000000 --- a/stylesheets/print.css +++ /dev/null @@ -1,223 +0,0 @@ -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} -body { - line-height: 1; -} -ol, ul { - list-style: none; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -body { - font-size: 13px; - line-height: 1.5; - font-family: 'Helvetica Neue', Helvetica, Arial, serif; - color: #000; -} - -a { - color: #d5000d; - font-weight: bold; -} - -header { - margin-top: 15px; -} - -header h1 { - font-weight: bold; - letter-spacing: -1px; - font-size: 48px; - color: #303030; - line-height: 1.2; -} - -header h2 { - letter-spacing: -1px; - font-size: 24px; - color: #aaa; - font-weight: normal; - line-height: 1.3; -} -#downloads { - display: none; -} -#main_content { - padding-top: 20px; -} - -code, pre { - font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Monospace; - color: #222; - margin-bottom: 30px; - font-size: 12px; -} - -code { - padding: 0 3px; -} - -pre { - border: solid 1px #ddd; - padding: 20px; - overflow: auto; -} -pre code { - padding: 0; -} - -ul, ol, dl { - margin-bottom: 20px; -} - - -/* COMMON STYLES */ - -table { - width: 100%; - border: 1px solid #ebebeb; -} - -th { - font-weight: 500; -} - -td { - border: 1px solid #ebebeb; - text-align: center; -} - -form { - background: #f2f2f2; - padding: 20px; - -} - - -/* GENERAL ELEMENT TYPE STYLES */ - -h1 { - font-size: 2.8em; -} - -h2 { - font-size: 22px; - font-weight: bold; - color: #303030; - margin-bottom: 8px; -} - -h3 { - color: #d5000d; - font-size: 18px; - font-weight: bold; - margin-bottom: 8px; -} - -h4 { - font-size: 16px; - color: #303030; - font-weight: bold; -} - -h5 { - font-size: 1em; - color: #303030; -} - -h6 { - font-size: .8em; - color: #303030; -} - -p { - margin-bottom: 20px; -} - -a { - text-decoration: none; -} - -p a { - font-weight: 400; -} - -blockquote { - font-size: 1.6em; - border-left: 10px solid #e9e9e9; - margin-bottom: 20px; - padding: 0 0 0 30px; -} - -ul li { - list-style: disc inside; - padding-left: 20px; -} - -ol li { - list-style: decimal inside; - padding-left: 3px; -} - -dl dd { - font-style: italic; - font-weight: 100; -} - -footer { - margin-top: 40px; - padding-top: 20px; - padding-bottom: 30px; - font-size: 13px; - color: #aaa; -} - -footer a { - color: #666; -} - -/* MISC */ -.clearfix:after { - clear: both; - content: '.'; - display: block; - visibility: hidden; - height: 0; -} - -.clearfix {display: inline-block;} -* html .clearfix {height: 1%;} -.clearfix {display: block;} \ No newline at end of file diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css deleted file mode 100644 index 781e7ac..0000000 --- a/stylesheets/stylesheet.css +++ /dev/null @@ -1,413 +0,0 @@ -/* http://meyerweb.com/eric/tools/css/reset/ - v2.0 | 20110126 - License: none (public domain) -*/ -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} -body { - line-height: 1; -} -ol, ul { - list-style: none; -} -blockquote, q { - quotes: none; -} -blockquote:before, blockquote:after, -q:before, q:after { - content: ''; - content: none; -} -table { - border-collapse: collapse; - border-spacing: 0; -} - -/* LAYOUT STYLES */ -html { - overflow-y: scroll; -} - -body { - font-size: 1em; - line-height: 1.5; - background: #e7e7e7 url(../images/body-bg.png) 0 0 repeat; - font-family: 'Helvetica Neue', Helvetica, Arial, serif; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); - color: #1d1d1d; -} - -a { - color: #d5000d; -} -a:hover { - color: #c5000c; -} - -header { - margin-top: 15px; -} - -header h1 { - font-family: 'Chivo', 'Helvetica Neue', Helvetica, Arial, serif; font-weight: 900; - letter-spacing: -1px; - font-size: 48px; - color: #303030; - line-height: 1.2; -} - -header h2 { - letter-spacing: -1px; - font-size: 24px; - color: #aaa; - font-weight: normal; - line-height: 1.3; -} - -#container { - min-height: 595px; -} - -.inner { - width: 620px; - margin: 0 auto; -} - -#container .inner img { - max-width: 100%; -} - -#downloads { - margin-bottom: 40px; -} - -a.button, -div.button { - -moz-border-radius: 30px; - -webkit-border-radius: 30px; - border-radius: 30px; - border-top: solid 1px #cbcbcb; - border-left: solid 1px #b7b7b7; - border-right: solid 1px #b7b7b7; - border-bottom: solid 1px #b3b3b3; - color: #303030; - line-height: 25px; - font-weight: bold; - font-size: 15px; - display: inline-block; - margin-right: 14px; - background: #fdfdfd; /* Old browsers */ - background: -moz-linear-gradient(top, #fdfdfd 0%, #f2f2f2 100%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fdfdfd), color-stop(100%,#f2f2f2)); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* Opera 11.10+ */ - background: -ms-linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* IE10+ */ - background: linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fdfdfd', endColorstr='#f2f2f2',GradientType=0 ); /* IE6-9 */ - -webkit-box-shadow: 10px 10px 5px #888; - -moz-box-shadow: 10px 10px 5px #888; - box-shadow: 0px 1px 5px #e8e8e8; -} - -a.button { - padding: 12px 8px 12px 8px; - float: left; - width: 179px; - margin-top: 5px; - margin-bottom: 5px; -} - -a.button:hover, -div.button:hover { - border-top: solid 1px #b7b7b7; - border-left: solid 1px #b3b3b3; - border-right: solid 1px #b3b3b3; - border-bottom: solid 1px #b3b3b3; - background: #fafafa; /* Old browsers */ - background: -moz-linear-gradient(top, #fdfdfd 0%, #f6f6f6 100%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fdfdfd), color-stop(100%,#f6f6f6)); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #fdfdfd 0%,#f6f6f6 100%); /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, #fdfdfd 0%,#f6f6f6 100%); /* Opera 11.10+ */ - background: -ms-linear-gradient(top, #fdfdfd 0%,#f6f6f6 100%); /* IE10+ */ - background: linear-gradient(top, #fdfdfd 0%,#f6f6f6, 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fdfdfd', endColorstr='#f6f6f6',GradientType=0 ); /* IE6-9 */ -} - - -a.button span { - padding-left: 50px; - display: block; - height: 23px; -} - -div.button a { - display: inline-block; - height: 23px; - border-left: 1px solid #b7b7b7; - padding: 10px 10px 12px 10px; -} - -div.button a:first-child { - border-left: 0; - padding-left: 20px; -} - -div.button a:last-child { - padding-right: 20px; -} - -#download-zip span { - background: transparent url(../images/zip-icon.png) 12px 50% no-repeat; -} -#download-tar-gz span { - background: transparent url(../images/tar-gz-icon.png) 12px 50% no-repeat; -} -#view-on-github span { - background: transparent url(../images/octocat-icon.png) 12px 50% no-repeat; -} -#read-docs span { - background: transparent url(../images/readthedocs-icon.png) 12px 50% no-repeat; -} -#read-docs { - margin-right: 0; -} - -code, pre { - font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Monospace; - color: #222; - margin-bottom: 30px; - font-size: 14px; -} - -code { - padding: 0 3px; -} - -pre { - padding: 20px; - background: #303030; - color: #f2f2f2; - text-shadow: none; - overflow: auto; -} -pre code { - color: #f2f2f2; - background-color: #303030; - border: none; - padding: 0; -} - -ul, ol, dl { - margin-bottom: 20px; -} - - -/* COMMON STYLES */ - -hr { - height: 1px; - line-height: 1px; - margin-top: 1em; - padding-bottom: 1em; - border: none; - background: transparent url('../images/hr.png') 50% 0 no-repeat; -} - -strong { - font-weight: bold; -} - -em { - font-style: italic; -} - -table { - width: 100%; - border: 1px solid #ebebeb; -} - -th { - font-weight: 500; -} - -td { - border: 1px solid #ebebeb; - text-align: center; -} - -form { - background: #f2f2f2; - padding: 20px; -} - - -/* GENERAL ELEMENT TYPE STYLES */ - -h1 { - font-size: 32px; -} - -h2 { - font-size: 22px; - font-weight: bold; - color: #303030; - margin-bottom: 8px; -} - -h3 { - color: #d5000d; - font-size: 18px; - font-weight: bold; - margin-bottom: 8px; -} - -h4 { - font-size: 16px; - color: #303030; - font-weight: bold; -} - -h5 { - font-size: 1em; - color: #303030; -} - -h6 { - font-size: .8em; - color: #303030; -} - -h1 a.permalink, h2 a.permalink, h3 a.permalink, -h4 a.permalink, h5 a.permalink, h6 a.permalink { - display: none; - color: #6F6F6F; -} - -h1:hover a.permalink, h2:hover a.permalink, h3:hover a.permalink, -h4:hover a.permalink, h5:hover a.permalink, h6:hover a.permalink { - display: inline-block; -} - -p { - margin-bottom: 20px; -} - -a { - text-decoration: none; -} - -p a { - font-weight: 400; -} - -blockquote { - font-size: 1.6em; - border-left: 10px solid #e9e9e9; - margin-bottom: 20px; - padding: 0 0 0 30px; -} - -ul li { - list-style: disc inside; - padding-left: 20px; - padding-bottom: 3px; - text-indent: -18px; - margin-left: 18px; -} - -ol li { - list-style: decimal inside; - padding-left: 3px; - padding-bottom: 3px; - text-indent: -18px; - margin-left: 18px; -} - -dl dt { - color: #303030; -} - -footer { - background: transparent url('../images/hr.png') 0 0 no-repeat; - margin-top: 40px; - padding-top: 20px; - padding-bottom: 30px; - font-size: 13px; - color: #aaa; -} - -footer a { - color: #666; -} -footer a:hover { - color: #444; -} - -/* MISC */ -.clearfix:after { - clear: both; - content: '.'; - display: block; - visibility: hidden; - height: 0; -} - -.clearfix {display: inline-block;} -* html .clearfix {height: 1%;} -.clearfix {display: block;} - -/* #Media Queries -================================================== */ - -/* Smaller than standard 960 (devices and browsers) */ -@media only screen and (max-width: 959px) {} - -/* Tablet Portrait size to standard 960 (devices and browsers) */ -@media only screen and (min-width: 768px) and (max-width: 959px) {} - -/* All Mobile Sizes (devices and browser) */ -@media only screen and (max-width: 767px) { - header { - padding-top: 10px; - padding-bottom: 10px; - } - #downloads { - margin-bottom: 25px; - } - #download-zip, #download-tar-gz { - display: none; - } - .inner { - width: 94%; - margin: 0 auto; - } -} - -/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */ -@media only screen and (min-width: 480px) and (max-width: 767px) {} - -/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */ -@media only screen and (max-width: 479px) {} diff --git a/testimonials.html b/testimonials.html deleted file mode 100644 index 3f7bc17..0000000 --- a/testimonials.html +++ /dev/null @@ -1,587 +0,0 @@ - - - - - - - - - - - - - CMS :: Testimonials - - - - -
-
- -
- -

CMS :: Testimonials

-

Contest Management System

-

- Build Status - Codecov Status - Get Support on Telegram -

-
- - - -
- -

CMS has been used in several official and unofficial contests. In particular we are aware of the following.

- -

International competitions

-
    -
  • - - IOI - (International Olympiad in Informatics) - -
      -
    • - - IOI 2012 - - Sirmione and Montichiari, Italy - September 2012 -
    • -
    • - - IOI 2013 - - Brisbane, Australia - July 2013 -
    • -
    • - - IOI 2014 - - Taipei, Taiwan - July 2014 -
    • -
    • - - IOI 2015 - - Almaty, Kazakhstan - July 2015 -
    • -
    • - - IOI 2017 - - Tehran, Iran - July 2017 -
    • -
    -
  • -
  • - - FARIO - (French-Australian Regional Informatics Olympiad) - - -
  • -
  • - - BOI (Baltic Olympiad in Informatics) - -
      -
    • - - BOI 2014 (Baltic Olympiad in Informatics) - - Palanga, Lithuania - April 2014 -
    • -
    -
  • -
  • - - APIO - (Asia-Pacific Informatics Olympiad) - -
      -
    • - - APIO 2014 - - Almaty, Kazakhstan - May 2014 -
    • -
    • - - APIO 2016 - - Republic of Korea - May 2016 -
    • -
    -
  • - - CEOI - (Central European Olympiad in Informatics) - -
      -
    • - - CEOI 2014 - - Jena, Germany - June 2014 -
    • -
    • - - CEOI 2015 - - Brno, Czech Republic - June 2015 -
    • -
    -
  • - - RMI - (Romanian Master of Informatics) - -
      -
    • - RMI 2014 - Bucharest, Romania - October 2014 -
    • -
    -
  • -
- -

National competitions

-
    -
  • - - OII - (Italian Olympiad in Informatics) - -
      -
    • - OII 2011 - Sirmione, Italy - 30 September 2011 -
    • -
    • - OII 2012 - Sirmione, Italy - 12 October 2012 -
    • -
    • - OII 2013 - Salerno, Italy - 13 September 2013 -
    • -
    • - OII 2014 - Salerno, Italy - 19 September 2014 -
    • -
    • - OII 2015 - Castiglione dei Pepoli, Italy - 17-19 September 2015 -
    • -
    • - OII 2016 - Catania, Italy - 15-17 September 2016 -
    • -
    -
  • -
  • - - AIIO 2012 - (Australian Invitational Informatics Olympiad) - - February 2012 -
  • -
  • - - Croatian high school programming contest 2013 - - March 2013 -
  • -
  • - - FIT (Festival of Innovative Technologies) - -
      -
    • - FIT 2013 - Slovenia - April 2013 -
    • -
    • - FIT 2014 - Slovenia - April 2014 -
    • -
    • - FIT 2017 - Slovenia - Match 2014 -
    • -
    -
  • -
  • - - NIO (Norwegian Olympiad in Informatics) - - Norway - 2013-2016 -
  • -
  • - - OCI 2013 (Chilean Olympiads in Informatics) - - May 2013 -
  • -
  • - - Slovenian Invitational Informatics Olympiad - - May 2013 -
  • -
  • - - JOI Open Contest - (Japanese Olympiad in Informatics) - - -
  • -
  • - - KOI (Korean Olympiad in Informatics) - -
      -
    • - KOI 2013 - Cheongju, South Korea - 2 August 2013 -
    • -
    • - KOI 2014 - Suncheon, South Korea - 11 July 2014 -
    • -
    -
  • -
  • - - Taiwan High School Programming Contest - - 22 December 2013 -
  • -
  • - - beOI - (Belgian Olympiad in Informatics) - -
      -
    • - beOI 2014 - Leuven, Belgium - 8 February 2014 -
    • -
    • - beOI 2015 - Brussels, Belgium - 2 May 2015 -
    • -
    -
  • -
  • - - TOP'2014 (Tunisian Olympiad in Programming) - - March 2014 -
  • -
  • - - LMIO - (Lithuanian Olympiad in Informatics) - -
      -
    • - LMIO 2014 - March 2014 -
    • -
    • - LMIO 2015 - 21, 22 March 2015 -
    • -
    -
  • -
  • - - Argentinian National Olympiad in Informatics - - 2014-2016 -
  • -
  • - - Argentinian IOI Selection Contest - - 2014-2016 -
  • -
  • - - MCO - (Malaysian Computing Olympiad) - -
      -
    • - - MCO 2014 - - 19, 20 April 2014 -
    • -
    • - - MCO 2015 - - 18, 19 April 2015 -
    • -
    -
  • -
  • - - Mongolian National Informatics Olympiad - -
      -
    • - - Mongolian Olympiad in Informatics 2015 - - 26 April 2015 -
    • -
    • - - Mongolian Olympiad in Informatics 2018 - - 11-13 May 2018 -
    • -
    -
  • -
  • - - All-Ireland Programming Olympiad 2016 - - 20 February 2016 -
  • -
  • - - LIO - (Latvian Olympiad in Informatics) - -
      -
    • - LIO 2017 - Liepāja, Latvia - March 2017 -
    • -
    • - LIO 2018 - Valmiera, Latvia - March 2018 -
    • -
    -
  • -
  • - - SAPO - (South African Programming Olympiad) - -
      -
    • - SAPO 2015 - Cape Town, South Africa - 10 October 2015 -
    • -
    • - SAPO 2016 - Cape Town, South Africa - 8 October 2016 -
    • -
    • - SAPO 2017 - Cape Town, South Africa - 7 October 2017 -
    • -
    • - SAPO 2018 - Johannesburg, South Africa - 29 September 2018 -
    • -
    -
  • -
- -

Local competitions

-
    -
  • - - Taipei High School Programming Contest - - Taiwan - October 2012 -
  • -
  • - - Taipei High School Programming Contest - - Taiwan - 1 November 2013 -
  • -
  • - - ABC - (Algoritmi Bergamo Contest) - -
      -
    • - ABC 2013 - Bergamo, Italy - 18 May 2013 -
    • -
    • - ABC 2014 - Bergamo, Italy - 17 May 2014 -
    • -
    -
  • -
  • - - KTSS (High schools competition) - - Sarajevo, Bosnia and Herzegovina - 12 April 2014 -
  • -
  • - - KTOS (Elementary schools competition) - - Sarajevo, Bosnia and Herzegovina - 26 April 2014 -
  • -
  • - - Local selection for ACM ICPC regionals - - Cesena, Italy - 22, 27 October 2014 -
  • -
- -

Training

-
    -
  • - Training camps for the selections of the national IOI teams of - Australia, Egypt, Germany, India, Ireland, Israel, Italy, Japan, - Latvia, Serbia, South Africa, South Korea and Taiwan. -
  • -
- -

Other

-
    -
  • - Laboratory exercises and exams of the course "Algorithms and data - structures" at University of Trento, Italy (year 2011-2012). -
  • -
- -

- If you used CMS for a contest, selection, or a similar event, and - want to publicize this information, we would be more than happy to - hear from you and add it to this list. -

- -
-
- - - -