This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 153588 - Groovy support (not Grails) is hard to discover
Summary: Groovy support (not Grails) is hard to discover
Status: RESOLVED DUPLICATE of bug 187681
Alias: None
Product: groovy
Classification: Unclassified
Component: Code (show other bugs)
Version: 6.x
Hardware: All All
: P3 blocker (vote)
Assignee: Martin Janicek
URL: http://nbguru.wordpress.com/2008/11/2...
Keywords:
Depends on:
Blocks:
 
Reported: 2008-11-20 22:48 UTC by _ wadechandler
Modified: 2012-03-17 20:03 UTC (History)
4 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description _ wadechandler 2008-11-20 22:48:19 UTC
This is more of a usability option really. I know personally how to create Groovy projects by creating a Java project.
The issue is new users and Groovy users who may be using another IDE. One of the Dream Team members has a post on their
blog about the lack of a Groovy project. They were told how to do it, and that was fine, but what about having to answer
that question over and over or worse the person doesn't ask and just doesn't use the IDE. It seems then a simplistic fix
is to have project template links installed under New Project|Groovy which reference the Java Application and Java Class
Library projects just with the names being Groovy Application and Groovy Class Library with the Groovy icons. That would
allow folks to get right into a plain Groovy project without wondering how. Once in the project they simply go to create
a new file as usual, and not finding Groovy class on the first list they see will click other, see Groovy, and be on
their way.
Comment 1 nvarun 2008-11-21 11:18:07 UTC
Added the URL where the user had raised this issue!
Comment 2 Petr Hejl 2008-11-21 13:14:28 UTC
Well it is hard to discuss the issue while part of the discussion is on mailing list.

I agree with Geertjan. Do we really want to offer project type for any new technology? The same could be applied to
Struts, Spring, basically anything else. The approach "I don't know what the Struts|Spring|Groovy is so I expect there
will be Struts|Spring|Groovy project type" is imo not the case we should optimize for. Anyway if we will provide the
suggested solution what will be the feeling the mentioned user gets - he will select Groovy project and ends up with
Java Project. He will suppose he made a mistake and will try it again. After that he will probably file a P1 issue or he
will take some time and will investigate the properties.

The argument about other IDEs is not valid afaik. Actually we would be (and we are in other areas) different. In other
IDEs you usually select one of the "supports" (favors, faces... don't know the term) you want to use in project (it
would be great to have such panel in project wizard). In fact the Groovy with its Java project integration is pioneering
it. If we will add other languages or frameworks that can integrate with java do we really want to add project type for
each of them? If we will enable the groovy in web project sometime in future should we introduce another web project link?

Actually I think there was a real Groovy project type in the past, but it was discarded and Groovy users appreciate that.
Comment 3 Patrick Keegan 2008-11-21 13:34:31 UTC
I agree that automatically adding a new project type might be problematic, especially if this proliferates. E.g., what
if someone wants a project with both Groovy, SAF, and other libraries. It might be confusing if we have a project type
for each but not for the combinations.

That said, I think the issue is still valid. Groovy is not very discoverable now. The question is whether we can make it
more discoverable and do so in a way that doesn't create side effects that outweigh the benefits.
Comment 4 Petr Hejl 2008-11-21 13:39:14 UTC
Adding HIE engineer on cc.
Comment 5 _ wadechandler 2008-11-23 01:44:48 UTC
I don't see any harm in having other links which lead folks down certain paths for very popular frameworks or
technologies such as Groovy. Yes, I think it would be a good idea if gsp and other things become supported to have a
Groovy Web Project. Most likely if someone is going to go down the .gsp route that is going to be their predominate use
case in that particular project, and the point is to get them past that hiccup and to address new user retention. 

Just like with a web site, a new car, or anything else you can think of practically, the first impressions are what
drive new folks looking for their specific needs to be filled. Options are not going to bother someone who knows their
way around, but for new folks it will help them.

The project support already has a pretty good mechanism for guidance all though simple where there is a project type
(which can simply link to other project types) and a description. The current Java description states:
"Creates a new Java SE application in a standard IDE project. You can also generate a main class in the project.
Standard projects use an IDE-generated Ant build script to build, run, and debug your project."

