views:

44

answers:

4

a lot of people are contributing to open source libraries/frameworks.

i wonder how these people learn the structure so that they can contribute?

lets take doctrine and symfony as an example.

is there a blueprint over these frameworks to give the developers an insight of the structure? or do they just download it and study the code?

how does it work?

please you contributors, share your learning strategies!

thanks

+1  A: 

Download it and study the code. Study the unit tests. (If there aren't any tests, write some.) Use it to build something.

Bill the Lizard
Hmm. Most tests works as test of 'interface' so I guess they don't usually help (especially the good ones) in studying internals of library (although they allow to get know the external design of it).
Maciej Piechotka
@Maciej: I wouldn't trust anyone's doc to stay current enough to learn the internals of any piece of software (mostly because I know how *I* am about keeping doc up to date). If you want to know the internals, there's no substitute for the code itself. It can't lie to you.
Bill the Lizard
However sometimes docs are necessity. I once seen a code in which I understood what each class did. However what they did together...BTW - tests often did also fall behind (at least historically).PS. Code can lie:C:#define TRUE 0#define FALSE 1while(TRUE) {printf("Always");}Haskell: let 2 + 2 = 5 in 2 + 2
Maciej Piechotka
@Maciej: Yes, tests can and do often fall behind. Most successful and up-to-date projects are more likely to have up-to-date tests though (in my experience). Also, that code doesn't lie. If you have access to it, you can see *exactly* what it's doing. :)
Bill the Lizard
+1  A: 

I am not a regular contributor to any library/program (well I was to one but it was abandoned). I usually find something missing and then:

  • I use code. If the code is self-explanatory all I need to do is know language and know coding-style if it is not standard for language.
  • It may have documentation - although rarely it helps developers unless it is something cross-platform (for example - how to write driver etc.).
  • In other case I just write a bug report and move on.

Generally all what is needed is to have documented code - although in some cases blueprints/documentation of structure will help.

Maciej Piechotka
+2  A: 

There are a few similar question on SO already. The answers to those might be helpful. The ones I found are:

Hope these are what you are looking for.

bennybdbc
thanks for the links!
never_had_a_name
A: 

Read...code...repeat :)

jaywon