Project of the Month, October 2009

Sweet Home 3D

Sweet Home 3D is free software designed to draw the plan of a home, arrange furniture, and display the result in a 3D view. It’s aimed at people who want to design their interior quickly. The user may:

* draw the walls of his rooms upon the image of an existing plan

* change the color or the texture of the walls, the floors, and the ceilings

* drag and drop doors, windows, and furniture onto the plan from a catalog

* organize by categories, and import user-created or downloaded 3D models

* change the size, orientation, and elevation of each piece of furniture

* view the changes in the plan simultaneously in the 3D view, either from an aerial view point, or from a virtual visitor view point

* draw dimensions, compute areas, and add text to the plan

* print the home plan and the 3D view or export them to a PDF file

* export the plan to SVG format, and the 3D view to OBJ format

* compute a photorealistic image from the 3D view and export it in PNG format

Sweet Home 3D and its help documentation are localized in 14 languages, and available at
http://sourceforge.net/projects/sweethome3d
and http://www.sweethome3d.eu/.

Why and how did you get started?

In 2005, I started to write a book about Java/Swing programming and was looking for a cool study case that would show how to use Swing in an open source project. I thought first about a RSS/Atom reader, but soon realized there was already a lot of software in that category and the book wouldn’t be that original. Then I unburied this old fun idea I had about programming an interior design software. I divided the basic features into eighteen scenarios and explained the first 10 in the book, including how to host it on SourceForge.net. Once the book was published, I went on and developed the other scenarios before releasing the version 1.0 in mid-2007.

Who is the software’s intended audience?

It’s a program for a general public audience. I wanted to create a tool that is easy to use, and from reports web like this one published last year, I think I succeeded on this point.

What are a couple of notable examples of how people are using your software?

Most users draw their home or a room of their home with the software and then arrange furniture on it, like these Czech people working on their attic or Ariana changing the use of her guest room. Others use it as an architecture program to draw a draft of their future home, and some educators use it to teach children 3D modeling software.

What are the system requirements for your software, and what do people need to know about getting it set up and running?

Sweet Home 3D runs under Windows, Mac OS X 10.4 to 10.6, Linux, and Solaris, so you’ve got a choice! A good video card with updated drivers will also help it run better. It’s programmed in Java and may run as an application launched with Java Web Start or as an applet integrated in a Web page. Off-line installers that includes a Java Runtime Environment are also available to help people avoid installing Java if they choose.

What gave you an indication that your project was becoming successful?

Programs that use video card accelerators like Sweet Home 3D may not work as expected when OpenGL or DirectX drivers aren’t up to date. When a user encounters such a problem, they could simply forget the program and try an other one, or use bug trackers to help developers fix the issue with him. Once I received feedback from users who were ready to test and retest a beta version to fix that kind of issue, I felt people really wanted to use the software. After the first release, success came also from a few nice articles published on the web and in the press.

What has been your biggest surprise?

When I started this project, I knew there was no complete open source software of this kind, but I didn’t realize that no interior design software existed on Linux at that time. That probably helped Sweet Home 3D’s acceptance a lot in the open source community, even if most users use it under Windows and Mac OS X. I didn’t imagine that some users would love Sweet Home 3D before version 1.0 and would be ready to contribute with documents and 3D models creation.

What has been your biggest challenge?

Supporting the various available video cards without owning each machine. After a few years, I almost succeeded to fix most issues under Windows. Miserably, there are still problems for a few users under Linux.

Why do you think your project has been so well received?

Being the only open source free software in its category helped its acceptance. People also appreciate its simplicity and its ability to import 3D models created with other software. More generally, open source software should be able to support existing formats to import or export data because it shows you’re open minded toward other formats and helps users reuse the documents they created with other software.

What advice would you give to a project that’s just starting out?

Concentrate first on a basic minimal consistent version. Then, once you release your project, talk about it to let people know about your new software. Announce it on sites like download.com, versiontracker, Softpedia, and MacUpdate, and send press releases to news Web sites. Finally, take time to learn all the SourceForge.net tools and use them (trackers, news, screenshots, file release system, hosted apps, etc.).

