godotengine / godot-docs

Godot Engine official documentation
https://docs.godotengine.org
Other
3.72k stars 3.05k forks source link

3D FPS tutorial mess #1271

Closed TwistedTwigleg closed 6 years ago

TwistedTwigleg commented 6 years ago

Hello everyone.

I've noticed that 3D FPS tutorial has been changed without me receiving any sort of notification. I only noticed this change because I was recording the video tutorial.

The fact that I was not notified in any sort of way, shape, or form is a problem, and one that needs addressing.

I am not upset with the changes per say (though I'd prefer to use get_node over $), but the fact that these changes happened without my knowledge is highly unprofessional and disrespectful to the work I've done for the community.

How I can I say I've made something if it changes without my notice? At the end of the day, the tutorial is mine, not Godot's. As I stated in part one of the tutorial:

"All assets provided are created by me (TwistedTwigleg) unless otherwise noted, and are released under the MIT license"

This includes the written material. While I have given the tutorial out for free and licensed it to the Godot community, I still own the rights to it.

Keep in mind, I've made this tutorial available for free, for anyone to view and consume as they see fit. This also was one of the tutorials voted on Patreon, something that the Godot team has taken money for. While I do not expect to see any of the money from the Patreon, money was taken for this tutorial. My work has been paid for, and I have not asked for any of the money. I created the tutorial for free, as a contributor. I think it's fair to expect some respect for my hard work (even if it was not a Patreon tutorial)

This also creates huge logistical problems as well. If the code in the Zip files are not changed as well, this leads to a conflict. The tutorial in the documentation is not even consistent with itself anymore, as in part 4 there are still get_node calls.

This does not even mention my Github repository, which also was in sync with the tutorial on the documentation. How am I supposed to keep the tutorial in sync with the repository if I'm not notified of the changes? As stated in #1212, I was fully prepared to keep the repositories in sync. Because the tutorial is out of sync with my repository, I cannot even keep working on the tutorial because I have no idea what code base people are using.

Also, looking at #1212, I noticed a change (#1202) was made before that PR was even created! Why were the changes there not mentioned, while in #1212 the concern of keeping the repositories in sync was? I was already out of sync before the concerns of being in sync were brought up!

I will not be updating my Github repository with these changes, nor will I be working on this tutorial anymore. The video tutorial will not be coming out, nor will I write part 5 of the tutorial (which was just waiting to be written, I might add).

I cannot, in good conscience, work on and for a project that treats its contributors so poorly. As I stated above, the fact that it changed is not the problem, but the fact I had no say in the matter, nor was I even notified of the change, is unprofessional and disrespectful.

Without treating your contributors with proper respect, you run the risk of having no one wanting to work for you. This is a problem, not only for me, but for those who follow. Right now, I feel I cannot suggest others go through and contribute to the documentation given how little respect is given to those who have worked hard (and for free) on the documentation.

Without giving proper respect to those who have worked hard for your community (specifically on the docs), you are exploiting those very same people.

I personally feel hurt and betrayed that I was not even notified of these changes that were made on top of my work. I have not asked for anything from these tutorials (I'm not even in the contributor list on the Godot site, for crying out loud), and the fact that my work is not even respected is highly unprofessional and hurtful.

I love using Godot, and that will not change. I will continue to make tutorials and other resources of the community, but on my own, separate from the Godot documentation.

Thank you TwistedTwigleg

(Ping @akien-mga @reduz)

mhilbrunner commented 6 years ago

Hey!

First, as the one that merged both your FPS tutorial as well as the changes to it (#1202):

Absolutely no disrespect was intended to your work or to you as a person and contributor. We value your contribution and the time you spent doing this and contributing it.

There seems to have been a misunderstanding how the godot-docs repository (and team) currently operates.

If a PR is received, it is judged based on whether it is correct and improves the status quo. If so, it is merged. Some people are more familiar with some areas of the docs (like the person originally writing a tutorial), so in cases of doubt they tend to get pinged to have the final say or givem some input.

However, nobody currently owns any part of the docs in the sense that they get notified on changes and are the only ones making a decision or changing anything.

I agree that #1202 should probably not have been merged, and if it was, the .zip should have been updated as well.

We could revert that commit, but that doesn't solve the core issue. People will update the docs. If you don't want anybody else to change anything in your tutorial (although that is covered by the MIT license, is it's intended use and is also how the docs currently operate) we need to find another solution.

Possible solutions are:

Again, sorry if this hurt you; that wasn't intended at all. We don't want to turn away contributors. :)

And please, in the future feel free to reach out on IRC or Discord if you feel wronged, even ping me personally, so we can discuss it. :) We're there to talk to you, at least I want to do everything possible to make contributors happy & keep them!

pwab commented 6 years ago

Hey @TwistedTwigleg

You know that I really appreciate your hard work on the FPS and Inverse Kinematic demo/tutorial. I can totally understand what makes you upset but I have to say that I agree with @mhilbrunner that there was no intention to betray you or any other contributor.

The fact that I was not notified in any sort of way, shape, or form is a problem, and one that needs addressing.

Yeah this got missed somehow and I didn't noticed the PR that changed this stuff too. Because I know that you wanted to keep your repo and the tutorial in sync I would have pinged you. As pinging is a really common way in godots main repository to let the main contributors know about the proposed changes this should be embedded in the docs workflow too.

My proposal would be to:

[...] This includes the written material. While I have given the tutorial out for free and licensed it to the Godot community, I still own the rights to it.

You are right and it is clearly documented in the commit history that you created the tutorial in the first place. But in fact no other consequences can be derived apart from including the copyright notice and the permission notice in all copies or substantial portions of the software. This gets even more complicated because tutorials aren't covered by MIT (as far as I know) and the Godot docs Readme cleary states that:

At the exception of the classes/ folder, all the content of this repository is licensed under the Creative Commons Attribution 3.0 Unported license (CC BY 3.0) and is to be attributed to "Juan Linietsky, Ariel Manzur and the Godot community".

But in the end it leads to the effect what the CC license is talking about:

And the Github commit log is taking care of this. So nothing more and nothing less. Please keep in mind that while working on the docs your contributions are based on the work of hundreds of people who made it possible that you have at least something to work with (I'm refering to the old wiki based godot docs). So if you really want to stay in control of your tutorials it would be better to keep them separate and only provide a link to them that can be listed in the docs or in the awesome-godot repo.

My proposal to get this onto a more solid ground:

Keep in mind, I've made this tutorial available for free, for anyone to view and consume as they see fit. This also was one of the tutorials voted on Patreon, something that the Godot team has taken money for. While I do not expect to see any of the money from the Patreon, money was taken for this tutorial.

This is a very interesting point and I have no clue how this is handled. From my point of view this should be made clear by @akien-mga or someone involved in the patreon stuff to prevent any form of confusion.


So all in all thanks again for your contributions and I feel sorry that it went this way. I'm pretty sure no one wanted to hurt you in any form as the decisions taken by @mhilbrunner were just the normal way of reacting to a proposed change.

I can only appeal to you to keep up your good work for the Godot community. I'm sure it is much appreciated.

Regards pwab

NathanLovato commented 6 years ago

the fact that these changes happened without my knowledge is highly unprofessional and disrespectful to the work I've done for the community.

Professional writer and tutor here and I can attest that the people working around here have good intentions. Godot is a large community-driven project. Things like these are bound to happen, not because people have the slightest intention to disrespect you, but just because except if you read every issue, review every pull request, read IRC feeds, you can't keep track of who does what and when.

You as an individual should make it clear to reviewers and other editors you want to be notified of changes.

My work has been paid for, and I have not asked for any of the money.

No, money has been donated to the Godot foundation. It's not like being paid a salary. Taking tasks benevolently on our own behalf (which all of us do in this thread) doesn't entitle us to any compensation.

Now, what would you like to have us do next? How can we solve this issue this time and make sure together that it doesn't happen again?

Note if I sound rougher than the others I don't mean disrespect either, but as a professional I think you're giving a long, salty rant without even giving people a chance to fix the issue beforehand while if I learned one thing giving a hand around here it's that people are eager to listen and help... If you give them a chance

TwistedTwigleg commented 6 years ago

I've taken some time to think about what has happened and believe I can express what I am trying to say in a more precise manner:


What I meant by saying the tutorial is "mine" was that even if no one read/updated/cared about the tutorial, I felt a responsibility to keep the tutorial up to date and in sync with the github repository, to the best of my abilities. That is what I was meaning by saying it's mine, not Godot's. I meant to say it's mine to upkeep and keep in sync, because I do not want to put that responsibility on others. I had anticipated doing so and was working on the next-to-last part when I discovered that the changes had been made.


So, here's what I suggest we do in moving forward, short-term: I'll upload zip files for ALL parts of the tutorial, where these zip files are the finished project for each part. The tutorial is almost finished. I only planned on going to Part 6.

Then all we will have to do is keep the zip files in sync. This will increase the size of the Git history, but I believe it is worth the cost. That way I am taking myself out of sole responsibility and anyone can contribute and change it without worrying about syncing issues outside of the documentation.


To answer direct comments:

@mhilbrunner said: Again, sorry if this hurt you; that wasn't intended at all. We don't want to turn away contributors. :)

I'm okay, and I'll be honest, I probably took it too personally. I was not upset at you, or anyone else in the community, I was just upset at the situation I was in. Thank you for quickly responding and in an honest and helpful manner. I appreciate it.

@mhilbrunner said: And please, in the future feel free to reach out on IRC or Discord if you feel wronged, even ping me personally, so we can discuss it. :) We're there to talk to you, at least I want to do everything possible to make contributors happy & keep them!

Thanks, but I don't use the IRC or Discord. In general, I like to take time to write so I can assure what I'm saying is what I'm trying to say, but this post proves that even writing has limitations without a clear head. I appreciate the offer, however, and in future will strive to address issues privately rather than in the general discussion.

@pwab said: I can only appeal to you to keep up your good work for the Godot community. I'm sure it is much appreciated.

I will, and thank you. Your post has many good points, and I agree with all of them. I just needed time to gain a level head again.

@NathanLovato said: No, money has been donated to the Godot foundation. It's not like being paid a salary. Taking tasks benevolently on our own behalf (which all of us do in this thread) doesn't entitle us to any compensation.

I was not asking for compensation, but rather pointing out is that I have been creating it benevolently, on my own time, without asking for any sort of compensation from anyone. This is the spirit of the Godot community and I have happily contributed to the community in my own way. I explained, perhaps not in the best way, that not being informed of the changes put the repositories out of sync, meaning that there is now a moderate amount of work required, if we go forward without reverting the commit, and I was disappointed that I was not made aware of the change earlier, as the work I was doing in the meantime now has to be changed, in essence, wasting my time.

As I said above to @mhilbrunner, I will in future strive to address issues privately rather than in the general discussion.

Now, what would you like to have us do next? How can we solve this issue this time and make sure together that it doesn't happen again?

What I have proposed above should fix this issue, this time. I will finish parts 5 and 6, and then I will update the docs accordingly. Moving forward, I believe something should be done to keep this from happening with other tutorials. I do like the suggestions that @pwab made, copied below:

My proposal would be to:

  • Create an issue for collecting information who wants to be pinged if parts of the docs shall be changed
  • Add a line to the PR template pointing to that specific issue and telling the contributor that he/she should comment there if he/she wants to be pinged
  • Before merging a PR the project managers look up the list in that issue and if the PR touches any topic listed there the ones linked to it should be pinged (if they didn't react on the PR by then)
reduz commented 6 years ago

Regarding copyright, everyone owns their own materials and changes, not me or Ariel, but the required license is CC-By to be put in original documentation.

reduz commented 6 years ago

@TwistedTwigleg

Keep in mind, I've made this tutorial available for free, for anyone to view and consume as they see fit. This also was one of the tutorials voted on Patreon, something that the Godot team has taken money for. While I do not expect to see any of the money from the Patreon, money was taken for this tutorial.

Money was not taken for this tutorial, and Patreon donations are not meant to pay for tutorials or features. Donations are made to finance Godot development. Rewards are just a small gift for higher pledges.

Also, it was made very clear many times that the reward will only be done if no one else did this before. It's just a compromise that work will be done on it eventually. You can read more about this here:

https://www.patreon.com/posts/godot-patreon-17142338

The idea is to make simple tutorials or demos that don't really take more than a day or two to make. Your tutorial is fantastic, If I or Thomas were to make this, it would be something much simpler explaining how to set up a camera and controls, so your work is very appreciated, but by no means something somebody took money for.

You just saved one of us time and it's very appreciated, so we can use the time to do something else for the project.. it's not like we'll just sit the whole day doing nothing.

mhilbrunner commented 6 years ago

So, here's what I suggest we do in moving forward, short-term: I'll upload zip files for ALL parts of the tutorial, where these zip files are the finished project for each part. The tutorial is almost finished. I only planned on going to Part 6.

Then all we will have to do is keep the zip files in sync. This will increase the size of the Git history, but I believe it is worth the cost. That way I am taking myself out of sole responsibility and anyone can contribute and change it without worrying about syncing issues outside of the documentation.

That sounds reasonable. If the size of the repository becomes an issue, we'll have to solve that; either by moving the .zip files to the demo repo or in some other way.

@skyace65 That means you should probably wait with https://github.com/godotengine/godot-docs/issues/1273 until this is completed.

@TwistedTwigleg Sorry again for the misunderstanding, and thank you for trying to see it from our side & keeping a level head. :) There really was no ill intent from our side. And thank you again for creating this awesome tutorial!

TwistedTwigleg commented 6 years ago

@mhilbrunner Sounds good! I’ll try to get this all done soon (not sure when, as I’ll still need to finish writing part 5, create and write part 6, and then update and upload everything. I’m guessing I’ll have this done closer to the end of April).

My apologizes as well for this misunderstanding. Now I know that there was no ill-will meant and that this whole thing was just a big misunderstanding 🙂

NathanLovato commented 6 years ago

Seems all is well now. Feel free to open other issues for other tasks related to the FPS tut. Closing this one.

akien-mga commented 6 years ago

Joining after the battle and I see that all is well in the end, and many good points were raised, so thanks all for the friendly and constructive discussion.

I just wanted to insist again on the topic of ownership, not just for @TwistedTwigleg but for all contributors and especially for the repository managers to be aware of (nowadays I'm hardly handling docs anymore thanks to the great management work of @mhilbrunner, @NathanLovato and @KidsCanCode).

All content of this repository is under a CC-BY 3.0 license, attributed to "Juan Linietsky, Ariel Manzur and the Godot community". What "the Godot community" entails is documented in the git history, git log, contributors graph, etc. I do like the suggestion made to add an AUTHORS file like we have for the engine source code though, I'll work on that.

Anything that is contributed to this repository falls under said license, and can be modified as needed. It's the same for the engine's source code, hundreds of contributors have done changes to the engine over the years, and other contributors need to modify their code every day to bring the engine forward.

The original contributors keep the full ownership and copyright of the content they contributed (so you can keep hosting is yourself under a different license, or even make commercial and non-open source better follow-up versions), but the MIT license they put it under allows anyone to change that original version. And we need this right. The original Godot documentation was written by @reduz and @punto-, and 4 years later maybe half of it has been rewritten or even deleted by new contributors, without asking the original authors for their permission (because they're busy with other stuff, don't remember even writing it, or it was obviously obsolete, etc., there can be plenty of reasons why we can't ensure that any original author has a say on what they wrote).

That's the way FOSS development works most of the time, once something is merged in the common repository, it's a community asset and the community at large is responsible for maintaining it, not only the original contributor. If it has bugs (in the case of code), or typos/wrong/obsolete sections (in the case of documentation), repository maintainers need to fix it and are allowed to do so by the license under which the content was contributed. If you prefer to keep the full control over the content that you create, that's completely fine too, but then it's best provided as an external resource (which can be listed as an officially recommended resource, but which would not be the responsibility of the Godot docs contributors).

Now, it's also fine to have an internal workflow where the repository maintainers know which contributor is in charge/most experienced about a given section of the documentation, and ask them for review. I often ask some contributors for review on code that they might not have written themselves, but that they already debugged in the past (so I know they read it and understood it, and can assess changes made to it) - and if they did write it themselves, I also ask them to check, especially if there's a bug and I want them to fix it (or to review a fix that someone else provided).

I'm sure that from now on, @mhilbrunner and others will ask you for reviews on changes made to the FPS tutorial or other resources that you have contributed or will contribute in the future. But if life took over and you ended up busy with other things/unable to contribute or react to review request (and this happens all the time in FOSS projects), I'm also sure that they would merge good changes and let the tutorials live their own life separate from their creator :)


TL;DR: Anything merged in this repo is licensed to the whole world as CC-BY 3.0, and can be changed at will by us, or anyone forking the Godot docs to provide better-godot-docs.com or anything :) That said, a workflow specific to this repository can be agreed upon with other contributors to give contributors a chance to review/do the changes that relate to their area of expertise and/or their original contributions. But this should not be mistaken as "owning" the content which was effectively licensed to the whole world with unrestricted rights for modification and publication (modulo the attribution requirement).


And of course, we are very grateful for your contributions on the FPS tutorial, which is of top notch quality and was a highly requested piece of documentation. It paves the way for more genre-specific tutorial series in the official docs, which is very exciting.

akien-mga commented 6 years ago

Regarding the ZIP files in this tutorial and the concern about the size - if this tutorial is meant to be always kept in sync with the original author's GitHub repository, maybe it would be simpler to just host the ZIPs there in a GitHub release?

Or we could also host ZIP archives for big stuff in a GitHub release of the godot-docs repo if preferred.

TwistedTwigleg commented 6 years ago

@akien-mga Thanks for explaining how the licensing works! (For both me, and others who follow)

I know now that there was no ill intent, and I appreciate the friendly and constructive conversation that has arisen from this discussion. I apologize for overreacting.

@akien-mga said: I'm sure that from now on, @mhilbrunner and others will ask you for reviews on changes made to the FPS tutorial or other resources that you have contributed or will contribute in the future.

No worries! The crux of why I was upset was because the tutorial points to my repository and I felt it was necessary to keep them in sync so that the tutorial was accurate. Because the plan is to separate the tutorial from my Github repository, I feel this is no longer necessary, because everything will be in one place. I am fine with not being notified of changes, unless someone wants me to review them, since the tutorial will be fully in the hands of the Godot community.

if this tutorial is meant to be always kept in sync with the original author's GitHub repository, maybe it would be simpler to just host the ZIPs there in a GitHub release?

I would prefer to keep the zip files separate from my repository, so anyone can contribute without having to go through a two step process (having to request changes both in this repository and in mine). This also will allow the tutorial to live on without me, which is good because in the future I may become too busy to maintain the tutorial (as you mentioned above).

Thank you for the time you have taken to address my concerns, the specifics about licensing, and the plan for moving forward! I appreciate it! It has been my pleasure to work on the tutorial and have learned a lot in doing so.

akien-mga commented 6 years ago

I am fine with not being notified of changes, unless someone wants me to review them, since the tutorial will be fully in the hands of the Godot community.

Actually, I'm pretty sure you will keep/start being notified of changes to the tutorials you authored, for two reasons:

MSylvia commented 6 years ago

Going forward you could use the CODEOWNERS github feature: https://blog.github.com/2017-07-06-introducing-code-owners/

vnen commented 6 years ago

@MSylvia that's interesting, I wasn't aware of the feature. I guess we could add to our contribution guide so people can add themselves to CODEOWNERS if they want to be notified of future changes.