It could mention that it supports other file types, and what else can be done instead of having such a narrowed description.

New Project|Groovy|Groovy Application Project could be something as simple as 
"Groovy support is built into the standard Java projects. Creates a new Java SE application in a standard IDE project.
You can also generate a main Java or Groovy class in the project. Standard projects use an IDE-generated Ant build
script to build, run, and debug your project. See New File|Groovy once your project is created.".

Very low tech, but gets the job done. Can easily be installed by the Groovy support and similar by other support
modules. I think things like Groovy at least, and maybe even things like Spring or Struts2, not Hibernate or Struts1,
deserve their own project types just like a JRuby project or something. Sure, Groovy is using Java and can blend, but
one can just make an all Groovy project basically just the same as they could with JRuby using .jars as libraries. So,
they are technologies which blend with Java, but have differences, and uses where they will be the primary consideration.

Now, if it is an issue of whether those things get in the way of users, then allow users to hide and show things in the
new project wizard.

Now, if some kind of a new "New Project" wizard were created which is smarter that would be even better, maybe it
doesn't even replace the main new project wizard, but instead is another option under categories "Can't find what you
are looking for?", and it goes into another sub wizard, or is a link beside "Choose project" called "Can't find what you
are looking for?". 

It could do something like ask a user to select technologies they would like to support in a project. Each project or
technology support plugin registers some information, and this is shown in a list. Based on selections, options are
provided with explanations, also built from this meta information provided by support modules, that allow the user to
pick what it is they would like to do. This could even go as far as to find out if they need a desktop or web client and
offer other suggestions for what types of projects to use, so instead of creating a single project walk them down the
path to setup the server and client projects and possibly others than may need.
Comment 6 _ wadechandler 2008-11-23 01:48:51 UTC
>Now, if it is an issue of whether those things get in 
>the way of users, then allow users to hide and show things in the
>new project wizard.

Here I mean to give the users a panel under Tools|Options, whether in miscellaneous or not, which allows them to uncheck
project templates and categories they don't want to see.
Comment 7 Ondrej Langr 2008-11-26 13:57:53 UTC
I've been asked to provide HIE viewpoint on this issue, but it is not going to be simple yes/no opinion.

I would say that this approach needs to be considered carefully as it may (as Patrick mentioned) proliferate to other
technologies which is probably not what we want. Whether it will or will not be done should IMO depend on the number of
Groovy users and on their "priority".

The core of the problem seems to be that users are not only not directed towards Java project (by Java project
description not mentioning Groovy in any way), but even led away from it (by existence of separate Groovy category .. i
do not have much domain knowledge in this field, but shouldn't the category be called Grails instead if it only contains
Grails project?). Even though someone knows that Groovy blends with Java, naturally they will first look in Groovy
category if they spot it. After that, they may be left thinking why it is not in the groovy category and trying get it
there .. (enabling modules in plugin manager, etc .. ). So maybe the discoverability issue could really be solved by
other means?

As a side-note, multiple ways of achieving the same thing do create UI clutter and as such are not always good.
Sometimes the benefits outweigh the drawbacks, whether this is the case depends on how the relation of groovy and java
is understood, on number of groovy users and their "priority". I would certainly be against customization of new project
wizard as it doesn't address the original problem, only would be used by a few enthusiasts and .. honestly speaking ..
I'm worried it could be used as argument for "let's make the new project categories a mess .. users can disable the ones
they do not want anyway" ;)
Comment 8 _ wadechandler 2008-11-26 17:42:22 UTC
I don't want this to sound like I'm beating a dead horse here, as I'm actually not trying to be argumentative, nor do I
intend to bash. My main and ultimate goal is to help make the IDE as best as it can possibly be from the community user
perspective and an advertised and project faith, popularity, or trust perspective. This is actually my only reason for
creating this issue as the user perspective is what drives those users to see in NB that which they see, and to get from
it what they may, and that in turn keeps the project going which is good for all involved, and is the only true reason
the project exists, because without users what is it.

