The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Best Coded Open-Source Software

Okay, I know that subject is pretty wide open, so I'll explain further.

I'm looking for an open-source project that meets the following criteria:

1. Object-oriented design
2. Written in Java or C# (preferably C#)
3. Sufficiently complex that it required architectural
  foresight
4. A canonical example of best practices in software
  design and construction.
5. A short learning curve.

The purpose is strictly for educational purposes. I'm looking for a few projects to read and learn from.

Does anyone have any recommendations?

Regards-
    Eric
Eric Send private email
Monday, April 03, 2006
 
 
Recently developed projects under the Jakarta banner http://jakarta.apache.org should fit these criteria. Maven would be of particular interest; Maven is a project management system built on top of, and used by the other Jakarta projects much the same way Ant was developed and adopted.

That said, I haven't really looked at any of these in depth, within the past two years so I don't know just how good the quality is. The Apache Software Foundation does have an excellent reputation though.

Incidently, I think critera #4 and #5 are contradictory. :)
TheDavid
Monday, April 03, 2006
 
 
3 and 5 definitely are.

Items 3-5 are also a matter of opinion.
hoser Send private email
Monday, April 03, 2006
 
 
True, 3 through 5 are all subjective, but that's okay.

I don't necessarily think that 3 and/or 4 contradict 5, but maybe I could have better phrased it as "as short a learing curve as possible". I think we've all seen software that is needlessly complex, doesn't build on well-known idioms, etc. Objective number 5 was meant to weed those out.

Regards-
    Eric
Eric Send private email
Monday, April 03, 2006
 
 
http://dotuseful.sourceforge.net/ is very light library but shows how complex library (Swing) could be designed better. Questions? Ask them on dotuseful forum:
http://talkinghub.com/forum/tag/dotuseful.html
One of its goals is education.

On January - February I was publishing a story on how to develop web app from scratch. Covers all aspects - persistence, app logic, presentation. Welcome to
http://write-software.blogspot.com/
You will find unorthodoxal approach to persistence. May be not very clear sometimes but you have me willing to answer questions.

Denis Krukovsky
http://talkinghub.com/
Denis Krukovsky Send private email
Monday, April 03, 2006
 
 
I have been impressed with parts of the JBoss implementation.  Probably because a lot of how it was built was simliar to how I would do things.
Bill Rushmore Send private email
Monday, April 03, 2006
 
 
Have a look at XStream. Very well written.

cheers,
Emil.
Emil Kirschner
Tuesday, April 04, 2006
 
 
The SharpDevelop open source C# IDE is written in C#. I think it satisfies most of your listed requirements.
Larry Lard Send private email
Tuesday, April 04, 2006
 
 
Glazed lists?

Incredibly useful and powerful (in a simple kind of way).
Nigel Send private email
Tuesday, April 04, 2006
 
 
Sumana Harihareswara Send private email
Tuesday, April 04, 2006
 
 
What I looked at of the Simple web server code was pretty good:

http://simpleweb.sourceforge.net/

(Note: Simple isn't a J2EE servlet container, which can be a good thing.) It was the 2.7x series I looked at, I haven't seen the 3.x yet so YMMV.
Chris Winters Send private email
Tuesday, April 04, 2006
 
 
JHotDraw is an open source Java drawing framework designed by Erich Gamma (Gang Of Four) and friends.  It's a large and mature framework designed, in some part, to prove the effectiveness of design patterns.

JHotDraw homepage:  http://www.jhotdraw.org/
sensible Send private email
Wednesday, April 05, 2006
 
 
I'd like to suggest my project: http://listring.com.  I think it meets most of your criteria:

1. Object-oriented design
2. C#

3. Complexity requiring architectural foresight - the application's framework was designed first in UML, focusing on what specific objects (ie: List, Entry, User) and methods were needed to meet requirements.  This approach was used to allow reuse in a variety of UIs, including WinForm/SmartClient and ASP.NET.  The current implementation is ASP.NET.

4. A canonical example of best practices in software design and construction - this application provides a good example of .NET best practices: a stateless ASP.NET application using entity & service objects for the transfer of data through architecture layers.  It is also well organized as a solution containing separate projects for Types, Services, and Web UI

5. A short learning curve - The limited number of objects (Services and Types) is such that it provides a good example of the benefits of OOA&D in terms of making your code modular, reusable, and organized.
Andre Oporto Send private email
Wednesday, April 05, 2006
 
 
http://www.quickfixengine.org/
the c++ code seems good and there is a java version
Tom Vu
Sunday, April 09, 2006
 
 
A small example of a very well designed library is Eric Evan's Time and Money (http://timeandmoney.sourceforge.net/). 

Pretty much the best OO code I have ever come across.
R Send private email
Monday, April 17, 2006
 
 
M. Send private email
Thursday, April 20, 2006
 
 
Take a look at Eclipse platform (www.eclipse.org). It definitely has well object-oriented design. But implementation may be pure in some parts. Graphical Editing Framework project (www.eclipse.org/gef) also has a pretty good design.
YS
Friday, April 21, 2006
 
 
Eclipse of course! I have read Eclipse's technical director is one of authors of GOF book!

Denis Krukovsky
http://talkinghub.com/
Denis Krukovsky Send private email
Monday, April 24, 2006
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz