PDA

View Full Version : Third Party Development Community



daddyogreman
February 19th, 2021, 00:12
So bear with me here...I'm new to peering under the guts of Fantasy Grounds. Been using it happily for quite some time but only recently did I open up my data folder and type unzip. As a developer by trade, I figured why not.
Some observations:
- Learning the ropes can be rough. There's some documentation for the FG API's, but I was unable to find anything at all for CoreRPG. I had to just start pouring over the code for that. I managed to find one channel #mod_creation in the official Fantasy Grounds discord server where people have been super helpful. And I've bothered Kelrugem WAAAY too much with PM's to obtain what little knowledge I have thus far.

- Knowledge silos galore! While people have been awesome, I've left myself wondering many times whether or not I'm doing things in a "Best Practices" approach in regard to FG extensions with the code I'm writing. People can be helpful, but people aren't really reviewing my code to give me suggestions aside from quick one-offs here and there on the discord channel mentioned above. It seems most people have their own extensions, many of those extensions (from what I've seen) are written differently and don't necessarily follow any kind of accepted convention. It's the Wild West out there!

- Attached files of the Gods only know which version of what extension (links to posts in the middle of a 30 page thread to get to the currently active, latest extension file)

- Single ownership of extensions. This means whenever there's a breaking change to either Fantasy Grounds API's or the ruleset the extension is based off of, folks are at the mercy of whoever wrote the extension to get it updated.

- While I understand there's nothing wrong with this approach if people are happy, I'd love to gauge any interest in forming an actual development community for people who may want to take a step towards something more. An umbrella under which we can gather up a bunch of extensions and the folks who wrote them in one place where we can review code, provide insight and mentoring and generally help make both ourselves and our extensions better. I've seen a few extensions hosted on github and the like, and I've love to take that one step further with anyone interested.

- My one and only extension (https://gitlab.com/ccthiel/CoreRPG-Combat-Enhancer) (thus far) is hosted in gitlab. The benefits of putting things there (or somewhere similar) are:
- Anyone can readily access my code, file issues or suggestions, fork my code and make merge requests, etc.
- Any time I check in any code, a new extension file is automatically built that can be accessed via a link. Using git tags, I can make essentially a permanent link to the latest version of my extension. No more uploading and re-uploading extensions files to the forum. One Link to rule them all!
- Code reviews!
- A far better experience when it comes to creating and tracking issues with your code. Bugs could be doled out to willing folks to fix and submit merge requests for.
- A handful of people that are able to directly contribute to an extension as opposed to a single author, with everyone else able to fork and submit merge requests to those contributors for review.
- Eventually a list of extensions that can be as close to guaranteed as you get to always being up to date (or will be very shortly), will always follow the same conventions (in order to minimize/eliminate extensions not playing well together), and will have a handful of people ready and willing to help with any of the extensions whenever needed.
- A community with which to ask questions about module/extension/etc development. Not to say this isn't already there (it is!) but, this would be far more code centered with people able to look your code over and provide specific input towards it. Even perhaps when someone wants to start a new extension, they solicit some help in the form of people signing up to mentor the development in the form of code reviews and the like. In time perhaps even a community driven wiki and documentation!

Gitlab has the concept of a group under which any number of projects can live. The main purposes of a group is to collect a bunch of projects that have something in common (Fantasy Grounds!) but also to handle permissions, which can be set on a group wide level or on a per project level.
I've even snagged the group name fantasy-grounds (https://gitlab.com/fantasy-grounds) in gitlab and I'd be happy to move my extension into this group and start bringing anyone else along for the ride that's interested.

Just food for thought. Anyone interested?

madman
February 19th, 2021, 02:09
Was looking at this.
Seems the link is broken.
(https://gitlab.com/ccthiel/CoreRPG-Combat-Enhancer)https://gitlab.com/ccthiel/CoreRPG-Combat-Enhancer

Delay my last it is working now.

Madman..

daddyogreman
February 19th, 2021, 02:11
Oops! It was brought to my attention my extension link wasn't working. My fault! I thought I had that project set to public - it wasn't. Anyhow, just updated the project to public so the link above will work.

Nylanfs
February 19th, 2021, 02:13
I assume you have found the Armory (https://www.fantasygrounds.com/forums/forumdisplay.php?44-Armory-(campaigns-modules-rulesets-maps-and-tokens)) and the Workshop? (https://www.fantasygrounds.com/forums/forumdisplay.php?42-The-Workshop)

How about the #mod_creation channel in discord (https://discord.gg/aYMp2vg8)?

SilentRuin
February 19th, 2021, 02:18
I see nothing inaccurate in anything you say. However, while most extension developers would be happy to give their advice, I think your work is cut out for you to find people willing to code review another's extension.

Speaking from being here since June of last year, learning .lua/.xml from scratch using only existing free extension as my first learning tool that I modified for my own uses and then put out in these forums with permission from the original author, and learning all of this from scratch using notepad++ (searches with unzipped 5E/CoreRPG code), and google searches... and of course the dev document (https://fantasygroundsunity.atlassian.net/wiki/spaces/FGCP/pages/996644285/Developer+Guide)...

My firm opinion is you can only become an expert and learn by making mistakes. Honestly its more time consuming and more prone to error but you will learn things you would not otherwise simply being told how to do it.

Plus, I would HATE to have anyone code review my code - some of its huge and been rewritten many times and had to be trial and errored past bug and simple it can't be done things to gerry rig it into a working thing. You can't learn that with a code review. Only blood spilled in the trenches will get you that kind of knowledge. Then... when you finally get something working.. and you look back at that feeling you had before you started of it all being crazy and unknowable?

That felling will double.

Do it the hard way is my advice, its the only way you can survive in this crazy environment of extension writing. Probably the only one that thinks this way but truly IMHO.

daddyogreman
February 19th, 2021, 02:25
I assume you have found the Armory (https://www.fantasygrounds.com/forums/forumdisplay.php?44-Armory-(campaigns-modules-rulesets-maps-and-tokens)) and the Workshop? (https://www.fantasygrounds.com/forums/forumdisplay.php?42-The-Workshop)

How about the #mod_creation channel in discord (https://discord.gg/aYMp2vg8)?

Yup. People have been super helpful in the discord channel and I'm hoping my post doesn't come across as bashing the community or anything! People have been really friendly and helpful and I'm quite grateful.
I just feel like posts on a forum isn't necessarily the best way to go about collaborating over code and I think building out a community around a tool that's made exactly for sharing and collaborating with code could have some fantastic results in the form of established coding conventions, mentorship, code reviews and many other things.

daddyogreman
February 19th, 2021, 02:42
As a case in point, the extension i just released isn't ground breaking in any way. I just added a couple things that were already available in other extensions together into one small extension but the main point was that I'm no longer reliant on someone else to fix it if it's broken. ( Well and in this case to bring it out and under a CoreRPG extension).
If the extension had multiple maintainers I probably wouldn't have done this to begin with. (Except I really wanted this to be CoreRPG but that's kinda an exception)

daddyogreman
February 19th, 2021, 02:50
And as another case in point, anyone using my extension is free to fork it and fix an issue if there is one and they don't want to wait for me to get around to it. Then they could submit a merge request back into my repo and voila! Community development on an extension and I wasn't a bottleneck for anything! And if they keep doing it, I eventually just grant them permission to commit straight to the repo WITHOUT a merge request and then there's multiple people maintaining the extension and then we all sing Kumbaya and have a campfire.
That's my goal, anyway.

LordEntrails
February 19th, 2021, 03:47
As stated, none of your observations are wrong, not really. But as you already know, it takes a leader to put something like this together. So far, no one has stepped up to do that. Plus, it's one of those things that can't be regulated, so if it works, it is going to take time to bring other developers on board, by showing them the advantages to themselves of joining.

Some folks won't want to learn Git, others won't want to be responsible, and some just won't know etc, etc, etc. But, over time, such may develop if their is someone to lead and provide value over time.

Two things to be aware of;
- The FG Forge. SmiteWorks is currently developing a tool for distribution, updating and monetarization of community extensions. We have little ide of how this might work, and it might even be done with a Git (or similar) backend.
- Licensing. Many of the older extensions were posted without any type of share or licensing statement. Therefore folks need to take a conservative approach and not re-use without permission. One of my own pet projects is to get folks to be explicit about the license the want to post their extensions with. So that (hopefully) others developers can take up their code in the future. See the link in my sig for the start of the effort in that regards.

Kelrugem
February 19th, 2021, 14:37
So bear with me here...I'm new to peering under the guts of Fantasy Grounds. Been using it happily for quite some time but only recently did I open up my data folder and type unzip. As a developer by trade, I figured why not.
Some observations:
- Learning the ropes can be rough. There's some documentation for the FG API's, but I was unable to find anything at all for CoreRPG. I had to just start pouring over the code for that. I managed to find one channel #mod_creation in the official Fantasy Grounds discord server where people have been super helpful. And I've bothered Kelrugem WAAAY too much with PM's to obtain what little knowledge I have thus far.

- Knowledge silos galore! While people have been awesome, I've left myself wondering many times whether or not I'm doing things in a "Best Practices" approach in regard to FG extensions with the code I'm writing. People can be helpful, but people aren't really reviewing my code to give me suggestions aside from quick one-offs here and there on the discord channel mentioned above. It seems most people have their own extensions, many of those extensions (from what I've seen) are written differently and don't necessarily follow any kind of accepted convention. It's the Wild West out there!

- Attached files of the Gods only know which version of what extension (links to posts in the middle of a 30 page thread to get to the currently active, latest extension file)

- Single ownership of extensions. This means whenever there's a breaking change to either Fantasy Grounds API's or the ruleset the extension is based off of, folks are at the mercy of whoever wrote the extension to get it updated.

- While I understand there's nothing wrong with this approach if people are happy, I'd love to gauge any interest in forming an actual development community for people who may want to take a step towards something more. An umbrella under which we can gather up a bunch of extensions and the folks who wrote them in one place where we can review code, provide insight and mentoring and generally help make both ourselves and our extensions better. I've seen a few extensions hosted on github and the like, and I've love to take that one step further with anyone interested.

- My one and only extension (https://gitlab.com/ccthiel/CoreRPG-Combat-Enhancer) (thus far) is hosted in gitlab. The benefits of putting things there (or somewhere similar) are:
- Anyone can readily access my code, file issues or suggestions, fork my code and make merge requests, etc.
- Any time I check in any code, a new extension file is automatically built that can be accessed via a link. Using git tags, I can make essentially a permanent link to the latest version of my extension. No more uploading and re-uploading extensions files to the forum. One Link to rule them all!
- Code reviews!
- A far better experience when it comes to creating and tracking issues with your code. Bugs could be doled out to willing folks to fix and submit merge requests for.
- A handful of people that are able to directly contribute to an extension as opposed to a single author, with everyone else able to fork and submit merge requests to those contributors for review.
- Eventually a list of extensions that can be as close to guaranteed as you get to always being up to date (or will be very shortly), will always follow the same conventions (in order to minimize/eliminate extensions not playing well together), and will have a handful of people ready and willing to help with any of the extensions whenever needed.
- A community with which to ask questions about module/extension/etc development. Not to say this isn't already there (it is!) but, this would be far more code centered with people able to look your code over and provide specific input towards it. Even perhaps when someone wants to start a new extension, they solicit some help in the form of people signing up to mentor the development in the form of code reviews and the like. In time perhaps even a community driven wiki and documentation!

Gitlab has the concept of a group under which any number of projects can live. The main purposes of a group is to collect a bunch of projects that have something in common (Fantasy Grounds!) but also to handle permissions, which can be set on a group wide level or on a per project level.
I've even snagged the group name fantasy-grounds (https://gitlab.com/fantasy-grounds) in gitlab and I'd be happy to move my extension into this group and start bringing anyone else along for the ride that's interested.

Just food for thought. Anyone interested?

As I wrote on Discord, I would be interested into that; Bmos also uses on GitHub, so, I think Bmos may be interested into that, too :)

So, for the 3.5e/PF1 community I think this may be possible, as you may have already seen, we already try to help each other here on the forums to make our extensions compatible :) But as you also know, for me it takes a bit until I can look at those things :D

Vam
February 19th, 2021, 23:09
Count me in. I recently released ChatBat on Github but I also love Gitlab and would be happy to move it over to your group. I'd also appreciate code reviews, and would be happy to attempt to give code reviews. I was a professional developer up until very recently, so I understand how valuable that process is.

I spent most of last weekend digging myself into a bad hole with ChatBat and hope to undo some of the damage this weekend. The problems stem from not being familiar with the ins and outs of extension development. I need to re-check my understanding of some fundamentals to see where I went off the rails. I use IntelliJ IDEA to edit Lua files, which is amazing and really helps me to find relevant code in the rulesets to what I'm working on. I should probably lean more on the forum and discord.

Thanks for initiating this.

daddyogreman
February 21st, 2021, 02:29
Awesome!

So the whole goal here is that there's not just one person holding the keys to the kingdom, so to speak. I've made a discord server (https://discord.gg/yAXPgR8Bc8). While I'm happy to be an admin of the group, I'm gonna look into what it means in gitlab to put a project under the group vs just sharing it with the group.
I DO know if you actually start a project under the group there are group wide permission settings that the project will inherit, unless you override them. This does mean, I believe, that admins of the group are also admins of your project. I'm not sure if this can be changed but I'm going to look into it.
I do however think there should be on hard rule - any project either within the group or shared by it should be GNU GPL licensed. I think it only fair if you're going to use group resources to help with your project, you should be giving that project back the community without restrictions.
Anyhow, I'm going to do a bit of research into gitlab. Anyone wanting to join the group should send me a PM with their email or join up on the discord server and I will send you an invite to the gitlab group. Thus far I'm not planning on using anything that requires a paid subscription to gitlab - though if people are setting up builds with their projects (which I whole heartedly encourage and am happy to help out with!) we may eventually be bumping into the max free CI/CD minutes of gitlab - which I think is 400 minutes per month. So that might be something we have to visit if we approach this limit.
I'm not an expert at all when it comes to writing extensions. I've written one tiny one. But if we get some folks in here, we can start helping each other out!
Another case in point - if some of these extensions were in here that have been updated for the new new rulesets, and were done so using squashed merge requestes, people such as myself could go in after the fact and look to see exactly what was needed to get the extensions working again and potentially go and do the same thing with their own! Or at least use it for some guidance.

daddyogreman
February 21st, 2021, 02:56
Ah perfect. So there IS a couple approaches here if you want your project to be part of this. Whatever the approach, you should become a member of the group in gitlab. Just ask and I'll make you a member of the umbrella group Fantasy Grounds. The approaches:
1) You make your projects within that group then, or within any of the sub groups.
The pro and con here - Anyone that has permissions to the group itself will have those same permissions within your project. If you want to fully share ownership of the project, this might be the path for you. However, I totally get it if people don't want to go this route - I'm not so sure even I am willing to just willy nilly give permissions to folks I don't know. Sooo...the second approach, which might be the better of the two, for now at least:
2)
You just share your project with the Fantasy Grounds group. In this case, you maintain control over your project, you decide what level of permissions people in the group have to your project (I'd recommend developer as folks in the group can fork and submit merge requests, but can't touch any of your protected branches) and you can revoke those permissions at any point. The project stays under your gitlab URL and you can change your mind at any point and back out of the group. Keeping in mind I think we will have a requirement that all projects involved in this group are GNU GPL'd, so even if you back out whatever you've done to that point will still fall under that license.

This is exciting! Let me know and I'll get you on board as part of the group and set up on the discord server! And I'm going to share my one extension with that group under the developer level!

daddyogreman
February 21st, 2021, 03:02
Just shared my project with the gitlab group and I definitely think it's the way to go vs having the projects actually in the group. Anyone in that group will now by default have developer access to my project but I retain control of it - I can revoke group access to the project if I want. I could individually add higher access to members of the group I grow to trust, etc.
Now I just need some emails for people that want to join up!

daddyogreman
February 21st, 2021, 06:57
Got a discord server (https://discord.gg/w8nxCmmRTz) up and running. Pretty bare bones at the moment. But I'm kinda envisioning the discord server (https://discord.gg/w8nxCmmRTz) being the main form of communication and the gitlab group (https://gitlab.com/fantasy-grounds-unofficial-developers-guild) being how you're granted access to the various repositories.

Trenloe
February 21st, 2021, 07:17
I do however think there should be on hard rule - any project either within the group or shared by it should be GNU GPL licensed. I think it only fair if you're going to use group resources to help with your project, you should be giving that project back the community without restrictions.
I'd be very careful about using the GNU GPL license, for a number of reasons. The general allowance by SmiteWorks for people to use/base their extensions on existing FG code is that they're using that code with permission from SmiteWorks and that any extension code based on FG code could be merged back into the base product. Release of an extension under the GPL make's it very difficult for SmiteWorks to do that. And, for most parts, you're taking FG code released under a different license and then releasing it under the GPL, which could be invalidating the license the FG code was released under.

I'm all for people developing FG extensions using existing FG code as the basis and giving back to the community. I also very much like seeing extension code becoming a part of the base product. Releasing an extension under the GPL could make the former break the SmiteWorks license for that code and make the latter very hard/impossible.

For example, I specifically don't release my code under a GPL. I allow other community developers to use that code - out of politeness and courtesy I expect them to ask my permission and give me credit. Because my extensions all use SmiteWorks code to some extent (it'll be virtually impossible for them not to), SmiteWorks can take any aspect of that code and release it in any Fantasy Grounds products. In fact, a number of my extensions have made it back into the Fantasy Grounds base code. If I'd released my extension code under the GPL SmiteWorks couldn't do that without breaking GPL and non-GPL code out into separate files and detailing separate licenses - making the task very difficult for them and probably not making it worth their while, resulting in less/no community code making it back into the base product.

I'm completely behind releasing FG extensions to the community and making it clear what the usage requirements/license that the work is released under, as long as that doesn't change the original license/requirements any code being used was released under, and that it doesn't result in SmiteWorks not being able to use that code in the future to make it available to all via the base FG product. So, if anyone releases FG extensions to the community please be aware of whatever license you're releasing the code under, whether you can actually use that license to change existing code, and what the implications of using that license are.

Moon Wizard
February 21st, 2021, 07:22
If you are using our code as the basis to develop your extensions, or copying our code to replace assets/scripts; you do not have the rights to enter that code into another license. You should be clear that only new code created for your community project is covered under whatever license you choose; and that code copied from our code remains under our license.

Also, to Trenloe's point; we can't incorporate any code which is under a license not owned by the author, so open source license projects will most likely never be considered for incorporation since they would have to be rewritten from scratch.

Regards,
JPG

Vam
February 21st, 2021, 13:22
Agreed on the GPL thing. I wanted to put an MIT license on my ChatBat extension, but I wanted to double check that I hadn't copied anything out of SmiteWorks code. I know I've copied a line of code here or there, but I don't think a single line of code should be an issue.

I've joined the discord server, and I'll cooperate with the GitLab project one way or another. I'm hoping to put up an early release of what I was working on yesterday, which is a FG test harness for unit and behavioural tests. I finished a first pass of my gherkin parser (https://en.wikipedia.org/wiki/Cucumber_(software)) last night, and used a TDD (https://en.wikipedia.org/wiki/Test-driven_development) approach with the unit testing features to build it. I'm hoping to add support for Lua promises to support async behaviour and get some documentation together today before I do an initial release, and then I'll use it for real with ChatBat which will certainly result in fixes and enhancements.

I really like the idea of peer code reviews, since I'm pretty new to both writing extensions and Lua itself.

Kelrugem
February 21st, 2021, 13:44
Yes, I am also against the GPL thingy :) (In the case of my height extension I could not avoid it because of the original author; but when I start writing codes again, I intend to rewrite it to get rid of the GPL license) In my opinion the license should be like: Smiteworks is allowed and can integrate the code if they want, and in case of a community dev, those can use and change as they want, but they should mention other people as authors then, too, and the code should only be used for free extensions :) (for the latter: At least there should be of course communication with all authors when someone wants to sell stuff, in the forge for example :D As for me, I do not want to sell code)

Vam
February 21st, 2021, 14:27
I'm happy for anyone who can use my code to do so, for any purpose. The only right I need to assert is one that prevents someone else from claiming ownership in such a way as to prevent me or others from using that code. If I wanted to code for money I think there are more effective ways to do so. Although some paid extension writers might know better!

daddyogreman
February 21st, 2021, 22:45
I'd be very careful about using the GNU GPL license, for a number of reasons. The general allowance by SmiteWorks for people to use/base their extensions on existing FG code is that they're using that code with permission from SmiteWorks and that any extension code based on FG code could be merged back into the base product. Release of an extension under the GPL make's it very difficult for SmiteWorks to do that. And, for most parts, you're taking FG code released under a different license and then releasing it under the GPL, which could be invalidating the license the FG code was released under.

I'm all for people developing FG extensions using existing FG code as the basis and giving back to the community. I also very much like seeing extension code becoming a part of the base product. Releasing an extension under the GPL could make the former break the SmiteWorks license for that code and make the latter very hard/impossible.

For example, I specifically don't release my code under a GPL. I allow other community developers to use that code - out of politeness and courtesy I expect them to ask my permission and give me credit. Because my extensions all use SmiteWorks code to some extent (it'll be virtually impossible for them not to), SmiteWorks can take any aspect of that code and release it in any Fantasy Grounds products. In fact, a number of my extensions have made it back into the Fantasy Grounds base code. If I'd released my extension code under the GPL SmiteWorks couldn't do that without breaking GPL and non-GPL code out into separate files and detailing separate licenses - making the task very difficult for them and probably not making it worth their while, resulting in less/no community code making it back into the base product.

I'm completely behind releasing FG extensions to the community and making it clear what the usage requirements/license that the work is released under, as long as that doesn't change the original license/requirements any code being used was released under, and that it doesn't result in SmiteWorks not being able to use that code in the future to make it available to all via the base FG product. So, if anyone releases FG extensions to the community please be aware of whatever license you're releasing the code under, whether you can actually use that license to change existing code, and what the implications of using that license are.

So what is the recommendation here in regard to licensing? I want to be able to both use Smiteworks code and have the chance of having something make it back into the base FG product, but I also want anyone to be able to clone my code and run with it as they see fit.
Is there a specific license here? Or do I just come up with my own licensing wording (or use something standard I can slap in my LICENSE file...)

daddyogreman
February 21st, 2021, 22:52
Oh, except I want to forbid people from cloning my code, modifying it then selling it. I want it and all derivatives of it to be free and accessible to anyone to clone and modify as they wish.

Vam
February 21st, 2021, 22:56
My personal preference is MIT, but it is very permissive. Anyone can use my code for any reason, including repackaging and selling it. The copyright though belongs to me, so they can't assert their own copyright that would supercede mine. That works for me. I'm not a fan of anyone ripping others off by selling free code, but I don't imagine that would actually be very likely. And with MIT there is no problem at all with Smiteworks running with it if they wanted to incorporate anything.

Dire Weasel
February 21st, 2021, 23:09
While I have not yet written FG extensions, I was a fan of MIT back when I wrote WoW addons.

daddyogreman
February 21st, 2021, 23:10
My personal preference is MIT, but it is very permissive. Anyone can use my code for any reason, including repackaging and selling it. The copyright though belongs to me, so they can't assert their own copyright that would supercede mine. That works for me. I'm not a fan of anyone ripping others off by selling free code, but I don't imagine that would actually be very likely. And with MIT there is no problem at all with Smiteworks running with it if they wanted to incorporate anything.

Does MIT cover the bases of being able to use Smiteworks code in my extensions and Smiteworks being able to potentially incorporate the code back into the base product? Looks like if someone was so inclined they could take my code, wrap it up and sell it but I suppose that'd be on their conscience if they did so.

Dire Weasel
February 21st, 2021, 23:15
Keeping in mind I’m not a lawyer, it should allow SmiteWorks (or anyone) to incorporate your code.

It does not free you from your obligations to comply with SmiteWorks’ terms on their code, but no license can.

https://https://opensource.org/licenses/MIT (https://opensource.org/licenses/MIT)

LordEntrails
February 22nd, 2021, 00:12
I'd be very careful about using the GNU GPL license, for a number of reasons. The general allowance by SmiteWorks for people to use/base their extensions on existing FG code is that they're using that code with permission from SmiteWorks and that any extension code based on FG code could be merged back into the base product. Release of an extension under the GPL make's it very difficult for SmiteWorks to do that. And, for most parts, you're taking FG code released under a different license and then releasing it under the GPL, which could be invalidating the license the FG code was released under.

I'm all for people developing FG extensions using existing FG code as the basis and giving back to the community. I also very much like seeing extension code becoming a part of the base product. Releasing an extension under the GPL could make the former break the SmiteWorks license for that code and make the latter very hard/impossible.

For example, I specifically don't release my code under a GPL. I allow other community developers to use that code - out of politeness and courtesy I expect them to ask my permission and give me credit. Because my extensions all use SmiteWorks code to some extent (it'll be virtually impossible for them not to), SmiteWorks can take any aspect of that code and release it in any Fantasy Grounds products. In fact, a number of my extensions have made it back into the Fantasy Grounds base code. If I'd released my extension code under the GPL SmiteWorks couldn't do that without breaking GPL and non-GPL code out into separate files and detailing separate licenses - making the task very difficult for them and probably not making it worth their while, resulting in less/no community code making it back into the base product.

