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 156086

Summary: CND module needs activation even if it was installed alone
Product: installer Reporter: Alexander Pepin <apepin>
Component: CodeAssignee: dlipin <dlipin>
Status: RESOLVED FIXED    
Severity: blocker CC: jtulach, lsl239, mzlamal
Priority: P2 Keywords: ERGONOMICS
Version: 6.x   
Hardware: All   
OS: All   
Issue Type: DEFECT Exception Reporter:

Description Alexander Pepin 2008-12-26 15:49:47 UTC
It seems to me as wrong annoying behavior when the module needs activation even if it was installed by its own installer
e.g. C/C++. Feature on demand should work only if a user chooses a full installation. If user chose to download any
specific module installer (s)he should not be asked any more about activation. The module should be active by default.
Comment 1 Jaroslav Tulach 2008-12-27 08:32:08 UTC
Indeed, this is wrong. There should be no ergonomics1 cluster in pure CND installation.
Comment 2 dlipin 2008-12-29 10:48:22 UTC
Currently we have 6 distributions - javase, java, ruby, c/c++, php and full. From installer perspective each 
distribution consists of several "packs" (plus servers, if applicable):

Java SE = Base IDE + Java SE
Java    = Base IDE + Java SE + Java Web and EE + Java ME + servers
Ruby    = Base IDE + Ruby
C/C++   = Base IDE + C/C++
PHP     = Base IDE + PHP
All     = Base IDE + Java SE + Java Web and EE + Java ME + Ruby + C/C++ + PHP + SOA + servers

Each pack is a set of one or several clusters and, since cluster have dependencies, the packs has also has the 
dependencies between them.

So far when user installs the particular distribution he actually installs one or more packs (and thus one or more 
clusters). In Java and All distribution user has the ability to install not all packs, but only those that he need.

In other words, if user downloads "All"/Java distribution then he have to ability to install not all but only the 
desired packs, e.g. 
- Base IDE + Common Web Components + Java SE + Java Web and EE + Ruby + GlassFish V3
- Base IDE + Common Web Components + Ruby + PHP
- Base IDE + C/C++
- Base IDE + Java SE + Java ME
- Base IDE + Common Web Components + Java SE + Java Web and EE + SOA + GlassFish V2 + OpenESB
- ...

So the main question is : what pack should 'ergonomics' cluster be in and when it should be installed?
We can include it in any of the existing packs (e.g. to Java Web && EE) or create a new one. 

Please note that the user has the ability to install additional packs after the first installation i.e. run installer 
again and add (install) packs which were not yet installed. In other words, user can do the following:
- run full installer and install Base IDE + Java SE + Java ME
- run full installer again and install Ruby + Common Web Components + GlassFish V3
- run full installer again and install PHP + Java Web and EE

