Thursday, July 10, 2008

Do you care about source code as you should?

Diomidis Spinelle has performed an interesting research about communication through source code in Open Source (OS) projects, and wen can summarize it by paraphrasing him: "... it confirms my belief that source code is the most important artifact of the software development process".

In such research, Spinelle computed the amount of source code that are not of compiler's interest from 30 OS projects. The results showed that for most of projects, more than 60% of source code is composed by code used to facilitate the source code understanding. The Figure bellow summarizes the results (click to expand).

I absolutely agree with him when he says that source code is the most important asset. And current, in OS world, Reuse is all about reusing source code. Thus, to understand what some source code does and how it does is very important to reuse it.

Efforts have been concentrated to defined architecture and design definition process (among other software aspects) to facilitate software reuse, however we are still looking at the source code before to reuse it. Thus, such efforts seem to forget that some programming language (actually source code) will be used to make the project runs.

Furthermore, most of projects analyzed by Spinelle is composed by successful open source projects; another reason to believe that source code is the most important artifact of software development ever.

So remember, if your project is going to be evolved on the future, the source code is probably the first place where developers will look at.


Eduardo Almeida said...

Hi Yguarata, I agree with you about the importance of source code. For me, it is most important too. However, I disagree in another aspect. In general, we [can|should] reuse code, however, this code must be developed in order to be reused. Otherwise, in my opinion, it is just useful to understand and decrease the mental knowledge|effort.
I believe that the key point for reuse is to do it in a systematic way and often, it starts from requirements until testing, for example, from Domain Analysis, analyzing previous application or solutions in source code. Thus, this possible [asset] [code] can be generalized and reused effectively.

Yguaratã C. Cavalcanti said...

In this sense, i also agree with you about to achieve reuse through a systematic way. It is hard but the result is clearly better.

I believe that the scenario showed by Spinelle can be useful mainly for open source projects, just because of the collaborative development.

Generally, the industry claims for short time-to-market, which, without good people and processes, leads to poor quality source code (consequently, poor product too).

Bruno J. M. Melo said...

IMHO this discussion is related to the "Cathedral vs. Bazaar" [1] debate, which the Bazaar style is the open source model where _COMMUNICATION_ (by source code, docs, irc, mailinglist, etc) is the most important aspect and the Cathedral style is the commercial (capitalist) model where _PROFIT_ rules the game.

However, business in a 'Bazaar' style are possible [2] and very profitable [3].

To complement the Spinellis' insights a quote from the SICP book:
"Programs must be written for people to read, and only incidentally for machines to execute." - H. Abelson and G. Sussman