Dear GRASS developers and interested users,
as you know, GRASS is a huge system with thousands of files and
hundreds of thousands of lines of code. You are contributing to the
development - but do you sometimes wonder how quality is ensured in
such a big project? Sure, there is the commit mailing list which shows
changes in real time. But probably more could be done.
Today we want to propose a new system to you:
At Ecole Polytechnique de Montreal a new software quality control
system has been developed which checks the CVS changes as distributed
by the GRASS commit mailing list for potential problems. We would like
to invite you to try this new GRASS source code quality monitoring
service. We, that are Giulio Antoniol, Ettore Merlo, Salah Bouktif and
Markus Neteler. Based on Free Software tools and the software
engineering knowledge of the people of Ecole Polytechnique de
Montreal, this quality assessment system was realized as combined
email notifier and Web dashboard.
So, what do you and the GRASS project gain from that? Three principal
services are provided to you and the community:
- The first service analyzes and controls the complexity increase and
potential quality declining;
- The second supports distributed developers to perform safe evolution
by sending them a feedback report after each contribution in order to
avoid abnormal actions;
- The third allows developers to learn about the big picture of the
whole software by providing them with a dashboard of the project
evolution.
What could go wrong? The *first service* checks if new functions or
modifications are getting too complex which renders them
unmaintainable. The service also checks if a modified function,
probably written by someone else, is already too complex and should
better broken into pieces. Finally it checks if functions are cloned,
i.e. that several code pieces are identical or nearly identical. In
this case such clones should be removed (e.g. by moving the function
to the related GRASS library).
As *second service* this report is sent to the developer shortly after
each CVS modification. Memory is still fresh and the developer is
invited to act upon a newly introduced problem or invited to attack an
old outstanding problem with legacy code in GRASS.
The *third service* is a Web site which provides easy code navigation
to better study clones or complex functions (we call them "baby
monsters" or "monsters" and put them into the "monster garage" there
for inspection). Also detailed graphs will be generated to better
illustrate the problems identified.
It is our goal to make the services a help and understandable even to
the "hobby" programmer. And of course, to help to improve the code
quality. Better code is easier to maintain - so please give the system
a try.
To receive the code monitoring messages of your contributions, please
just send a mail to Markus that you are interested. To take a look at
the dashboard, check here:
http://web.soccerlab.polymtl.ca/grass-evolution/grass-browsers/grass-index-en.html
To log into the GRASS restricted, enter:
User: grass (pw: "grass6")
Our plan in the long term is to develop personalized services and
different views for different developers. This is a beta test and we
need your help to identify weaknesses and possible enhancements.
For example, as suggested by Ettore, we could easily implement a
service to check files/functions for quality indexes before performing
the actual CVS commit, kind of preventive verification.
We are happy to give more feedback! Let us know or simply try the
new system out.
Best regards
Markus
in collaboration with and grateful to:
Giulio Antoniol <antoniol AT ieee.org>
Salah Bouktif <salah.bouktif AT polymtl.ca>
Ettore Merlo <ettore.merlo AT polymtl.ca>