[CityGen] Core vs Module
-
I'm still trying to pin down in my mind how we are developing this. Here is what I am envisioning.
The Core
This should be just the core files that run the plugin. No modules. The core files organize the street generator modules, organize the building modules, etc. All modules are managed by the core code, but they are not a part of the core.The Modules
These should be created by anyone, and they should be easily added to the core. No module should rely on another, or at least the core should not expect interdependent modules. No modules should be built into the core files.
That is my take on the core vs. module definition and what their roles should be.
This would mean that our Open Source project is only to develop the core files. But that's virtually impossible without developing modules to test with the core, so then the open source project should be to develop the core PLUS any modules that we happen to make along the way.
Anything we make, core and modules, is under a GNU open soure license which makes it so anyone can alter, tweak, redistribute, and sell our code. But they have to keep their project in the same license as ours (they would have to develop it as open source also, and their code could legally be tweaked and resold).
So if we set our code up so that modules are easy to just drop into their correct place and the Core recognizes them, then people could develop their own modules outside the GNU license if they want. Someone could develop an entire suite of Medieval modules (streets, sidewalks, block makers, building generators) and they can develop their modules under whatever license they choose. And all the user would have to do would be to have the core installed, and then add the medieval module files, and the core would recognize them and let the user use those files.
But my point is that I think the core and the modules need to be well separated. And modules need to be well separated from eachother.
Hmm, I've got some ideas how modules should be "installed", but I don't have anything to show for it, so I guess I'll just write a bunch of stuff and then see what ya'll think of it.
But for now, how does the above sound? About right? Off base? Is there a bigger picture to be aiming for?
Chris
-
I do think that some modules will have to require each other. If one module is an extension of another.
Do we want a license that allows people to take the code and sell it?
-
I think the parts in modules that might need to build from one to the next should be contained within the core. The core should be robust enough to handle the info that will need to be passed betwen the modules. I think that is the only way to make it so modules can be developed independently of the core.
And the license....I'm not too familiar with all the open source licenses out there. But this is one of the most common ones. Its pretty standard. And google code only has maybe 5 license options available. So we could defintely look at the others before we get too far into it. But I'm guessing that most/all of them allow re-distributing and selling the code.
But the one I chose guarantees that if anyone uses portions of the code, they must also license their product with the same license. So anyone who uses actual chunks of the source code will also be making an open source project. But I'm open to changin if there is a better one listed. It might just need its own thread if we want to look at the major and minor differences between the offered licenses.
Chris
-
@chris fullmer said:
But the one I chose guarantees that if anyone uses portions of the code, they must also license their product with the same license. So anyone who uses actual chunks of the source code will also be making an open source project. But I'm open to changin if there is a better one listed. It might just need its own thread if we want to look at the major and minor differences between the offered licenses.
I'm just concerned if it would be possible for people to take our work, repackage it just change the branding and sell it. Even though their project is made open source it wouldn't not benefit us unless they added something themselves.
-
There is also a difference between copyright and licensing. I'm not sure which is which and how copyright plays into the GNU license. So for some light reading, here is a list of all licenses offered on the google code site:
Apache License 2.0
Artistic License/GPL <---PERL invented this license and used it
Eclipse Public License 1.0
GNU GPL 2.0
GNU GPL 3.0 <---This is the current project license
GNU Lesser GPL
MIT License
Mozilla Public License 1.1
New BSD LicenseSo there's some light reading. From what I could tell, they all permit resale of the code. But, its just not really commong I don't think. I just looked at Ruby's license, its interesting:
404: Not Found | Ruby
The requested page does not exist.You might try and start from the [home page](/).
Ruby Programming Language (www.ruby-lang.org)
I like the way #2 is written. It keeps alterations forced to stay within a company for private use, and anything made public has to be put online publicly and the author has permission to include it in ruby if he wants to. But any of the GPL's listed on the code site also do the same essentially.
Anyhow, lets look at the licenses closer. The main difference I could see in these listed on the google code site is that some allow people to change your code and then choose whatever license they wish - which we do not want, because then they could change the code and add their own proprietary license so they would not be required to share their changes.
Licenses.....bleh!
Chris
-
-
I like the sound of GNU GPL 3.0

I think we need to make it very clear that the core and any modules written are all part of the same program, though. Otherwise the situation you described chris (writing modules under a different license and selling them) would be all too easy.
-
@remus said:
I think we need to make it very clear that the core and any modules written are all part of the same program, though. Otherwise the situation you described chris (writing modules under a different license and selling them) would be all too easy.
Would that be a bad thing though? I kind of like the idea of people being able to develop their modules under whatever license they want. I don't like the idea of them being able to take the core and re-distribute it under a different license, but modules seem like anyone should be able to make them under whatever license they want.
That is what the GNU GPL would allow (I think?). Users would not be able to ever change the license on the core, or any tweaks on the core, or additions to the core itself. That all must always remain opensource. But I think that it would allow modules to be developed under whatever license they want, which I see as a good thing. People could add moules directly to our open source project, like we will be doing, and that would guarantee that the module is open source forever. OR they could develop and distribute on their own and sell it if they like. But they would still be using our open source core.
OR I'm sure we could make it so that ALL modules people make have to be open source too. This would keep everything open. My concern is that it might deter people who would like to make a few bucks from writing modules. And I'm thinking that "pay-for" modules are better than no modules being developed.
To me it is like the "SketchUp" model. They've made a platform (core) that anyone can write their own plugins (modules) for and sell them. The idea being that these plugins help draw more people to use SketchUp. People can alsow write free ones, and they can write not free ones, but the more that get written the better for SketchUp.
I see parallel there for us. The more modules that get written to work with our core, the better for us (mor publicity, more general interest). Even if they are pay-for modules.
But maybe I'm over thinking this.
And maybe (definitely) I'm biased, because I would like to be able to write pay-for modules after the core is solid. So I should put that out there too.... Am I the only one?

Chris
-
I'm fine with people writing commercial modules. But I just don't want to see anyone taking a free module and selling it with only minor tweaks.
-
Youve convinced me chris

Thom, if free modules are distributed with the GNU GPL license and someone decided they wanted to make a commercial version of it they would have to make the source code available, which effectively eliminates easy, legal methods for selling on already written modules licensed with GNU GPL.
-
Ok. I'm happy.
Back to coding?

-
I'm not sure these licenses even hold up in court - have they ever been tested? Besides, it would cost a small fortune to find out. If someone does violate your license, what are you going to do about it?
This is how it would work in the US, anyway.
-
@jim said:
what are you going to do about it?
Model a little voodoo doll of them and run Chris' greeble plugin...?

-
http://en.wikipedia.org/wiki/GNU_General_Public_License#The_GPL_in_court Seems there has been moderte sucess in defending GPL licenses in court.
Not that we'd ever have the cash to take anyone to court
more than anything i think its good to have this sort of thing in place so we can wave the piece of paper (or .txt file) at anyone who does rip off a developers work; an empty threat if you will.
Advertisement