Where do you see your project going?

Some users would like to manage levels and roofs in Sweet Home 3D, meaning they would like it to become a complete architecture software! This is ambitious but why not, as long as Sweet Home 3D remains easy to use.

What’s on your project wish list?

My first wish would be to replace the default furniture catalog in Sweet Home 3D with a beautiful, light, and consistent one. I would also like to better organize localizations. Communicating with translators all around the Earth is really nice, but I’d rather spend less time on synchronizing translations at each release. Finally, it would be nice if more developers contributed some plug-ins to extend Sweet Home 3D features or to support other data formats.

What are you most proud of?

Creating a community around this project that contributed to translations and artistic stuff like 3D models without requesting some help. There are so few models distributable under a free license around the Web and I hope it will be useful for other projects.

If you could change something about the project, what would it be?

I don’t know if all the 3D programs based on OpenGL or DirectX often have problems with some of the computer configurations available out there, but I feel I spent too much time supporting problems in the 3D rendering engine of Sweet Home 3D. I should probably have studied more closely the pros and cons of each available rendering engine before choosing Java 3D, to be sure I made the right choice.

How do you coordinate the project?

I use SourceForge.net trackers to review bugs and feature requests, and fix them. Before releasing a new version with new features, I send an email to each translator to get the translation of the new parts in the user interface and in the help. During that pre-release time, I also post messages in the forum to get feedback from the users about the beta version.

How many hours a month do you and/or your team devote to the project?

As a freelance developer, I alternate between contracts for customers and times when I work at home on open source projects (or books). Recently, I spent almost a year working full-time on the Sweet Home 3D project. During the next contract I work on, I’ll try to devote a few hours per week to the project. On their side, translators report that it takes them at least 4 days to translate user interface and help files.

What is your development environment like?

I use an iMac running under Mac OS X, so I can also test Sweet Home 3D with virtual machines running Windows, Ubuntu, and OpenSolaris. I program under Eclipse IDE, with JUnit for testing, and build releases with Ant scripts.

Milestones:

Date Milestone
November, 2005 Started Sweet Home 3D project on SourceForge.net
November, 2006 Finished the writing of Les Cahiers du Programmeur Swing and released versions 0.1 to 0.10 matching the scenarios described in the book.
September, 2007 Released version 1.0
June, 2009 Released version 2.0

How can others contribute?

Depending on their skill, they can create documentation, create new 3D models and / or new texture images, give some support to other users on forum, develop plug-ins or translate the software or documentation in other languages. Trackers dedicated to 3D models and plug-ins are available on the SourceForge.net project page, but they can write a message on the forum or even write me directly for more details.


More projects of the month

Project name: Sweet Home 3D

Date founded: November, 2005

Project page: http://www.sweethome3d.eu/index.jsp

Project Leader


Emmanuel Puybaret

Emmanuel Puybaret

Occupation: Freelance Java Developer

Location: Paris, France

Education: BS in Computer science, Aeronautics Engineer and Master’s degree
in Product design

Team Members


Bobbie Colegrove

Bobbie Colegrove

Occupation: Artist/3D Modeller

Education: Self taught, tutorials, and forums
Location: U.S.


Thomas Geoffroy

Thomas Geoffroy

Occupation: Physiotherapist

Education: University diploma

Location: Belgium


Pablo Mayordomo

Location: Spain

Why did you place the project on SourceForge.net?

In 2005, it offered the best features around for open source projects. From CVS/SVN to web pages hosting, it proposes good tools for developers, and even statistics to help them follow whether their project interests people or not.

How has SourceForge.net helped your project succeed?

SourceForge.net and its mirrors are able to deliver terabytes of data and that’s terrific! I appreciate also the support you give to your users for a free service.

The number one benefit of using SourceForge.net is:

Hosting a project on SourceForge.net will help people identify a project as an open source one. As open source software gains more and more acceptance, it’s important to show you belong to the growing open source community.