Print at Dec 20, 2025, 7:07:11 AM

Posted by Puybaret at Mar 25, 2012, 8:19:19 PM
Re: How to join the developer team?
Oke so you are the only person working on this project. Maybe I should look for another project […]
It's up to you. Each project is different with its advantages and drawbacks...

But why did you choose to not sell this product commercially and keep the source code for yourself? I think the quality is good enough to earn money with it.
There are many reasons why I chose to distribute Sweet Home 3D under GNU General Public License with its source code:
- As Sweet Home 3D was first the study case of a book, I logically couldn't hide its source code and chose to publish it under GNU GPL. As the owner of the copyrights, I could have changed the license for the following versions I developed, but preferred not for the other reasons listed here.
- Open Source projects can benefit of Open Source platforms like SourceForge.net, with all their services and mirrors able to deliver TB of data.
- It's easier to gather contributors on an Open Source program, and even more when you include Linux in the supported operating systems, since many Linux users are used to contribute to free software.
- Free (like gratis) program logically means many more downloads, and many downloads mean a better quality program because there's more chances to get some feedback from users when they find a bug.
- It's less risky to publish an incomplete first version of an application when it's free, since people won't complain for the price. Then you can improve the software step by step, adding features inspired from your own ideas but also from the feedback of users.
- Publishing the source code of a program gives to your peers the ability to review the quality of your code and… propose you some work.
- There are many applications competing with Sweet Home 3D, even free ones, but Sweet Home 3D is the only Open Source solution (and probably the only one programmed in Java too), and this is a distinguished advantage for those who believe in Open Source or require such an option, like many students.

Finally, don't think that I don't earn money from Sweet Home 3D. A few users make some donations, and some companies directly paid a part of a few features, like multiple level management. As explained previously, I also sold a few licenses to companies willing to distribute derived versions of Sweet Home 3D under a proprietary license, and some of them paid me the work hours to make such modifications.
It's not really that much profitable yet, but who knows how this story will finish in the long run? wink

So you have a copyright on this product?
Yes, I do.
Distributing a software under GNU GPL doesn't force a developer to give up its copyrights on his work, it gives the freedom to users to use and distribute that software, and distribute a modified version of the software under the same license. A programmer gives up his copyrights on his work only if he publishes it in the Public Domain.
By the way, Sweet Home 3D is also a registered trademark to protect it from people who want to abuse of the software name.

But when it is open source anybody has the right to sell licenses of this project to interested companies I suppose?
To sum up the section 1. of the GNU GPL and the Selling Free Software document, anybody can sell a GNU GPL software if he:
- states it's distributed under GNU GPL,
- provides its source code,
- shows the copyright notice of that software (i.e. Sweet Home 3D version 3.4, Copyright (c) 2005-2012 Emmanuel PUYBARET / eTeks for Sweet Home 3D).
Note that the GNU GPL covers the original version of the software (i.e. the one found on this web site), and also any modified version of the software made available to public (along with the source code of the modifications). This brings the freedom to developers to continue to improve a GNU GPL software if the main developer(s) wish to quit the project or can't continue.

When I compile the source code I can basically sell it to everyone interested int it and willingly to pay for it or not?
Compiling the source code yourself doesn't bring you more rights than the ones given by the GNU GPL.

Did you also use certain design patterns?
Apart from the ones coming from Java itself, you'll find a few ones like:
- an abstract factory which specifies how to create view components,
- a few state machines like the ones found in HomeController3D and PlanController classes,
- many observers based on CollectionListener and other Java listeners use,
- some adapters to adapt the model classes handling furniture to JTable and JTree models in FurnitureTableModel and CatalogTreeModel classes,
- some virtual proxies like the IconProxy class,
- some singletons like IconManager, ModelManager, TextureManager and Component3DManager classes.

The books seems very interesting. Is there an English version of it?
No sad
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D creator