I've written a Graphics Design program, with less functionality than Photoshop, but more than MS Paint. I've targeted the application towards teenagers and kids, mainly for educational usages for subject fields such as Graphic Design, Photography and Digital Art. I've started writing it for my final project in school, and feeling quite happy with the work I have done, and having noticed a lack of related software programs for various operating systems, I would like to release it to the general public. It's currently in Alpha testing :)
If you really want, I've made a couple pieces of fantastic artwork in the Community Ads meta post.
Here are a couple aspects of the project:
JRE System Library - It doesn't look like I'm allowed to include with my software...
Java Advanced Imaging API. It looks like I will no longer be using this. Having done some more testing with my application, I have found bugs with this api, following operations with the
Tiffformat, the primary reason for its use. I'm incredibly sorry for confusions this may cause.
Apache Commons IO Library - The libraries are licensed under the Apache 2.0 license
JFontChooser. According to this Stack Overflow Post, it is Open Source, however,
I am unable to exactly find which license it really uses in the documentation, nor its download link (However, I have reasons to believe it uses the MIT license).It uses the MIT license, it says at the download location, and the license file in the package is an exact match of the MIT license.
Jython. The OSI claims that this fits the Open Source Definition, and the license itself says that it is very permissive. It should be noted that I am re-evaluating its usefulness within my application, and that I am considering its removal.
I have multiple image files as "sample" files that users can build upon that I hope to include within my project. These files are images that I have found online on various sites. Many of them are licensed under a Creative Commons ShareAlike license (CC-BY-SA). I'm unsure of whether the ShareAlike clause will be an issue, but I can always remove them and substitute them with pictures of my own (I will likely do that in fact).
Aside from the general development guidelines and files that I created for my use during the development of the project, there's nothing else that isn't mine.
What I would like:
A copyleft clause -> This would allow me to sort of control re-licensing the project under different terms, thus providing different rights.
I would like to see if I can discourage forking and derivatives for my project, more so from the general developer community. As I noted above, I wrote the application for my final (or cumulative) project for school. Since I'm 15, I'm still learning the nips and bits of Java, and it is still a learning experience for me.
I've also tried making a friendly environment from within my application, to submit feature requests, bugs and ideas. I'm planning on doing this from where I will be hosting the project as well (likely on my own website). I will also likely be hosting the source code, as well as the compiled application from there.
I don't mind using a license that people haven't heard of, as long as it is open, and it fulfills what I would like it to do.
I might be interested in dual-licensing here: According to this answer, I would likely license a restrictive license like I've noted above, but then a permissive license when used for educational uses. I would likely use the Apache or MIT license.
I really also want to note that if someone can convince me to license my application in a different way, I am open to these sorts of suggestions.
I want my application to be open, but if I do receive a lot of backlash, I can always just place my program under a copyright, then dictate my own terms, and provided special rights for educational use. But then that's just a pain. I want my program to be Open. This is a learning experience in all directions for me - learning java, learning what makes open projects.
Which license would be best suited for my purposes?