views:

113

answers:

5

When do you feel that it's appropriate/necessary to take deeper dives into the source code of open source tools to gain an understanding of the toolsets that you use? (nHibernate, StructureMap, Rhino Mocks, etc.)

+5  A: 

When it doesn't work the way I expect or I need to implement something that isn't described very well in the documentation or with examples. Usually, it's a response to doing something that I think should work, but not understanding why it doesn't. FWIW, this also applies whenever I can access the source code, regardless of how "open" it is.

tvanfosson
+2  A: 

I would say there are two scenarios for that:

  1. When the OpenSource product is part of your core business (your company depends on it).
  2. When you want to start contributing to it.
Pablo Santa Cruz
A: 

You may need to do this if the toolset you are using does not provide functionality that you need, or if there are bugs in your tools.

For example, recently I was using a JavaScript grid library that did not support sorting a column by certain date/time formats - so I had to go into their code and understand how it works so I could come up with a workaround. In the end I had to implement this myself, and contributed the code back to their project.

Justin Ethier
A: 

I think in general, if you are doing something that requires deep diving, then you are probably doing something you shouldn't be doing. When you need to know things at a level where you aren't doing standard things, you need to think really carefully about whether you are doing the right thing or not.

The exception to this is when you are building something where the library is in the realm of your company's core competency. If you are building an online build system, you probably want to know way too much about the underlying build systems (Maven or whatever), and you should probably deep dive on those until you know them well.

stevedbrown
+1  A: 

I start diving into the source code anytime I need to know: what does this do? Or why does this not work how I think it should. This comes usually after reading documentation, googling, etc.

Also if it's a framework I've used for a while - it's in my best interest to know the source code a little bit as a reference point to know how it works.

If you want to know how any framework works, you always have to start with: "What would this IoC/ORM framework have to do in order to perform this function." I find thinking from the inside out helps sometimes with frameworks.

kibbled_bits