I'm completely behind releasing FG extensions to the community and making it clear what the usage requirements/license that the work is released under, as long as that doesn't change the original license/requirements any code being used was released under, and that it doesn't result in SmiteWorks not being able to use that code in the future to make it available to all via the base FG product. So, if anyone releases FG extensions to the community please be aware of whatever license you're releasing the code under, whether you can actually use that license to change existing code, and what the implications of using that license are.


If you are using our code as the basis to develop your extensions, or copying our code to replace assets/scripts; you do not have the rights to enter that code into another license. You should be clear that only new code created for your community project is covered under whatever license you choose; and that code copied from our code remains under our license.

Also, to Trenloe's point; we can't incorporate any code which is under a license not owned by the author, so open source license projects will most likely never be considered for incorporation since they would have to be rewritten from scratch.

Regards,
JPG

So this point did not come up earlier in my "On Licensing: Distribution of Community Content" discussion. Could one of you please take a look at that and help me re-write it to be more accurate? https://www.fantasygrounds.com/forums/showthread.php?53781-On-Licensing-Distribution-of-Community-Content


My personal preference is MIT, but it is very permissive. Anyone can use my code for any reason, including repackaging and selling it. The copyright though belongs to me, so they can't assert their own copyright that would supercede mine. That works for me. I'm not a fan of anyone ripping others off by selling free code, but I don't imagine that would actually be very likely. And with MIT there is no problem at all with Smiteworks running with it if they wanted to incorporate anything.

