godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.1k stars 69 forks source link

New project creator should auto create addons/ folder #6785

Open QbieShay opened 1 year ago

QbieShay commented 1 year ago

Describe the project you are working on

Godot engine

Describe the problem or limitation you are having in your project

I'm seeing often that people get confused if they are linked an addon from github and they don't know where is their addons/ folder

Describe the feature / enhancement and how it helps to overcome the problem or limitation

Auto create the addons/ folder, to limit new user cofnusion

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

See above

If this enhancement will not be used often, can it be worked around with a few lines of script?

It's the godot editor

Is there a reason why this should be core and not an add-on in the asset library?

See above

Calinou commented 1 year ago

Note that Git does not commit empty folders, so the folder would need to contain an empty .gitignore file to be committed (.gitkeep is sometimes used by convention too).

me2beats commented 1 year ago

Should be enabled by default as an editor setting imo, so that this feature could be disabled for people who don't use plugins often.

QbieShay commented 1 year ago

It could be a nice addition to have a .gitkeep file, although my main target user, i suspect, wouldn't have git setup yet

KoBeWi commented 1 year ago

Aren't addons always distributed with the addons/ folder included, so you just have to put them in your project? That's how AssetLib works at least; if every addon followed this convention, there wouldn't be any confusion, no?

paddy-exe commented 1 year ago

Aren't addons always distributed with the addons/ folder included, so you just have to put them in your project? That's how AssetLib works at least; if every addon followed this convention, there wouldn't be any confusion, no?

Not always. Most of them are open-source anyways so they use this but you still have to specify to the user that he/she should put it in the addons folder OR create a new folder with this name and then put it there. There is not a big but still significant room for misunderstanding.

Edit: Also I don't see a disadvantage of the addons folder not being registered by git if it's empty since it doesn't matter then anyway. There could be some git conflicts that could arise when that person pulls changes and on the server side is a non-empty folder though.

QbieShay commented 1 year ago

@KoBeWi not every addon is on the asset lib, those that are not, but are still popular, cause confusion

badunius commented 1 year ago

next we're gonna ask to create art/ folder by default, because most projects use art and it may be confusing for new users when they are asked to put art piece in art/ folder and there's no such folder in their project. I guess we would benefit from sort of customizable scaffolding though.

QbieShay commented 1 year ago

@badunius with the difference that there's not standardization for art/ folders, while addons are expected by the engine to be on the addons/ folder. It's structurally different.

badunius commented 1 year ago

@QbieShay perhaps, but I never used an addon in years, and it would be just as confusing to me why I have an addon/ folder in every project I create and just as inconvenient to delete it every time. If the engine expects all addons to be stored in a very specific location, it would be wiser to add an "Install Addon" dialog to the editor, so it would be automatically downloaded and unpacked into a proper location, and let the addon's structural integrity be the respective author's responsibility.

paddy-exe commented 1 year ago

@QbieShay perhaps, but I never used an addon in years, and it would be just as confusing to me why I have an addon/ folder in every project I create and just as inconvenient to delete it every time

The project already contains an icon.svg file in every project as well. Also how is this inconvenient? Why would you need to delete it? The folder itself would remain empty then.

If the engine expects all addons to be stored in a very specific location, it would be wiser to add an "Install Addon" dialog to the editor, so it would be automatically downloaded and unpacked into a proper location, and let the addon's structural integrity be the respective author's responsibility.

Addons are already "unpacked" when installing since they are already in the addons folder in their respective git server location. That is why there is a specific misunderstanding on how to install addons sometimes.

badunius commented 1 year ago

The project already contains an icon.svg file in every project as well. Also how is this inconvenient? Why would you need to delete it? The folder itself would remain empty then.

And this is why I keep my stuff in folders instead of the root directory. To have another folder that is not my and not used is to clutter project structure.

Addons are already "unpacked" when installing since they are already in the addons folder in their respective git server location. That is why there is a specific misunderstanding on how to install addons sometimes.

If you want to fix those misunderstandings, remove the manual labor. When I install node package I run npm i <package_name> and it goes exactly where it has to be inside of the node_modules/ which is created automatically if it doesn't exist yet. So let the user paste a repository link into "Install Addon" dialog and allow the editor do the rest.

paddy-exe commented 1 year ago

If you want to fix those misunderstandings, remove the manual labor. When I install node package I run npm i <package_name> and it goes exactly where it has to be inside of the node_modules/ which is created automatically if it doesn't exist yet. So let the user paste a repository link into "Install Addon" dialog and allow the editor do the rest.

Not every addon is hosted publicly. Some of them can be sold and won't be publicly available for the editor to install.

badunius commented 1 year ago

Not every addon is hosted publicly. Some of them can be sold and won't be publicly available for the editor to install.

if they are paid they can afford to make a minimal installer to free their paid customer from confusion.

Again, I can't see how someone else's paid addon struggles justify creating folders I don't need in my projects.

Zireael07 commented 1 year ago

Very few Godot addons are paid, @badunius

badunius commented 1 year ago

@Zireael07 okay, now how this makes creating addons/ folder by default a better solution?

Zireael07 commented 1 year ago

Whether free or paid, addons are expected to be in the addons folder. So this folder should be created by default.

badunius commented 1 year ago

No it should not =/

QbieShay commented 1 year ago

I'm surprised this conversation got so heated up so fast.

My rationale is, that for a person that has experience with godot or is making a big project, if they don't use the addons folder they can delete it in one click. So it takes a pro 1s per project to delete it.

On the contrary, it takes a beginner more time to figure out where addons are supposed to be installed if they are addon that they find on github or someone gives them a link. The situation in which I opened this proposal was that I recommended hungryproton's scatter addon, which only comes from github, and the person i recommended it to was confused where to install it. It took them time to try and understand and subsequentially me time to explain where they were supposed to install the addon.

To me, it's significantly more time to explain confused people where the addons should go on a larger scale.

Furthermore, I think a lot of projects have addons. I don't have any hard numbers on this, but I don't think I had in my experience any project without addons. Even for professional project, where I identify tech that can be reused, I tend to separate it into an addon for future usage and for good code separation/artchitecture, so it's really bizarre for me to see this much pushback.

If I'm missing something crucial, please let me know.

Zireael07 commented 1 year ago

My rationale is, that for a person that has experience with godot or is making a big project, if they don't use the addons folder they can delete it in one click. So it takes a pro 1s per project to delete it.

Exactly what I think and I don't understand why there is such an opposition to this.

badunius commented 1 year ago

If I'm missing something crucial, please let me know.

First and foremost addon usage is optional. Your proposal is to enforce it.
AssetLib creates addons/ folder automaticaly. This is covered.
If a person is at the point where they are installing "third-party" addons, they are expected to know how it works. If they don't they got too deep too early and need to learn it. Covering mess-ups of some "third-party" addon authors who is unable to organize their repository structure and/or provide a proper installation manual should not be at the cost of enforcing creation of extra folders by default.

Basically what you are proposing is an equivalent of every car to be sold with a mandatory pre-installed baby seat. Which can be un-installed easily, of course. But I don't even have a baby.

Please, don't make someone else's problem everyone's.

Zireael07 commented 1 year ago

First and foremost addon usage is optional. Your proposal is to enforce it.

There is nothing mandatory here.

Which can be un-installed easily, of course. But I don't even have a baby.

Not an issue. An empty folder can be deleted with a single click IF you really need to.

Godot has to cater to new users and beginners who do not know addons are expected to go into a SPECIFICALLY named folder.

badunius commented 1 year ago

First and foremost addon usage is optional. Your proposal is to enforce it.

There is nothing mandatory here.

I can't opt-out, so there is.

Which can be un-installed easily, of course. But I don't even have a baby.

Not an issue. An empty folder can be deleted with a single click IF you really need to.

An empty folder can be created just as easily.

Godot has to cater to new users and beginners who do not know addons are expected to go into a SPECIFICALLY named folder.

In short: No. Longer: addons is not the first thing a brand new user is going to interact with, neither it should be the first thing.

Zireael07 commented 1 year ago

You'd be surprised how many projects start with an addon, e.g. Zylann's terrain addon being a prime example.

KoBeWi commented 1 year ago

An empty folder can be deleted with a single click

You need at least 2 clicks :v

Godot has to cater to new users and beginners who do not know addons are expected to go into a SPECIFICALLY named folder.

Not every addon goes to addons. An "addon" can be a single class_name script. Placing it in addons folder would actually break it, because classes in addons, that are not part of enabled plugin, are not accessible.

So I agree that it's up to addon's creator to provide instructions on how to install and use it.

AThousandShips commented 1 year ago

I honestly don't see a problem here that isn't just other people not providing proper instructions on how to use their plugins, and the documentation instructs how to make and use plugins as does the editor when creating them

To me this feels like excessive hand holding for badly informed new users that will cause annoyance for everyone else, and isn't really solving any limitation that isn't due to incorrect instructions or usage to begin with

QbieShay commented 1 year ago

@KoBeWi I don't think that RTFM solutions are a great approach in general.

This is a matter of "we could make it easier and more understandable, but we won't because it's up to the plugin creator to do it". I don't understand why not making things simpler when we can.

Like Zirael said

Godot has to cater to new users and beginners who do not know addons are expected to go into a SPECIFICALLY named folder. This is one of the core philosopies of Godot, being beginner friendly.

