Changelog
On Perfectionism in Software Development
People say that perfectionism will ruin an artist. The reason is that a piece of art will always have some room for improvement. It is the artist's choice whether to call it a day after sketching for an hour or finally drop their brushes after polishing for 5 years. I believe the same goes for software development and I don't want to be one of those developers who tag their latest release v0.263.0
just because they refuse to believe their baby project is mature enough to be v1.0.0
. They have the delusion that v1.0.0
will be such a huge breakpoint for their project and their life. That v1.0.0
means an irreversible full stop for all the efforts and thinking they've made. That, somehow, the increment of the major version number from 0 to 1 and the refreshment of the minor version number back to 0 is equivalent to seeing their child crawling out of the womb. They'll be the dad in the ER room holding a camera in full panic mode trying to film this beautiful yet visually horrifying magic trick that's been conducted billions of times in the past. But perfection is a holy grail. It is something we all want but, deep down inside, we know it's not achievable. That's why the waterfall model fails in most software projects while agile prevails. Instead of thinking there's a destination line somewhere, we should treat the development as an exploration. We put our footsteps in the places we've been to while envisioning all the potential in the future. This is a healthier mindset for developers when thinking about their projects. Maybe even for everyone when thinking about their lives.
Having said all of that, here's the main part of the changelog:
ADD
- An AST-based code similarity detection algorithm loosely based on this paper
- Support for partial code checking
- A command-line interface
- C and Python3 frontends
Acknowledgement
Thanks to @wabscale @GusSand @synoet @nickelpro for all the brainstorming and discussions before and after this tool comes to fruition. Thanks to @rishyak for giving this tool a shot and giving me feedback and feature requests. Some of those are implemented in this release. I'll slowly add others in future iterations.