views:

437

answers:

7

What are some of the open source projects out there that you would hold up as shining examples of projects that correctly and effectively use enterprise sofware patterns and best practices such as Inversion of Control, Model-View-Controller, Unit Testing, etc.?

For purposes of this question the project should:

  1. Include source code that illustrates the pattern in use, and
  2. Be doing something important and useful, i.e. not using the pattern frivolously just because it is flavor of the week. Hence the words, "Correctly and Effectively" in the question

It should be software that you could show to the people who work for you and enthusiastically be able to say, "I want you to do it the way these guys did it."

A: 

You mean Spring? Or projects that use it?

UPDATE: WebWork, Guice, and Spring Security all fit the mold.

duffymo
That's a good start. Both.
Robert Harvey
+1  A: 

Prism is very good for MVVM in WPF and Silverlight

patterns they use Patterns in the Composite Application Library

Stan R.
what is the -1 for?
Stan R.
Probably a Microsoft hater.
Robert Harvey
A: 

An objective pick would be the Spring Batch project.

How did I pick it? Judging from the technical debt as seen on the Nemo Sonar instance, Spring Batch has the lowest debt/line ratio for projects larger than 10k lines of code.

Mercer Traieste
+1 to counteract the -1. This is not a bad answer.
SnOrfus
I don't think that you can have an "objective" example unless you can quantify your answer in terms of the exact metrics specified in the question. You can do, however, have a "subjective" example that I agree with.
the Will Cole
The exact metrics are explained in the "Technical Debt" plugin homepage http://docs.codehaus.org/display/SONAR/Technical+Debt+Plugin
Mercer Traieste
+4  A: 

Most of the GNU project is very very well written, over a very long period of time, with strict guidelines.

mattl
Don't GNU know it. (Ha!)
the Will Cole
Oh, I GNU. http://www.gnu.org/people/#mattlee ;)
mattl
+1  A: 

When I first looked at the source code for DotNetBlogEngine, I was impressed at how well it was organized. And it didnt couple any of its components to the interface, making it extremely flexible.

It's not a terribly huge project either, not like trying to recompile your own linux kernal or something. So you can dive in quickly and have some fun with it.

Neil N
+1  A: 

Castle project

Ray
+1  A: 

You can try this book - Beautiful Code

The author has collected some experience-sharing articles of open source projects. e.g. Python's Dictionary Implementation, Subversion's Delta Editor, etc.

jacklty