# Software Quality Award, 2020

Source: https://www.yegor256.com/2019/11/03/award-2020.html

{% badge /images/andreea/quality-award.svg XXL %}

This is the _sixth_ year of the
[Software Quality Award](/award.html). The maximum prize
is still the same---**$4,096**.
The rules are still the same. Read on.
Previous years are here:
[2015]({% pst 2015/apr/2015-04-16-award %}),
[2016]({% pst 2015/oct/2015-10-17-award-2016 %}),
[2017]({% pst 2016/oct/2016-10-23-award-2017 %}),
[2018]({% pst 2017/oct/2017-10-24-award-2018 %}),
[2019]({% pst 2018/sep/2018-09-30-award-2019 %}).

This year we do it together with
[KaiCode](https://www.kaicode.org),
sponsored by [Huawei](https://www.huawei.com).


The form is now closed.

Rules:

  * One person can submit only one project.

  * Submissions are accepted until September 1, 2020.

  * I will check the commit history to make sure you're the main contributor to the project.

  * I reserve the right to reject any submission without explanation.

  * All submissions will be published on this page (including rejected ones).

  * Results will be announced October 15, 2020 on this page and by email (or maybe a bit later).

  * The best project will receive $4,096
    (I may split this amount among a few projects and may give away a smaller amount!).

  * Final decisions will be made by me and are not negotiable
    (although I may invite other people to help me make the right decision).

  * Winners that received any cash prizes in previous years can't submit again.

{% youtube Z70PMGaxGhY %}

Each project must be:

  * Open source (in GitHub).

  * At least 4,096 lines of code ([`cloc`](https://www.npmjs.com/package/cloc) without any arguments)
    _and_ at least 16,384 [hits-of-code]({% pst 2014/nov/2014-11-14-hits-of-code %}).

  * At least one year old (the age of the first commit).

  * Object-oriented (that's the only thing I understand).

The best project is selected using this [criteria]({% pst 2015/jun/2015-06-08-deadly-sins-software-project %}).

What doesn't matter:

  * Popularity. Even if nobody is using your
    product, it is still eligible for this award. I don't care about
    popularity; quality is the key.

  * Programming language. I believe that any language, used correctly,
    can be applied to design a high-quality product.

  * Buzz and trends. Even if your project is yet another parser of command
    line arguments, it's still eligible for the award. I don't care about
    your marketing position; quality is all.

By the way, if you want to sponsor this award and increase the bonus,
[email me](mailto:me@yegor256.com).

There were 67 projects submitted.
33 of them participated in the competition (in alphabetic order):

  * [`altiore/lorder.ui`](https://github.com/altiore/lorder.ui)---@fellahi-ali
  * [`btraceio/btrace`](https://github.com/btraceio/btrace) - @iakunin
  * [`catalyst-team/catalyst`](https://github.com/catalyst-team/catalyst)---@iakunin
  * [`coderaiser/cloudcmd`](https://github.com/coderaiser/cloudcmd)---@razzwan
  * [`crocinc/sql-boot`](https://github.com/crocinc/sql-boot)---@iakunin
  * [`cybercog/laravel-love`](https://github.com/cybercog/laravel-love)---@ziyavakhobov
  * [`decorators-squad/eo-yaml`](https://github.com/decorators-squad/eo-yaml)---@iakunin
  * [`embox/embox`](https://github.com/embox/embox)---@fellahi-ali
  * [`flyimg/flyimg`](https://github.com/flyimg/flyimg)---@ziyavakhobov
  * [`gentee/gentee`](https://github.com/gentee/gentee)---@fellahi-ali
  * [`gulpjs/gulp`](https://github.com/gulpjs/gulp)---@razzwan
  * [`hdouss/jeometry`](https://github.com/hdouss/jeometry)---@iakunin
  * [`igorwojda/android-showcase`](https://github.com/igorwojda/android-showcase)---@iakunin
  * [`imrafaelmerino/json-values`](https://github.com/imrafaelmerino/json-values)---@fellahi-ali
  * [`javascript-obfuscator/javascript-obfuscator`](https://github.com/javascript-obfuscator/javascript-obfuscator)---@iakunin
  * [`mcjtymods/rftoolscontrol`](https://github.com/mcjtymods/rftoolscontrol/tree/1.15)---@fellahi-ali
  * [`nesbox/tic-80`](https://github.com/nesbox/tic-80)---@iakunin
  * [`onqtam/doctest`](https://github.com/onqtam/doctest)---@fellahi-ali
  * [`openfeign/feign`](https://github.com/openfeign/feign)---@fellahi-ali
  * [`pixelpusher/liveprinter`](https://github.com/pixelpusher/liveprinter)---@iakunin
  * [`pmed/v8pp`](https://github.com/pmed/v8pp)---@fellahi-ali
  * [`reactos/reactos`](https://github.com/reactos/reactos)---@fellahi-ali
  * [`reinterpretcat/vrp`](https://github.com/reinterpretcat/vrp)---@iakunin
  * [`scalikejdbc/scalikejdbc`](https://github.com/scalikejdbc/scalikejdbc)---@iakunin
  * [`scommons/scommons-react-native`](https://github.com/scommons/scommons-react-native)---@fellahi-ali
  * [`stiffstream/restinio`](https://github.com/stiffstream/restinio)---@iakunin
  * [`traccar/traccar`](https://github.com/traccar/traccar)---@fellahi-ali
  * [`tyvik/geopuzzle`](https://github.com/tyvik/geopuzzle)---@fellahi-ali
  * [`victorx64/devrating`](https://github.com/victorx64/devrating)---@fellahi-ali
  * [`wentout/mnemonica`](https://github.com/wentout/mnemonica)---@razzwan
  * [`yuriykulikov/alarmclock`](https://github.com/yuriykulikov/alarmclock)---@fellahi-ali
  * [`z7zmey/php-parser`](https://github.com/z7zmey/php-parser)---@iakunin

Disqualified (either too small or too young or some other violation of the rules):

  * [`32xlevel/iscanner`](https://github.com/32xlevel/iscanner)---@iakunin
  * [`a5kin/xentica`](https://github.com/a5kin/xentica/)---@iakunin
  * [`brucegithub/namespace-protector`](https://github.com/brucegithub/namespace-protector)---@iakunin
  * [`chaqmoq`](https://github.com/chaqmoq)
  * [`covid19cz/erouska-android`](https://github.com/covid19cz/erouska-android)---@iakunin
  * [`dgroup/lazylead`](https://github.com/dgroup/lazylead)
  * [`dotenv-linter/dotenv-linter`](https://github.com/dotenv-linter/dotenv-linter)---@fellahi-ali
  * [`fagnermartinsbrack/jack-the-moneylender`](https://github.com/fagnermartinsbrack/jack-the-moneylender)---@Razzwan
  * [`fleksl/avatar-maker`](https://github.com/fleksl/avatar-maker)---@fellahi-ali
  * [`geftimov/android-pathview`](https://github.com/geftimov/android-pathview)---@iakunin
  * [`iakunin/codexia-bot`](https://github.com/iakunin/codexia-bot)
  * [`ibitcy/eo-locale`](https://github.com/ibitcy/eo-locale)
  * [`ligi/survivalmanual`](https://github.com/ligi/survivalmanual)
  * [`mangstadt/print-from-phone`](https://github.com/mangstadt/print-from-phone)
  * [`mayokunthefirst/instant-weather`](https://github.com/mayokunthefirst/instant-weather)
  * [`msaaddev/github-interact-cli`](https://github.com/msaaddev/github-interact-cli)
  * [`muhammad-usama-aleem/glasses-to-aid-the-blind`](https://github.com/muhammad-usama-aleem/glasses-to-aid-the-blind)
  * [`munusphp/munus`](https://github.com/munusphp/munus)---@ziyavakhobov
  * [`nexinput`](https://github.com/nexinput)
  * [`pikvm/pikvm`](https://github.com/pikvm/pikvm)
  * [`popovevgeniy/swgf`](https://github.com/popovevgeniy/swgf)
  * [`pric/pric`](https://github.com/pric/pric)
  * [`r57zone/easynotes`](https://github.com/r57zone/easynotes)
  * [`reddec/trusted-cgi`](https://github.com/reddec/trusted-cgi)
  * [`retejs`](https://github.com/retejs)---@fellahi-ali
  * [`rey5137/jsonbatch`](https://github.com/rey5137/jsonbatch)
  * [`rus4j/trigger-collections`](https://github.com/rus4j/trigger-collections)
  * [`sgjava/java-periphery`](https://github.com/sgjava/java-periphery)
  * [`stagedml/stagedml`](https://github.com/stagedml/stagedml)
  * `tolsi/dataragon`
  * [`totumonline/totum-mit`](https://github.com/totumonline/totum-mit)---@ziyavakhobov
  * [`trueopenvr`](https://github.com/trueopenvr)
  * [`wildfish/crispy-forms-gds`](https://github.com/wildfish/crispy-forms-gds)
  * [`yiisoft`](https://github.com/yiisoft) - https://github.com/ZiyaVakhobov
  * [`pholser/junit-quickcheck`](https://github.com/pholser/junit-quickcheck) (already won the award in 2016)

My hot list is this (I review each of them myself):

`coderaiser/cloudcmd` (first review by @razzwan)

  * Commits are not linked to issues, which makes history hard to track
  * Release procedure is not automated (I didn't find the script and/or the logs of each release)
  * Many code comments are written in Russian (WTF?); not every function documented
  * I'm not sure this really is OOP... I wasn't able to find classes or objects (maybe it's just me)
  * Test coverage is not visible anywhere (I think it's not under control)

`decorators-squad/eo-yaml` (by @iakunin)

  * Looks cool, no complaints

`hdouss/jeometry` (by @iakunin)

  * Looks cool, no complaints

`victorx64/devrating` (by @fellahi-ali)

  * Looks cool, no complaints

It's hard to make the decision. Three projects are very good and they all deserve
the prize.

15 Nov 2020:
I finally made the decision. This year there are three winners.
Each of them gets $1,024.

Here are your badges:

<img src="//www.yegor256.com/images/award/2020/winner-amihaiemil.png" style="height:45px;" alt='winner'/>
&nbsp;
<img src="//www.yegor256.com/images/award/2020/winner-hdouss.png" style="height:45px;" alt='winner'/>
&nbsp;
<img src="//www.yegor256.com/images/award/2020/winner-victorx64.png" style="height:45px;" alt='winner'/>

Put this code into GitHub `README` (replace `???` with your GitHub name in the URL):

```text
<a href="https://www.yegor256.com/2019/11/03/award-2020.html">
  <img src="//www.yegor256.com/images/award/2020/winner-???.png"
  style="height:45px;" alt='winner'/></a>
```

Thanks to everybody for your participation! See you
[next year]({% pst 2020/nov/2020-11-15-award-2021 %}).
