Source code management systems record different versions of code. Tool support can then compute deltas between versions. However there is little out of the box support to be able to perform queries and analysis over the complete history: for example tools have to build their own infrastructure to identify slices of changes and their differences since the beginning of the project. We believe that this is due to the lack of a powerful code meta-model as well as an infrastructure. For example, in Smalltalk often several source code meta-models coexist: the Smalltalk reflective API coexists with the one of the Refactoring engine or distributed versioning system such as Monticello. While having specific meta-models is an adequate engineered solution, it multiplies meta-models and it requires more maintenance efforts (e.g., duplication of tests, transformation between models), and more importantly navigation tool reuse when meta-models do not offer polymorphic APIs. As a first step to solve this problem, this article presents several source code models that could be used to support several activities and proposes an unified and layered approach to be the foundation for building an infrastructure for omnipresent version browsing.
|4th Smalltalk Conference 2010
|Published - 11 nov 2010