Well, if my early discussion is valid, CC-BY-NC should work for what you want right? Except for the issue of allowing SmiteWorks the commercial part. Not sure...

Vam
February 22nd, 2021, 00:27
Well, if my early discussion is valid, CC-BY-NC should work for what you want right? Except for the issue of allowing SmiteWorks the commercial part. Not sure...

For me I'm happy to have it re-used in commercial work. I'd be displeased by a simple repackaging for money, but I wouldn't lose any sleep over it either. I think the closest CC license would be CC-BY-4.0, but I think MIT is more commonly known. I think that for daddyogreman the CC-BY-NC is probably good. Personally I wouldn't want to publish under his umbrella though if that required me to use his choice of license. I could always dual license under both, which would in effect be the same as just publishing under the one I want. "Your choice to allow commercial re-use or not". Heh.

LordEntrails, while I have your ear I'd like to give you a hearty thanks for all of your efforts to help extension and ruleset developers understand all this stuff!

SilentRuin
February 22nd, 2021, 00:39
The thing is - nothing you write in an extension works without smiteworks copyrighted commercial work. Period. You can't really separate what you "put on top of it" and somehow claim your part is distributable without their permission. Why licensing on selling is so limited. Now for free you can distribute it here for sure. Elsewhere? Where someone may profit from patreon or pay pal without giving Smiteworks their cut for basing all your work on theirs?

