Vadim Zaytsev aka @grammarware

Software Modernity modernity


Code modernity research direction is an unfunded endeavour which concerns coevolution of software languages and codebases written in those languages. We analyse new language features that software language engineers put into new versions of their languages, and track adoption of those by users of these languages over time.

We have started bottom-up by tracking the use of certain features over long periods of time, in languages with a strong culture of writing idiomatic code, such as Python. Our findings indicated that some language features have a much slower adoption curve than others; that some others reach a certain saturation level which they never significantly surpass; and that some features even follow the hype cycle curve with their peaks of inflated expectations and troughs of disillusionment.

Then, we proposed the concept of modernity signatures which can be created systematically by traversing parse trees, and accumulated to estimate the age of a codebase. We found out the real software projects differ in their modernity profile, with notable extremes abstaining entirely from new language features (presumably for compatibility and portability reasons) on one hand, and embracing them even before the corresponding major release officially declares them ready for use (possibly for developer effectiveness). Personal taste and coding traditions certainly have their influence there as well.

We have replicated the experiments over many different programming languages, seeking to provide insights into coding practices, codebase health and the evolution of software languages. There is also inherent maintenance value in estimating the age of a codebase without executing the code or performing extensive human inspection. We believe modernity signatures can aid developers in many ways from choosing whether to use a system or how to approach its maintenance, to assessing usefulness of a language feature, thus providing a valuable tool for source code analysis and manipulation.

One of the future steps for us is to attempt to link modernity of a codebase with the quality of the code in it.


Completed constituent projects

Python logo (GPL)
Aamir Farooq (2021)pythonicity analysis
Java Duke logo (BSD)
Berke Güdücü (2022)Java modernity (up to AST level)
PHP logo (CC-BY-SA)
Wouter van den Brink (2022)PHP modernity
Python logo (GPL)
Chris Admiraal (2023)Python modernity (based on netromdk's vermin)
normalisation formulae (vector, z-score, logarithmic)
Cristian Zubcu (2023)effects of normalisation on modernity reports
C# logo (public domain)
Marks Troicins (2024)C# modernity (based on Roslyn, tested on 6 repos)
Rust logo (CC-BY)
Chris Bleeker (2024)Rust modernity
unofficial JavaScript logo (public domain)
Thijs Beumer (2025)JavaScript modernity
C# logo (public domain)
Sorin Zele (2025)C# modernity (8800+ commits from 134 repos)
generic Matrix-style greenscreen
Wouter van den Brink (2025)“TurboModernity”: req spec for a generic modernity framework

Publications (latest first)



The page is maintained by Dr. Vadim Zaytsev a.k.a. @grammarware. Last updated: November 2025.
XHTML 1.1 CSS 3