This is the forth year of the Software Quality Award. The prize is still the same—$4,096. The rules are still the same. Read on. Previous years are here: 2015, 2016, 2017.
Rules:
One person can submit only one project.
Submissions are accepted until September 1, 2018.
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, 2018 on this page and by email.
The best project will receive $4,096 (I may split this amount among a few projects).
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.
Each project must be:
Open source (in GitHub).
At least 10,000 lines of code (
cloc
without any arguments).At least one year old.
Object-oriented (that’s the only thing I understand).
The best project is selected using this criteria.
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.
There were 49 projects submitted (in alphabetic order):
aatxe/irc
AdamsLair/duality
akaigoro/df4j
Alecu100/CodeAnalyzer
amihaiemil/comdor
ashtonhogan/tacinga
banq/jdonframework
cssinjs/jss
dgroup/docker-unittests
dmfs/ContentPal
driver733/VK-Uploader
facile-it/moka
filfreire/CommentCop
FindMyFriends/api
floralvikings/jira-connector
flyimg/flyimg
Guseyn/cutie
Hack23/cia
HDouss/jeometry
infotech-group/android-drawable-dsl
intuit/karate
Iprogrammerr/Bright-Server
javascript-obfuscator/javascript-obfuscator
jeremybrooks/SuprSetr
jri/deepamehta
ligi/SurvivalManual
mP1/walkingkooka
nem-toolchain/nem-toolchain
onqtam/doctest
pdacostaporto/representations
pmd/pmd
pmed/v8pp
postaddictme/instagram-php-scraper
rectorphp/rector
ribtoks/xpiks
Riduidel/gaedo
RobinJ1995/DistroHopper
scalikejdbc/scalikejdbc
scireum/sirius-kernel
seratch/jslack
shlinkio/shlink
smarr/SOMns/
smartcommunitylab/smartcampus.gamification
sql-boot/sql-boot
traccar/traccar
umple/umple
WeGoFoods
WriteThemFirst/approvals-java
yfpeng/bioc
These kind people helped me review them: Ziyavuddin Vakhobov (10), Filipe Freire (10), Vedran Vatavuk (9), Silas Reinagel (7), Paulo Lobo (6), Sergey Kapralov (3), Vytautas Žurauskas (3), Alexey Semenyuk (1).
This is the summary of everything they sent me: award-2018.txt. I will pick the winner in the next few days, stay tuned!
This time I paid a lot of attention to what reviewers were saying. Obvious show stoppers for me where:
- Absence of CI
- Absence of releases
- Absence of issues and pull requests
- Absence of static analysis
- Absence of unit tests and/or coverage control
- Presence of NULL
- Presence of static methods and/or utility classes
- Presence of global variables of functions
Because of that, many projects were ruled out (they are at the bottom of the text file). There are three sections in the text file. The first one is the hot list, which I reviewed myself. The second one contains those projects I liked, but decided not to put into the hot list. The last section contains repositories, which seem to happen in the competition by mistake.
I have to say that this year the projects I see are much more disciplined and organized, comparing to what I’ve seen in previous years. Is it the achievement of this competition? I’m not sure, but I’m glad to see what I see.
This is my short-list:
pmed/v8pp
(C++, 5.6K LoC, 27K HoC): 6shlinkio/shlink
(PHP, 12K LoC, 42K HoC): 6FindMyFriends/api
(PHP, 19K LoC, 152K HoC): 6sql-boot/sql-boot
(Java, 4.3K LoC, 110K HoC): 6driver733/VK-Uploader
(Java, 10.5 LoC, 37K HoC): 8dgroup/docker-unittests
(Java, 5.7K LoC, 38K HoC): 8HDouss/jeometry
(Java, 9.7K LoC, 28K HoC): 7onqtam/doctest
(C++, 15K LoC, 113K HoC): 6ribtoks/xpiks
(C++, 430K LoC, 965K HoC): 6javascript-obfuscator/javascript-obfuscator
(JavaScript, 80K LoC, 760K HoC): 6
Some projects in the list are indeed smaller than the required threshold of 10K lines of code. However, their hits-of-code metrics are rather high and the quality of code is high too, that’s why I decided to keep them in the list. Moreover, starting next year the threshold will be lowered down to 4K LoC and 16K HoC. So, we have ten finalists. A more detailed review of each of them you can find in the text file.
There are two winners this year. I decided to distribute $3K this year, unevenly between them. @driver733
gets $2K since his project is obviously the best this year. @dgroup
gets $1K since his project is smaller than the threshold, but it’s still a good repo.
You may ask why I excluded some other small projects from the competition, but left those few in the hot list. The answer is simple: I liked them and didn’t like the others. I do realize that the rules were supposed to be strict, but still. Consider this $1K to @dgroup
—a cheering up bonus.
Thus, congratulations to @driver733
for VK-Uploader
($2,048) and to @dgroup
for docker-unittests
($1,024).
Here are your badges:
Put this code into GitHub README
(replace ???
with your GitHub name in the URL):
<a href="https://www.yegor256.com/2017/10/24/award-2018.html">
<img src="//www.yegor256.com/images/award/2017/winner-???.png"
style="height:45px;" alt='Winner Badge'/></a>
Please, email me to collect your money.
Thanks to everybody for your participation! See you next year.