That is not legit (or so I've been told). So... tricky walk you walk doing this. I wish you luck.

Vam
February 22nd, 2021, 00:48
The thing is - nothing you write in an extension works without smiteworks copyrighted commercial work. Period. You can't really separate what you "put on top of it" and somehow claim your part is distributable without their permission. Why licensing on selling is so limited. Now for free you can distribute it here for sure. Elsewhere? Where someone may profit from patreon or pay pal without giving Smiteworks their cut for basing all your work on theirs?

That is not legit. So... tricky walk you walk doing this. I wish you luck.

I don't buy this. The code in my extensions was written by me. I can distribute it however I want. Now if my extension contains a copy of work owned by Smiteworks then it is a derivative and bound by their license. Saying they own it because their software is required to run it would be like saying that Microsoft owns every piece of software that runs on Windows. Of course I'm not a lawyer, and this is just my opinion. For me it doesn't matter anyway since I'm happy to allow commercial reuse.

SilentRuin
February 22nd, 2021, 00:51
I don't buy this. The code in my extensions was written by me. I can distribute it however I want. Now if my extension contains a copy of work owned by Smiteworks then it is a derivative and bound by their license. Saying they own it because their software is required to run it would be like saying that Microsoft owns every piece of software that runs on Windows. Of course I'm not a lawyer, and this is just my opinion. For me it doesn't matter anyway since I'm happy to allow commercial reuse.

I did not say they own it. I said you'd have to license it to get money for your extension. Different. Free is free. As long as there are no money strings attached. Because your stuff does not work without their stuff. And like art you use in a game that is copyrighted. Microsoft operating system allows commercial use. Again copyrights and licensing matter. Or so I'm learning. If I'm wrong? Happy to learn some more.

Kelrugem
February 22nd, 2021, 01:13
@SilentRuin: I think the people who were saying something about selling surely meant that in alignment with whatever extra condition there might be about selling :) (though all people who wrote and want to participate actually mentioned that they personally want to offer at least their part for free)

