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.