Another usage scenario which is also supported is that user can download one special distribution and then install it 
in the other existing one i.e. user can download e.g. Ruby distribution, install it and then download PHP distribution 
and install it in the existing installation. I.e. user would have Base IDE + PHP + Ruby + Common Web Components 
installed after that. At the end, user can download Java SE distribution and install it. As the result, he would have 
Base IDE + PHP + Ruby + Java SE + Common Web Components packs installed. At which step should ergonomics cluster be 
installed?
Comment 3 Jaroslav Tulach 2009-01-13 16:35:23 UTC
Thanks Dmitry, for your comments. I have put them into a wiki:
http://wiki.netbeans.org/FitnessForeverAndInstaller
together with one question: Can installer be enhanced to understand and manipulate content of netbeans.clusters file?
Comment 4 Alexander Pepin 2009-01-13 17:44:30 UTC
I would propose to include ergonomic cluster into its own pack and include this pack into full distribution and allow
user to include/exclude this pack as any other packs. 
Comment 5 dlipin 2009-01-15 13:55:34 UTC
I personally like Alexander`s idea to put ergonomics to the separate installable component and including it only in 
Java/all distributions. That would mean that users could either install it (that would be the default behaviour) from 
that distributions together with all other packs or deselect it and thus have the IDE with all required modules 
activated. The order of clusters in netbeans.clusters will not be changed.

Jarda, are you OK with that?

I guess that moving clusters up and down in netbeans.clusters file will give much more pain.
Comment 6 Jaroslav Tulach 2009-01-18 12:28:40 UTC
It is not bad idea, but the problem is that it does not work for the JavaAll distribution:
http://wiki.netbeans.org/Diff.jsp?page=FitnessForeverAndInstaller&r1=7&r2=6
We need ergonomics to be present and yet JavaSE enabled by default.
Comment 7 Jaroslav Tulach 2009-01-19 16:39:50 UTC
We need to move forward. Shall we talk tomorrow over phone? 

I am looking at installer sources and it seems that various parts of the code mangle content of netbeans.conf file. Is 
that simpler? If so, I might redesign the system to read some property from that file and adjust itself. 

However I can also see that various PostInstallFixupAction classes do patch the content of netbeans.clusters file 
directly. There is even patchNbClusters method! Why this kind of change could not be done in case of installing "All 
Java" version?

If you point me to the right place, I can even donate code that changes the netbeans.clusters file according to 
behaviour specified in http://wiki.netbeans.org/FitnessForeverAndInstaller
Comment 8 dlipin 2009-01-20 10:21:17 UTC
Jarda, feel free to phone me at any time (2PM-9PM PRG).

BTW, how are you going to achive 
> We need ergonomics to be present and yet JavaSE enabled by default.
in the "Java" zip distribution? 
As for now, ergonomics cluster goes just after nb and platform.
Are you going to modify netbeans.clusters before specially for packaging it into that netbeans distro?

Do you see any possible solutions on the ergonomics side to avoid clusters movings?

If you are interested in sources... they are rather distributed. Sources for NBI-based (Windows, Linux, Solaris) 
installers live in nbi and installer/{components,infra,engine} and sources for Mac-native installer live in installer/
mac/newbuild.
The NBI-based installers use installer/engine/src/o/n/installer/utils/applications/NetBeanSutils.add(remove)Cluster 
methods in 
installer/components/products/nb-base/src/o/n/installer/products/nb/base/ConfigurationLogic.java (for Base IDE pack)
installer/engine/src/o/n/installer/product/components/NbClusterConfigurationLogic.java (for the rest of packs)

Handling clusters in Mac installers are not used much at the moment. The only pack that uses that is JavaFX.
Comment 9 Jaroslav Tulach 2009-01-22 10:30:05 UTC
I've modified the page 
http://wiki.netbeans.org/FitnessForeverAndInstaller
to talk about possible alternatives. Like using a property in netbeans.conf file or modifying netbeans.clusters file 
during the build. I guess we need more discussions to decide which one is most suitable. As far as the ZIP 
distribution goes, it can safely stick with using ergonomics being on by default. Not many end developers use ZIP 
distribution as far as I know anyway.

installer/components/products/nb-base/src/o/n/installer/products/nb/base/ConfigurationLogic.java - no changes needed, 
Base IDE (e.g. Java SE) remains unchanged.

Here is the utility to reorder clusters: 
http://wiki.netbeans.org/attach/FitnessForeverAndInstaller/ErgonomicsInstallerAddClustersWithPivot.diff

The only really necessary change right now seems to be needed in
installer/components/products/nb-javaee/src/org/netbeans/installer/products/nb/javaee/ConfigurationLogic.java
which needs to use the new addClusters(...) method to move java, gsf, apisupport clusters above ergonomics one.

Comment 10 Jaroslav Tulach 2009-01-22 16:31:16 UTC
Based on a discussion with Dmitrij, we decided to implement a minimalistic "UI Spec":
http://wiki.netbeans.org/Diff.jsp?page=FitnessForeverAndInstaller&r1=19&r2=13
That seems enough to address problem described by this issue.
Comment 11 Quality Engineering 2009-01-23 07:33:26 UTC
Integrated into 'main-golden', will be available in build *200901230201* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main/rev/89ae880f6a39
User: Dmitry Lipin <dlipin@netbeans.org>
Log: Issue #157257 and Issue #156086 Include ergonomics only in Java/All distributions
Comment 12 Jaroslav Tulach 2009-01-24 09:29:43 UTC
Looks that the problem was fixed and integrated.
Comment 13 dlipin 2009-01-24 09:41:00 UTC
Yes, everything except manupulating the ergonomics cluster (moving it up and down) in Java distribution.
But that is not related to this issue :)
Comment 14 dlipin 2009-01-24 09:41:39 UTC
fixed.