But yes, there are some licensing things to be aware of regards selling, for example here general information: https://www.fantasygrounds.com/filelibrary/contentlicense.html and here in regards for selling: https://www.fantasygrounds.com/forums/showthread.php?61018-Rules-for-advertising-Read-First!

(Though DMsGuild will be gone soon as we know; I think it is safe to say that the Forge (and the store) will be the main places for selling such things; for everything else one needs an extra permission as far as I know; but I am by far not an expert for such things :D )

SilentRuin
February 22nd, 2021, 01:28
My saying is always use FGU raw and if you find you want something more... search in the FG forums for something free there are plenty. But EXTENSIONS = RISK and you should always be aware of it. Writing your own extensions is best of all as you have control of the game. Paid though - you should stay away unless you really want something badly. DMsG is the ONLY place that is currently licensed with SW to do that outside of privately publisher negotiated licenses. And yes, it will soon go away for most extensions. FG Forge in dev by smiteworks will be the replacement when it gets here. Likely at that time DMsG will jettison all the extensions.

But point being - sometimes offsite people try to profit and cut Smiteworks out of the profit chain via pay pal or patreon. This was all explained to me in detail when I first tried to figure out what was legit and what was not. Legit is a publisher license with Smiteworks for any paid money. Legit is any free no money attachments at all distribution. That's it. That's all. Or so is my understanding as it's been told to me. And trust me there is a whole other layer of licensing going on in DMsG - WOTC, DMSG, and SW - and WOTC is pulling out for extensions so the whole thing will be going away. Again - as I understand it. Then, for paid, there will only be private publisher license agreements with SW or their new FG Forge stuff when it comes out. Nothing else.