I will not engage with the "this will make my life worse" argument here because I can't imagine a situation where having to delete a folder every time you make a new project is a significant enough time investment to warrant this reaction. Again, please let me know if there's some corner case of sysadminering where it does indeed become an issue.

AThousandShips commented 1 year ago

So in the case when an add-on publisher doesn't instruct the user to put it in the correct folder, how do you know the added folder will actually make a user put it there? And as pointed out, how do you guarantee that people won't put add-ons they shouldn't there?

How big is this problem? How sure are you this is the solution as opposed to an interface that allows you to add an add-on from the editor easily?

I see several problems here:

QbieShay commented 1 year ago

I'm not convinced this is a significant enough issue to annoy people by adding a folder they don't want, just to help a certain group of new users

I'm not convinced this is enough of an annoyance to justify not improving the UX for new users.

How big is this problem? How sure are you this is the solution as opposed to an interface that allows you to add an add-on from the editor easily?

An interface that would help you add an addon similar to blender's one is a cool idea. Much bigger implementation but why not!

How big is this problem?

I've noticed this as a pattern which is why I opened an issue. The time i opened this proposal was not the first time i saw people being confused about the addons/ folder not being there, hence why the proposal. Is this a big issue? No. People find their way eventually. But the base of UX is creating a good experience :) and you do that by making it better and better even with small adjustments, which is what I'm proposing here.

adamscott commented 1 year ago

In my mind, addons/ is a special directory for Godot. Creating the directory for new projects would entice the user to seek for addons. I don't see any problems creating an empty directory for users.

We could even add a README.md inside the addons directory, explaining users how to download and activate addons.

badunius commented 1 year ago

* overfed trash bin noises *
do you realize that you plan to treat every user as if it's a new one?

paddy-exe commented 1 year ago
  • overfed trash bin noises *

Please stay respectful and constructive.

As a possible compromise: Perhaps it would be an idea to introduce an Editor Setting which by default adds this new folder so new users to Godot can know where the folder should be and for the ones who don't want to have it in every project can turn this feature off.

badunius commented 1 year ago

Please stay respectful and constructive.

I'm sorry, it's been explained multiple times by multiple people in a respectful and constructive manner that the proposed solution is dubious. To ignore all this and add another layer on top of the original idea -- this is disrespectful. (I admit I was a bit sarcastic, without any offensive intentions)

Isn't customizable project templates a constructive counter offer? That way default project template could have everything you deem important for the new users, and I could have a template that frees me from creating every time from ground up the project structure I find suitable.

Calinou commented 1 year ago

The project creation dialog already offers a dropdown to select between various kinds of version control metadata to create. I probably wouldn't add another checkbox though (as to avoid asking too many questions when you create a project).

I'm not sure if adding an editor setting for this is warranted, as advanced users may want to create projects from the command line anyway (as I often do). This is especially the case when you have to create new projects several times per day, like I do for creating minimal reproduction projects or one-off testing projects. In this case, you can create any files you want using a custom script.

QbieShay commented 1 year ago

I'm sorry, it's been explained multiple times by multiple people in a respectful and constructive manner that the proposed solution is dubious. To ignore all this and add another layer on top of the original idea -- this is disrespectful. (I admit I was a bit sarcastic, without any offensive intentions)

I don't find it disrespectful to disagree. I can hear and understand your concerns, and still have different priorities and disagree with your proposed solution.

Isn't customizable project templates a constructive counter offer? That way default project template could have everything you deem important for the new users, and I could have a template that frees me from creating every time from ground up the project structure I find suitable.

I think this is a good proposal and should probably be in a separate, and more articulate proposal as it's entirely a different feature than my initial proposal. Also " Isn't customizable project templates a constructive counter offer?" is not an offer that was made or linked at any point in this thread before, so it's strange to act as if it was proposed and denied already :thinking:

A separate proposal with a mockup for template would be welcome :+1:

AThousandShips commented 1 year ago

so it's strange to act as if it was proposed and denied already

The original comment does not make any assertion on that it was suggested, at least not without assumptions, let's all be constructive instead of hurling accusations at each other and not assume bad intent

QbieShay commented 1 year ago

I am more confused than trying to hurl accusation, it feels like I missed a part of the conversation even if i re-read it more than once :sweat_smile: maybe there's proposals that already cover that?

AThousandShips commented 1 year ago

What I mean is that it's not given that "Isn't customizable project templates a constructive counter offer?" says that it has already been proposed in the thread, though it can be read that way it isn't guaranteed

badunius commented 1 year ago

Also " Isn't customizable project templates a constructive counter offer?" is not an offer that was made or linked at any point in this thread before, so it's strange to act as if it was proposed and denied already 🤔

https://github.com/godotengine/godot-proposals/issues/6785#issuecomment-1537265477

I guess we would benefit from sort of customizable scaffolding though.