Joined: Mar 24, 2012
Post Count: 10
Status:
Offline
How to join the developer team?
Hello i'm a software engineering student and looking for an open source software project to join. Now my eye felled on sweethome 3d which I found on sourcforge.com, and i came to the conclusion that this is the type of project i would like to join because: - it is written in java - It uses 3d and 2d views - The subject seems to be highly suitable for an easy to understand object oriented Design.( walls, doors, windows, floors etc) - I have studie building engineering before my current study and I would like to know how this kind of software is made. - It seems to be a quality piece of software.
But now my questions are as followed: - How can I contribute to the project? - I can't open the eclipse project that is in the source code directory. Can i also use netbeans? - Do you use UMl for the design? - What kind of techniques do you use for the 3d view? - Is there any prerequisite for joining the project? - Is there a special developer website / envoirment.
I would love to hear some answers. Thnx in advance.
France
Joined: Nov 7, 2005
Post Count: 9381
Status:
Offline
Re: How to join the developer team?
Welcome to Sweet Home 3D development.
How can I contribute to the project?
If you're a Java developer, the best way to start contributing to the project is to create a plug-in, with the help of the plug-in developer's guide. Once ready, you can post it in the plug-ins tracker to share it with Sweet Home 3D users. If you're looking for ideas of plug-ins, please explore this forum.
I can't open the eclipse project that is in the source code directory. Can i also use netbeans?
Sweet Home 3D project is developed with Eclipse and there's no reason which should prevent you to open it in Eclipse (don't forget to read the README.TXT file in the source code). You should be able to use the project in Netbeans too.
Joined: Mar 24, 2012
Post Count: 10
Status:
Offline
Re: How to join the developer team?
Thanks for the quick answers!
So it seems that I first have to make a useful plugin before I can contribute to the project. But can you tell me what the exact prerequisites are to join the project as a developer?
By the way I found the README.txt file in the source directory and now I'm able to open the project in Eclipse. I also did some reverse source code "engineering" in Enterprise architect and got some useful class diagrams that could help me to visualize the code.
So am I right that the program has 9 main namespaces with code... - applet - io - j3d - model - plugin - swing - tools - viewcontroller ... ?
Do you also have some high level architecture diagrams of the program? And how many developers are working on this program? And last but not least is the code relatively complex or not?
France
Joined: Nov 7, 2005
Post Count: 9381
Status:
Offline
Re: How to join the developer team?
So it seems that I first have to make a useful plugin before I can contribute to the project.
I think it's one of the best way to learn how the program works without entering in the details of its architecture, nothing more.
But can you tell me what the exact prerequisites are to join the project as a developer?
Even if many people contributed to translations, 3D models, documentation and plug-ins, I'm still the only Java developer working on the code of Sweet Home 3D. Thus, I never really thought about the prerequisites required for developers to join the project. The minimum would probably be to: - have a real identity (the first name: 076 and last name: 0475 of your profile is definitively not ok ) - accept that I can refuse some code because of its poor quality, or because the feature it brings don't match the purpose of Sweet Home 3D - accept to transfer the rights on your contribution to me. As I sell also a few licenses of Sweet Home 3D to companies that want to create derived versions distributed under a proprietary license, you'll understand that managing copyrights retribution would become too complicated if I had to grant a part of the license price to contributors.
So am I right that the program has 9 main namespaces with code
namespace isn't really a word used in the Java world, but it's not a problem. Sweet Home 3D uses a 3 layers design along with a MVC design: - com.eteks.sweethome3d.model package for the business layer - com.eteks.sweethome3d.io package for the persistence layer - com.eteks.sweethome3d.viewcontroller, com.eteks.sweethome3d.swing and com.eteks.sweethome3d.j3d packages for the View-Controller presentation layer - com.eteks.sweethome3d package for the assembly of the application version - com.eteks.sweethome3d.applet package for the assembly of the applet version - com.eteks.sweethome3d.plugin package to manage plug-ins - com.eteks.sweethome3d.tools package for a few common non graphic tools.
The most important thing to understand is there's no two way dependency among the packages, to fight against Spaghetti code, something checked by the PackageDependenciesTest JUnit test.
is the code relatively complex or not?
As of today, the program counts 67100 lines of source code + 5300 lines of test code (counting only lines of real code). This is not huge but not so small too. The big chance of this program is that it was first a study case of a French book about Java / Swing I wrote in 2006, so I took great care to make its architecture and its code as clear as possible for readers, and kept the same direction since that time (even if I had to adjust a few things time after time).
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D developer
Joined: Mar 24, 2012
Post Count: 10
Status:
Offline
Re: How to join the developer team?
I think it's one of the best way to learn how the program works without entering in the details of its architecture, nothing more.
Yeah I agree that I should first make a plugin to learn how to use the code.
Even if many people contributed to translations, 3D models, documentation and plug-ins, I'm still the only Java developer working on the code of Sweet Home 3D. Thus, I never really thought about the prerequisites required for developers to join the project.
Oke so you are the only person working on this project. Maybe I should look for another project then because I'm also interested in how the work is divided between the developers and how code of different developers is united in the program itself.
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.
The minimum would probably be to: - have a real identity (the first name: 076 and last name: 0475 of your profile is definitively not ok wink
My real name is Roland ( I'm from the Netherlands ) and I'm studying Software engineering on an university of applied science.
- accept that I can refuse some code because of its poor quality, or because the feature it brings don't match the purpose of Sweet Home 3D
Oke I understand.
- accept to transfer the rights on your contribution to me. As I sell also a few licenses of Sweet Home 3D to companies that want to create derived versions distributed under a proprietary license, you'll understand that managing copyrights retribution would become too complicated if I had to grant a part of the license price to contributor
So you have a copyright on this product? But when it is open source anybody has the right to sell licenses of this project to interested companies I suppose? When I compile the source code I can basically sell it to everyone interested int it and willingly to pay for it or not?
namespace isn't really a word used in the Java world, but it's not a problem. Sweet Home 3D uses a 3 layers design along with a MVC design: - com.eteks.sweethome3d.model package for the business layer - com.eteks.sweethome3d.io package for the persistence layer - com.eteks.sweethome3d.viewcontroller, com.eteks.sweethome3d.swing and com.eteks.sweethome3d.j3d packages for the View-Controller presentation layer - com.eteks.sweethome3d package for the assembly of the application version - com.eteks.sweethome3d.applet package for the assembly of the applet version - com.eteks.sweethome3d.plugin package to manage plug-ins - com.eteks.sweethome3d.tools package for a few common non graphic tools.
The most important thing to understand is there's no two way dependency among the packages, to fight against Spaghetti code, something checked by the PackageDependenciesTest JUnit test.
Oke that seems like clear code then. But did you also use certain design patterns?
As of today, the program counts 67100 lines of source code + 5300 lines of test code (counting only lines of real code). This is not huge but not so small too. wink The big chance of this program is that it was first a study case of a French book about Java / Swing I wrote in 2006, so I took great care to make its architecture and its code as clear as possible for readers, and kept the same direction since that time (even if I had to adjust a few things time after time).
Oke 67100 lines seems manageable, but close to the maximum of what 1 person can comprehend. Or am I wrong?
The books seems very interesting. Is there an English version of it? (I'm dutch, and I can read French a bit but not good enough).
France
Joined: Nov 7, 2005
Post Count: 9381
Status:
Offline
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?
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.
Joined: Mar 24, 2012
Post Count: 10
Status:
Offline
Re: How to join the developer team?
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.
And what about the book? Haven't you sold many of them?
It's not really that much profitable yet, but who knows how this story will finish in the long run?
But do you have plans to make a big extension to the "core" code in the future? Or is the program not going to change much except for more 3d models, textures, and plugins?
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.
Oke so someone can't rename the program, change the UI ( user interface ) and pretend that he wrote it? But how can you proof that he didn't wrote it? By comparing the bit sequence of the compiled code or something?
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.
Oke interesting. I should dive in a bit deeper to understand them all but thanks for the information.
France
Joined: Nov 7, 2005
Post Count: 9381
Status:
Offline
Re: How to join the developer team?
And what about the book? Haven't you sold many of them?
As the print run of the 2500 books has been exhausted for a while (but the book is still available as an eBook), I forgot to mention the revenue I got from the book! Anyway you should know that most authors earn little directly from technical books. It takes a lot of time to write them (the Swing book represents more than 1700 hours of work!) and the editor pays only a small percentage (7 to 10%) for each sold book.
But do you have plans to make a big extension to the "core" code in the future?
It depends on my free time and/or who can pay or help for developing a feature. The current roadmap of Sweet Home 3D is available here, but there can be other nice ideas to program among the ones found in the wishlist forum or in feature requests tracker.
Oke so someone can't rename the program, change the UI ( user interface ) and pretend that he wrote it? But how can you proof that he didn't wrote it?
It's not because having the source code makes it easier to create a similar software, that every developer will do it. As soon as he would make it available to the public, some users could recognize the similarities between the two programs and report it if the modified version isn't distributed under GNU GPL. It happened once and the company finally bought me a license. But we're not in a perfect world, and I guess it could happen some other times without me being aware of it.
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D developer
Joined: Jan 10, 2015
Post Count: 1
Status:
Offline
Re: How to join the developer team?
The big chance of this program is that it was first a study case of a French book about Java / Swing I wrote in 2006, so I took great care to make its architecture and its code as clear as possible for readers, and kept the same direction since that time (even if I had to adjust a few things time after time).
Hi, Emmanuel. You wrote an excellent book, but it is very difficult to perceive the French (I'm Russian). SweetHome3D multilingual community, and I think many would like to have a book at least in English. Or may be a series of articles based on the book. Source code and comments to them - it's very good, but I would like to understand the architecture of the program. I think many people will be grateful if such articles appear.
France
Joined: Nov 7, 2005
Post Count: 9381
Status:
Offline
Re: How to join the developer team?
The base of the architecture of Sweet Home is explained at the end of the Plug-in developer guide, but I guess you want more. Your suggestion is interesting but writing technical articles takes a lot of time, that I wouldn't pass on improving Sweet Home 3D itself. Not sure it's what users and I would prefer...
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D developer