Oh and so there is no misunderstandings, when I'm talking about extensions - I'm talking about extensions.xml files that hook in code that is based on anything that ties into licensed API/engine calls used in the Rulesets and the Smiteworks engine API code. If you have something that literally just hooks into their stuff but has 0 of that in it (not sure any extensions I've seen really do that sort of thing) then that is obviously not part of what I'm talking about. Hook in and use their licensed copyrighted stuff? Then your Hooked in on that licensed copyrighted stuff.

LordEntrails
February 22nd, 2021, 01:51
LordEntrails, while I have your ear I'd like to give you a hearty thanks for all of your efforts to help extension and ruleset developers understand all this stuff!
Thanks :) But I don't understand it as well as I once thought I did :) But we'll figure out how to make it at least a bit clearer soon.

daddyogreman
February 22nd, 2021, 02:33
I just need to know what license to use for my extensions and what license people would be comfortable with if they want to be part of the project with their own extensions. Didn't get into this for the lawyery stuff - I just wanna write some code to make Fantasy Grounds better for myself and other folks.

Zacchaeus
February 22nd, 2021, 04:02
Doesn’t posts #16 and #17 answer that?

daddyogreman
February 22nd, 2021, 04:04
Doesn’t posts #16 and #17 answer that?

Kinda? Doesn't point me in a solid license direction.
I'm under the impression I'm fine if I go with MIT for the license.