Priority is a bit subjective to me in this context. There is Groovy support in Java projects. There is then the ability
to set a Groovy class as the main class of a project. There are other IZ issues dealing with how one should be able to
use a Groovy class with script outside of a method, and use that script/code versus using static void main, and others.
Basically Java projects will probably have to directly support things alien to strict Java developers if those abilities
are not pluggable in the Java projects infrastructure...i.e. Groovy turned off then the Java projects have to change the
UI probably without a direct dependency from Java->Groovy but the other way around unless of course the Groovy project
is replacing some of those Java project UI panels, actions, etc. None the less the Groovy support is there now.

Now, I am not really using Groovy for projects at the moment, but I have thought about looking at it for different
things. I know some people who are using it for a lot of things. The support is there. To me, if something is in the IDE
it should be as usable as possible, or maybe should not be there, and of course this is an opinion and subjective as
well. This is where priority becomes subjective too. As the support is there, I would expect it to be as usable as
possible, and as accessible as possible, to not be ignored, not used, and wasted by users as I was raised to have a
general rule that if I am going to do something to do it right, or not do it at all. But too, from conversations I see
in the NB community others have a similar view.

The point to that statement lies in the fact that the main way for users to create a Groovy project or any other project
for a different technology would presumably be through the new project wizard, and that makes sense because while Groovy
can be used with Java, it is an extending language; a new or other technology if you will. You don't have to define any
.java files in a Groovy application, so they can be used together, and both can technically be a separate thing. Thus
some users may very well infer, as the person from the linked URL does, that the only Groovy support is through Grails.
This in turn naturally means the feature isn't used as much as it may otherwise be used depending upon how usable and
accessible it is.

Essentially, the release notes mark this as a milestone for NB 6.5:
http://www.netbeans.org/community/releases/65/

and thus is advertising something for use. If that is put out there, then it should by nature be a priority, or not be
at all. Finite resources, in my opinion, should be used for the most achievable maximum value. Just advertising a
feature isn't enough. Something needs to drive those users of the feature to that feature for the maximum level of user
support once they start to use the product. The same is true for C/C++, PHP, Python, etc. Simply, someone wanting a
Groovy project, isn't going to first think, oh I know, I should create a Java project first and that will give me Groovy
support. I think someone who uses Groovy knows about Grails, and just having a top level Grails project will make them
think the same thing as happens now when they get to the Groovy category...only Grails is supported.

Again on priority. One creates a feature, says it is there, users can't find it, they don't use it, and the priority is
logically going to be lowered as a direct result, and the end result is a feature has less of a chance to be as
successful as it may otherwise; wasted time and resources if it must be abandoned. Where as if the feature is more
accessible, and if there are enough Groovy users, then the priority is going to be raised as direct result. So, the
nature of the pathway in which new users, which may very well be many users of Groovy for the new and advertised Groovy
support, to get to and access that support or be able to see that it is there and available for their needs, can very
well be directly related to and affect the priority, and the decisions in usability and accessibility can be a self
fulfilling prophesy depending on the direction taken.

True, there can be something said for clutter. However, if someone doesn't want that clutter they can turn off the
modules. For instance, when I install PHP, C/C++, Python, what ever, then that fact alone dictates my intentions to use
it at some point, and to see those options provided by that support, clutter if you will. Now, if I have no intentions
of using them, and don't want to see them, I can either disable them, or uninstall them. Either way, if I intend on
using the features I expect to be able to use them, see them, and not have to think about what I'm using as it relates
to the simple things. 

Same as with a PHP user, they would expect to see a PHP project type, and the same could be said of someone looking to
do the same with something like Groovy. The fact that a Groovy project link creates a Java project is superficial if
someone knows, through the project template description, why this is the case, and knows they can work with Groovy files
once the project is created. It is the getting there that counts, and if that means they have to read the help file, or
some tutorial to use the feature in the IDE, then the UI has failed to perform as best as it can.
Comment 9 Martin Janicek 2012-03-17 20:03:28 UTC
I completely agree that we should have different project type for Groovy. Unfortunately there will be not enough time to do it for 7.2 but I'll definitely try to implement this for the next version.

I'm marking the issue as a duplicate since it's more an enhancement than a defect.

*** This bug has been marked as a duplicate of bug 187681 ***