• How to improve CheckiO missions?

CheckiO missions

Hi guys!

In this article want to emphasize your ability to take part in CheckiO missions improvement. If you are an active CheckiO user who wants to be involved and has some suggestions on how to make some of the missions better, you can absolutely do that. We highly appreciate and welcome your input. And you don't have to worry that you might do more harm than good. First of all, it's all part of the process of learning and contributing to the resource, and secondly, all of the proposed changes to any mission will be considered and checked before applied.

What's important to mention here is that each mission has a GitHub repository, link to which you can see at the bottom of the mission description. Here is the GitHub-link to the mission "Non Unique Elements":

https://github.com/CheckiO-Missions/checkio-task-non-unique-elements

So, when you decide to help improve the mission you'll be working with its repository. To add any changes you just need to use the GitHub's web interface and nothing more.

Let's see how all of this works and what kinds of improvements you can add.

Improving the mission description

Every mission has a certain description to it, so everybody knows what it's about. This description is presented in a form of an HTML file info/task_description.html in the mission repository. Sometimes there might be a misspelling or you can come up with some kind of an additional story. If you are faced with any of these you should feel free to propose your ideas or make your corrections by simply selecting the wrong text, clicking report, and filling out the form.

This is the example of task description for the mission "Non unique elements":

https://github.com/CheckiO-Missions/checkio-task-non-unique-elements/blob/master/info/task_description.html

To propose any changes to the file info/task_description.html you need to sent a Pull request with your suggestions.

In the video below you can check out how it can be easily done through the GitHub's interface.

Improving tests

A list of tests is created for almost every mission to make sure that everything in it is working correctly and responds in an appropriate way to the right and wrong solutions entered in the code editor. The tests themselves are very intuitive in their nature, so sometimes one can be missed. If that happened and you've come across a mission where the wrong solution passed as a correct one, you can absolutely add a test that will provide that from happening ever again.

This is the example of tests for the "Non unique elements" mission:

https://github.com/CheckiO-Missions/checkio-task-non-unique-elements/blob/master/verification/tests.py

In order to add a new test you just have to add a new element to the file "verification/tests.py", propose the changes and create a Pull request.

Improving hints

Everyone needs a helping hand from time to time or a little push to continue moving forward. This same logic is applied to our missions in a form of small hints. Not every mission has them, but there is place for endless variations and amounts of hints which can be added or improved.

We want highlight that the hints are given as a dialogue between the hint provider (you) and the user requesting them. When creating a hint try not to disclose too much information right away. The hints should be small and given one by one, like suggestions which help the user to proceed in a right direction. Not everyone is looking for a complete solution from the start, some just need a little nudge to help them figure out the next steps. If you see a mistake, make a report by simply selecting the wrong text, clicking popup, and filling out the form.

To create a new set of hints you just need to create a new file in the "hints" folder. Here is an example of such a file:

https://github.com/CheckiO-Missions/checkio-task-non-unique-elements/tree/master/hints

Note: In the "hints" folder stored the hints primarily for Python. If you need to create hints for JavaScript you have to create a separate "js" folder. Here is an example of those hints:

https://github.com/CheckiO-Missions/checkio-task-non-unique-elements/blob/master/hints/js/oduvan.html

Here is the video to better demonstrate the process of creating and editing the hints for a specific task.

Improving translation

CheckiO is an international resource and is available for people from all over the world. As much as we want to, we can't always provide the translations to all of the languages. Sometimes our users translate CheckiO missions themselves to make them more understandable and easier to read for others in their country. We highly appreciate their input and encourage our members to help us make CheckiO even more available.

Adding a translation is very easy. All of the available translations are placed in the folder "translations" as a subfolders with the language code. For example, the Russian translation for the task is placed in the folder "translations/ru" (language codes can be found here.):

https://github.com/CheckiO-Missions/checkio-task-non-unique-elements/tree/master/translations/ru

Here is the link to the Russian translation of the task description for the mission:

https://github.com/CheckiO-Missions/checkio-task-non-unique-elements/blob/master/translations/ru/info/task_description.html

The structure of the "translations" folder repeats the structure of the mail folder only in the target language. To add a new translation you'll just have to create a new file in the this folder. The name of your file has to correspond with what you are translating (the task description, the task short description, hints, etc).

In the same way the hints or the task short description can be translated:

https://github.com/CheckiO-Missions/checkio-task-non-unique-elements/blob/master/hints/oduvan.html

You can follow the step-by-step instructions of adding a translation in the video below.

Wrapping up

Me and my team are constantly trying to make CkeckiO better, more interesting and useful to our users. Unfortunately, there are a lot of small things we can't always keep track of. That's why we are so grateful to those who are willing to give their time and effort helping us. We are always open for your ideas and suggestions. When reached a certain level you can create your own missions how you see fit. You can find out about this in more detail in our previous article. Not to forget, the author of the mission that was improved by another user has to accept the Pull request and then synchronise the task in the mission's manager if he considers the proposed changes approved.

PS: If you have any questions or any kind of a feedback on the mater, please, write a comment at the end of this post.

Welcome to CheckiO - games for coders where you can improve your codings skills.

The main idea behind these games is to give you the opportunity to learn by exchanging experience with the rest of the community. Every day we are trying to find interesting solutions for you to help you become a better coder.

Join the Game