LordEntrails
February 22nd, 2021, 15:18
I think we know GNU GPL doesn't work. No idea about MIT. Hoping Doug or John get a chance to reply soon.

Moon Wizard
February 22nd, 2021, 16:25
I think I put it pretty succinctly here:
https://www.fantasygrounds.com/forums/showthread.php?66215-Third-Party-Development-Community&p=580800&viewfull=1#post580800

We already have stated in other places that we give revocable permission to use any of our code in any of your products; as long as a) it is made freely available to the community; or b) it is sold on the FG store. We retain the revocable right in case of publisher conflicts or other unforeseen scenarios.

If you have specific questions, you'll need to spell them out. I'm very busy and already working every day; so I don't always have time to review entire threads or walls of text.

Regards,
JPG

daddyogreman
February 22nd, 2021, 19:40
I think I put it pretty succinctly here:
https://www.fantasygrounds.com/forums/showthread.php?66215-Third-Party-Development-Community&p=580800&viewfull=1#post580800

We already have stated in other places that we give revocable permission to use any of our code in any of your products; as long as a) it is made freely available to the community; or b) it is sold on the FG store. We retain the revocable right in case of publisher conflicts or other unforeseen scenarios.

If you have specific questions, you'll need to spell them out. I'm very busy and already working every day; so I don't always have time to review entire threads or walls of text.

Regards,
JPG

Reading over the MIT license, I think it covers the bases fine here with a tiny bit of modification to remove the copyright requirement. I'm just going with that.



Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, re-license and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Moon Wizard
February 22nd, 2021, 21:53
You still need to clarify that it is only your "Software" that you are granting rights on; and not any code acquired from anyone else (including our code).

I would personally hesitate to "modify" any official license text; because they have been crafted for a very specific purpose by lawyers. Modifications to the license text may have unintended consequences.

As a general aside, we will not integrate any extension or ruleset code into our code with any sort of external licensing. We will only consider code where the code writer returns full rights. It's just too risky licensing wise to consider anything else.

Regards,
JPG

Nylanfs
February 23rd, 2021, 12:15
Since you aren't the owner of said license you can't change it (unless specifically granted by the license terms). Copyright still applies to the license itself.

