[GRASS-dev] CLI!=GUI

6.4 was delayed to make it work on Windows. This included making a useable CLI for Windows. I don't use Windows but many many people do. Making GRASS work on Windows has been very very difficult, especially because of the recursive problem that there are few GRASS developers with Windows expertise because GRASS didn't run on Windows. Going through the pain of making this work greatly expanded the potential user base and potential developer base.The reason that GRASS can run on Windows is in a large part due to a complete restructuring of the user interface away from requiring X-Windows. That is, there was no way to use GRASS or visualize the results in a Windows environment until the co-development of the new GUI (beginning with TclTk in 6.3) and display drivers.

There is nothing inherently wrong with releasing different parts of GRASS at different times.But trying to manage a single release cycle for GRASS has been pretty complicated and my hat is off to Markus. Trying to manage multiple release cycles would be more complicated. Some of the 6.4 blockers were with the GUI, but others were with the underlying modules (all of which run in CLI or GUI). For better of for worse, GRASS has a very conservative release cycle. This is because of the developer culture, not because of the GUI.

Like Martin said, because GRASS is modular, anyone can compile it or use it with or without the GUI. I use it heavily with the GUI for some things. For others, I use it completely scripted, without any GUI, and called from a completely different environment. This kind of flexibility is a real value for this piece of software.

Michael
____________________
C. Michael Barton
Director, Center for Social Dynamics & Complexity
Professor of Anthropology, School of Human Evolution & Social Change
Arizona State University

voice: 480-965-6262 (SHESC), 480-727-9746 (CSDC)
fax: 480-965-7671 (SHESC), 480-727-0709 (CSDC)
www: http://www.public.asu.edu/~cmbarton, http://csdc.asu.edu

On Nov 21, 2010, at 10:00 AM, <grass-dev-request@lists.osgeo.org> wrote:

Message: 4
Date: Sun, 21 Nov 2010 10:24:02 +0100
From: "Francesco P. Lovergine" <frankie@debian.org>
Subject: Re: [GRASS-dev] CLI!=GUI
To: grass-dev@lists.osgeo.org
Message-ID: <20101121092402.GB2278@frankie.is-a-geek.org>
Content-Type: text/plain; charset=us-ascii

On Sat, Nov 20, 2010 at 10:49:05PM +0100, Martin Landa wrote:

Hi,

2010/11/20 Paolo Cavallini <cavallini@faunalia.it>:

I know it's an old thread, and that not everybody agrees, but I still think, after
talking with people more knowledgeable than me, that separating the core of GRASS
(libraries+CLI) from the GUI(s) will make the release and packaging process faster
and smoother, and the integration with other software, both desktop and web, easier
and cleaner.
Can we revive the discussion about this?

well, my option is very subjective - wxGUI is going to be a solid GUI
for GRASS. Anyone can build it's own GRASS distribution without any
GUI (libraries and subset of the GRASS modules). But it's not task for
the core GRASS developers. They are creating solid environment ---
GRASS libraries + modules (CLI) and also the GUI. Feel free to take
what you what from this composition.

Martin

What Paolo is probably trying (also?) to say is that GUIs and core could
have completely different release cycles. The GUI should be a component
like any other, to be released when ready, but that should not become
a permanent blocker of the release process, like did happen in the
6.4 release. Many people (like me and many other) use Grass as a
scripting language and are completely uninterested in having a stable
GUI at all, but are interested in having a working stable core in
reasonable times. Of course, IMHO applies.

--
Francesco P. Lovergine

------------------------------

Il 21/11/2010 21:36, Michael Barton ha scritto:

There is nothing inherently wrong with releasing different parts of
GRASS at different times.But trying to manage a single release cycle
for GRASS has been pretty complicated and my hat is off to Markus.
Trying to manage multiple release cycles would be more complicated.

My suggestion is that decoupling CLI and GUI will make the release cycle simpler, not more complicated. We do not need additional complexity.
All the best.
--
http://www.faunalia.it/pc

Il 21/11/2010 21:36, Michael Barton ha scritto:

Like Martin said, because GRASS is modular, anyone can compile it or use it with
or without the GUI. I use it heavily with the GUI for some things. For others, I
use it completely scripted, without any GUI, and called from a completely
different environment. This kind of flexibility is a real value for this piece of
software.

AFAIK this is not true: compiling (better: packaging - believe it or not, not
*anyone* is capable of compiling) without the GUI requires changes in the source code.
Sorry to insist, I realize my position is not popular among GRASS devs, but there is
a number of situations where having a pure CLI package would bring great advantages.
E.g., does anybody want to install libwxgtk2.8-0 on a server, where GRASS can be used
for WPS?
Please, help us poor users: separate the two packages, and we'll all be happier. I do
not think it's a major work, and packagers can probably give a hand.
All the best.
--
Paolo Cavallini: http://www.faunalia.it/pc

On Sat, Nov 27, 2010 at 6:51 AM, Paolo Cavallini <cavallini@faunalia.it> wrote:

Il 21/11/2010 21:36, Michael Barton ha scritto:

Like Martin said, because GRASS is modular, anyone can compile it or use it with
or without the GUI. I use it heavily with the GUI for some things. For others, I
use it completely scripted, without any GUI, and called from a completely
different environment. This kind of flexibility is a real value for this piece of
software.

AFAIK this is not true: compiling (better: packaging - believe it or not, not
*anyone* is capable of compiling) without the GUI requires changes in the source code.
Sorry to insist, I realize my position is not popular among GRASS devs,

It is moreover a question how many work is involved...

but there is
a number of situations where having a pure CLI package would bring great advantages.

I compile GRASS myself quite often as CLI package.

E.g., does anybody want to install libwxgtk2.8-0 on a server, where GRASS can be used
for WPS?

Likely not, but --without-wxwidgets should help.

Please, help us poor users: separate the two packages, and we'll all be
happier. I do not think it's a major work, and packagers can probably
give a hand.

A concrete work estimate would be desired.

Markus

Hi,

2010/11/27 Markus Neteler <neteler@osgeo.org>:

On Sat, Nov 27, 2010 at 6:51 AM, Paolo Cavallini <cavallini@faunalia.it> wrote:

E.g., does anybody want to install libwxgtk2.8-0 on a server, where GRASS can be used
for WPS?

Likely not, but --without-wxwidgets should help.

it will just disable wxGUI digitizer (wxNviz has been rewritten to python).

We could add new flag --without-gui which would disable compiling (and
installing selected components).

martin

--
Martin Landa <landa.martin gmail.com> * http://geo.fsv.cvut.cz/~landa

On Sat, Nov 27, 2010 at 11:43:02AM +0100, Martin Landa wrote:

Hi,

2010/11/27 Markus Neteler <neteler@osgeo.org>:
> On Sat, Nov 27, 2010 at 6:51 AM, Paolo Cavallini <cavallini@faunalia.it> wrote:
>> E.g., does anybody want to install libwxgtk2.8-0 on a server, where GRASS can be used
>> for WPS?
>
> Likely not, but --without-wxwidgets should help.

it will just disable wxGUI digitizer (wxNviz has been rewritten to python).

We could add new flag --without-gui which would disable compiling (and
installing selected components).

martin

That would be the very first step, indeed. Of course IMHO a full solution would
imply also:

- having a componentized GUI which could be added to the core without rebuilding
  the whole beast (possibly componentizing 2d/3d would be also a good idea).
- decoupling gui/core releases: my impression is that the core could evolve much
  fastly than the gui. That's based on counting the current number of GUI related bugs
  in comparison with core ones.

--
Francesco P. Lovergine

for the record I regularly build grass 6.5svn on an old debian/etch
machine which has no wx2.8 avail. ie just for the CLI. It copies
python files into a gui/ dir at install but never uses them. C++
wx modules are not build (cleanly). no problems at all... zero.

as per dual packages, I'd say not necessary, extra work for very
little gain. it would just save a megabyte or two on the install.

the gui development is very good at exposing limitations in the
CLI versions of everything, so it's natural that they both grow
together. and it is already very well separated at the code
level. the only thing that aren't are interactive apps which
are not relevant to the CLI-only crowd.

2c,
Hamish

Il 27/11/2010 23:40, Hamish ha scritto:

for the record I regularly build grass 6.5svn on an old debian/etch
machine which has no wx2.8 avail. ie just for the CLI. It copies
python files into a gui/ dir at install but never uses them. C++
wx modules are not build (cleanly). no problems at all... zero.

please think of normal users: believe it or not, people does not compile their
packages, and rely on executables.

as per dual packages, I'd say not necessary, extra work for very
little gain. it would just save a megabyte or two on the install.

this is not the point: it will save unnecessary dependencies. That's why in sane OSs
packages are split in several independent subpackages.

the gui development is very good at exposing limitations in the
CLI versions of everything, so it's natural that they both grow
together. and it is already very well separated at the code
level. the only thing that aren't are interactive apps which
are not relevant to the CLI-only crowd.

if they are well separated, why not separating them, giving more freedom to users?
I agree that GUI and CLI will grow together, but why waiting in the release of one
part just because the other is still to be fixed?
The rationale is: decoupling CLI and GUI will make the release cycle smoother, and
allows a greater freedom, especially for 3rd party applications, either desktop or web.
I would like to see GRASS spreading further in the freeGIS arena, and I'm suggesting
this could be a way.

All the best.
--
Paolo Cavallini: http://www.faunalia.it/pc

Paolo Cavallini wrote:

> Like Martin said, because GRASS is modular, anyone can compile it or use it with
> or without the GUI. I use it heavily with the GUI for some things. For others, I
> use it completely scripted, without any GUI, and called from a completely
> different environment. This kind of flexibility is a real value for this piece of
> software.

AFAIK this is not true: compiling (better: packaging - believe it or not, not
*anyone* is capable of compiling) without the GUI requires changes
in the source code.

Such as?

Sorry to insist, I realize my position is not popular among GRASS devs, but there is
a number of situations where having a pure CLI package would bring great advantages.
E.g., does anybody want to install libwxgtk2.8-0 on a server, where GRASS can be used
for WPS?

If you don't want to install wxWidgets, don't install it. The only
part of GRASS which requires it is the GUI. The rest of GRASS will
work fine without it.

If the only available packages (RPM, .deb, etc) insist upon installing
GUI libraries, complain to the people who make the packages.

The only binaries (executables and libraries) which have a dependency
upon a GUI library are those which simply cannot function without one:
NVIZ, xganim, the OGSF library, etc.

[This isn't necessarily true in 7.0; if you build --with-cairo and
cairo has X support enabled, then the display library will have X as a
direct dependency.]

--
Glynn Clements <glynn@gclements.plus.com>

Il 28/11/2010 02:51, Glynn Clements ha scritto:

If the only available packages (RPM, .deb, etc) insist upon installing
GUI libraries, complain to the people who make the packages.

OK, so, now I'm complaining :wink: : packagers, please have your saying here.
All the best.

--
Paolo Cavallini: http://www.faunalia.it/pc