bmos
February 23rd, 2021, 12:35
When asked last year to add a license to my extensions, I ended up picking GPL (which I clearly describe as only being applicable to the segments of code that I wrote) because I like open source systems (you can see my license here (https://github.com/bmos/FG-PFRPG-Live-Hitpoints/blob/main/LICENSE.md)).
If that means that SmiteWorks can't bring it back on board I would like to re-license or re-write (where necessary) to avoid this failing (as I frequently hear from users that some of my functionality should be integral to the 3.5E ruleset).


We will only consider code where the code writer returns full rights.
Is collaborative work even possible given this? Surely there must be a way to include specific allowance for unlimited use by SmiteWorks.
Can I just declare that the code I write is property of SmiteWorks and therefore covered by the FG Community Use authorization?
I don't mind assigning ownership to SmiteWorks if it makes it easier to collaborate with the community.

SilentRuin
February 23rd, 2021, 14:27
I use one of these two licenses as the mood strikes me...

Author: SilentRuin
Copyright © 2020
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
https://creativecommons.org/licenses/by-nc-sa/4.0/



Author: SilentRuin
Copyright © 2021
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
https://creativecommons.org/licenses/by-sa/4.0/

bmos
February 23rd, 2021, 16:20
I use one of these two licenses as the mood strikes me...

Author: SilentRuin
Copyright © 2020
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
https://creativecommons.org/licenses/by-nc-sa/4.0/



Author: SilentRuin
Copyright © 2021
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
https://creativecommons.org/licenses/by-sa/4.0/It just seems like that still leaves it in a state that SmiteWorks is not willing/able to use due to their own licensing preferences.
This is fine for anyone who has no desire to contribute back to the base rulesets, but I'd love to have some of the functions I have written be moved back into the rulesets (for the more broadly-appealing features).

SilentRuin
February 23rd, 2021, 16:25
It just seems like that still leaves it in a state that SmiteWorks is not willing/able to use due to their own licensing preferences.

True - nothing will make you comfy in what you choose. Any time your software disappears down the rabbit hole of some copyrighted API by SW you are overall subject to that copyright. It's basically a no win situation in terms of the perfect license. I basically don't worry about it as the whole concept to me is that my little pseudo piece of film over the FGU application as a whole is under their full control. They can legally withdraw the ability for that (I think as I've read things) to ever be sold or used. Much as WOTC is doing in DMsG with extensions in general - where they will soon be removed if they don't fit some weird set of rules.

But the licenses I quoted above? And other creative common licenses? Are a good grey area compromise. There is no win in this game - only - meh that's good enough.

However, if someone comes up with an airtight license for extensions - I'd be happy to use it.

Also, I should point out if SW really wants something they can acquire it in communications with the author. As in the case that triggered the whole DMsG/WOTC drama.

Note:
You'd have to have a hell of a lot of self sustained code for that to happen though. I'd say almost 99% of extensions are not that and SW could just code in the features they wanted. And if they did incorporate a paid extension features (likely nothing to do with that said extension) with a better solution likely - then that extension would become superfluous for those who had it and probably should be deactivated. Another great reason NOT to buy paid for extensions unless you are willing to embrace the motto... EXTENSIONS = RISK - BUYER BEWARE :)

Moon Wizard
February 23rd, 2021, 17:19
By default, you maintain copyright over your own code; and can grant permission to people to use it by posting it publicly and making it available. No special licensing is needed. By default, you retain full rights. All this means is that if someone else wants to use your code; they just need to get your permission. Again, no special licensing needed.

The only reason for special licensing is if you want to "enforce" some limitation on it's use or automatically "grant" implied rights to others (for example re-use in other mods without explicit approval).

The main issue why I don't touch code with any special licensing is that usually people pick some sort of OGL option; which usually includes some sort of enforced attribution in perpetuity or other requirements, as well as muddying the water as to what is OGL vs. our code.

Personally, I don't see why anyone really needs any special licensing for mods. You're making them explicitly available, and anyone who wants to re-use or incorporate simply has to ask. (including us)

Regards,
JPG

Kelrugem
February 23rd, 2021, 17:58
By default, you maintain copyright over your own code; and can grant permission to people to use it by posting it publicly and making it available. No special licensing is needed. By default, you retain full rights. All this means is that if someone else wants to use your code; they just need to get your permission. Again, no special licensing needed.

The only reason for special licensing is if you want to "enforce" some limitation on it's use or automatically "grant" implied rights to others (for example re-use in other mods without explicit approval).

The main issue why I don't touch code with any special licensing is that usually people pick some sort of OGL option; which usually includes some sort of enforced attribution in perpetuity or other requirements, as well as muddying the water as to what is OGL vs. our code.

Personally, I don't see why anyone really needs any special licensing for mods. You're making them explicitly available, and anyone who wants to re-use or incorporate simply has to ask. (including us)

Regards,
JPG

Yeah, that sounds like the most reasonable solution, thanks :) I will do it like that now then, always better to ask other authors for permission :)

SilentRuin
February 23rd, 2021, 18:03
By default, you maintain copyright over your own code; and can grant permission to people to use it by posting it publicly and making it available. No special licensing is needed. By default, you retain full rights. All this means is that if someone else wants to use your code; they just need to get your permission. Again, no special licensing needed.

The only reason for special licensing is if you want to "enforce" some limitation on it's use or automatically "grant" implied rights to others (for example re-use in other mods without explicit approval).

The main issue why I don't touch code with any special licensing is that usually people pick some sort of OGL option; which usually includes some sort of enforced attribution in perpetuity or other requirements, as well as muddying the water as to what is OGL vs. our code.

Personally, I don't see why anyone really needs any special licensing for mods. You're making them explicitly available, and anyone who wants to re-use or incorporate simply has to ask. (including us)

Regards,
JPG

I did because I was told to do it in these forums. Should I remove all licensing then from the code?

daddyogreman
February 23rd, 2021, 18:06
By default, you maintain copyright over your own code; and can grant permission to people to use it by posting it publicly and making it available. No special licensing is needed. By default, you retain full rights. All this means is that if someone else wants to use your code; they just need to get your permission. Again, no special licensing needed.

The only reason for special licensing is if you want to "enforce" some limitation on it's use or automatically "grant" implied rights to others (for example re-use in other mods without explicit approval).

The main issue why I don't touch code with any special licensing is that usually people pick some sort of OGL option; which usually includes some sort of enforced attribution in perpetuity or other requirements, as well as muddying the water as to what is OGL vs. our code.

Personally, I don't see why anyone really needs any special licensing for mods. You're making them explicitly available, and anyone who wants to re-use or incorporate simply has to ask. (including us)

Regards,
JPG

So is there some official blurb I need stating people don't need my permission to clone/fork/hack away and do as they please with my code without having to ask me?

Moon Wizard
February 23rd, 2021, 18:17
Usually, I include a note in every XML/Lua file to check the enclosed license.html. Then, you can place some general comments in the license.html.

If I was writing a mod; I would say something like that the code is available "as is", that you use the code at your own risk, that I retain rights to the code, and that you should ask to use it elsewhere. You can change these general comments to fit the usage you want. (i.e. free to re-use at your own risk).

Regards,
JPG

LordEntrails
February 23rd, 2021, 23:37
So I put together the other thread on licensing and have been asking folks to explicitly license their code because of old code/extension no longer being supported and folks wanting to be able to re-use parts of it. And not being able to since they can't obtain permission to do so from someone not available or 'here' anymore.

I think to give some more thought to a 'preferred' approach.