[GRASS5] Re: GRASS 5.1 startup

Glynn,

(cc to grass5)

On Tue, Oct 09, 2001 at 06:25:03AM +0100, Glynn Clements wrote:

Markus Neteler wrote:

> Generally numerous changes are to be expected, basically shared libs,
> new Makefile system, PROJ4 support (with datum transform) and the
> new vector lib (backward compatible), not to forget an improved directory
> layout and, build-in DBMS support. Enough for month, I think, but
> needed if we want that GRASS survives.

OK.

The PROJ4 support and new vector library can be left mostly to the
people who are going to implement them.

yes - we need a sort of "work groups" to have a responsible person
for each part. I think it is impossible for one person to supervise
all changes.

The build system and directory layout really need to be open to
discussion by everyone.

I would like to suggest that we also start an official maintenance
effort, including:

+ Convert pre-ANSI code to use ANSI prototypes.
+ Implement a uniform coding style.
+ Remove unused code and variables.
+ Use "const" where appropriate.
+ Guard headers against repeated inclusion.
+ Move variable definitions from headers to source files.
+ Consistent use (or not) of "cmd" subdirectory.
+ Remove warnings (enable "-Wall" by default for gcc).
+ Consistent use of G_{warning,fatal_error,malloc,free} etc.

We should also check if certain code which is repeated everywhere
can be moved to the GRASS libraries. That's improving consistency
and (later) maintenance.
Eventually (!) here at ITC-irst we can use tools to identify such
code, they have a so-called "clone detector". But as GRASS is quite
big, it is no easy task to apply the "clone detector" to this code.

Several of these actions will result in "whole file" changes, i.e.
where "cvs update" will retrieve a completely new version of the file
rather than patching an existing file. Consequently, it would be more
efficient for each file to undergo all of the above actions
simultaneously. Which requires that all of the stages are agreed in
advance.

We have to set up a list of checks to be followed before a module
may enter the grass51/ source tree. I guess we start to set up
the restructured libraries along with the new Makefile system, then
the modules.

Also, this might be a good time to look into the command startup
issues (G_parser() etc).

> Question is, where to start... I fear that not all relevant
> people will come to Trento in November. How to deal with that?

Use the mailing list. Plenty of open-source projects operate without
face-to-face meetings.

BTW, what's left to do before 5.0 can be "released"?

see my other mail:

- NVIZ TOP button needs a fix, NVIZ is really behaving strange here
   (Bob already spend a lot of time on that)
- r.in.gdal: fix the currently hard_coded LL "projection" for
   GCPs (means: fix the wkt_to_grass()
- Huidae is currently adding cats transfer to r.mapcalc for
   the two cases:
    new_mapname = oldmapname
    new_mapname = if(cond, old_mapname1, old_mapname2)
- Andrea Aime and me are finishing the cats support for s.delaunay
   (have been missing, which lead to broken polygons)
- more?

Bear in mind that some problems only come to light once the software
gets into the hands of people who don't use anything which is labelled
"beta" or "pre-release". Actually, many people abide by the maxim of
"never use a something-point-zero version of anything", so you might
have to release 5.0.1 before you really start getting feedback.

Do you think of 5.1.1 here?

I really think that we should start 5.1.0 instead of having two more
5.0.x versions... But I guess you agree.

--
Glynn Clements <glynn.clements@virgin.net>

Best regards

Markus Neteler

Markus and Glynn,
it is important to set up a good structure and goals for 5.1.x
GRASS versions. Let me restate that the idea is that 5.1.x
will be a development branch, like the 2.3.x Linux kernel versions.
5.0.x will be the stable branch.

On Wed, Oct 10, 2001 at 02:22:12PM +0200, Markus Neteler wrote:

I really think that we should start 5.1.0 instead of having two more
5.0.x versions... But I guess you agree.

We will have development and stable branch in parallel.
Perhaps time will tell if some persons are more into maintaining
the stable version or want to hack on the development code.

As we cannot expect the 5.1.x development to be stable for quite
some time, we should expect bugs in the 5.0.x line that we have to
fix on short time.

  Bernhard

--
Professional Service around Free Software (intevation.net)
The FreeGIS Project (freegis.org)
Association for a Free Informational Infrastructure (ffii.org)
FSF Europe (fsfeurope.org)

Glynn, Eric, and others who have the most recent CVS version
would you be so kind and give Markus some feedback whether he could
release the current GRASS5.0 as a stable, final release ? (see our discussion
below). My major argument is that people are dowloading and using
GRASS4.3 as a current stable version, while I believe that GRASS5.0
as it is now is just plain much better and people should be using it,
(in spite of all the enhancements and fixes that it still needs.)

thanks for your input,

Helena

Markus Neteler wrote:

Helena,

On Wed, Oct 10, 2001 at 09:35:55AM -0400, Helena Mitasova wrote:
> >
> > >
> > > BTW, what's left to do before 5.0 can be "released"?
> >
> > see my other mail:
> >
> > - NVIZ TOP button needs a fix, NVIZ is really behaving strange here
> > (Bob already spend a lot of time on that)
>
> Markus, if it cannot be fixed in 1 hour, then remove it and go back to the
> previous version.
> After Bob has fixed the disappearing surface and lights NVIZ worked really
> well.

the TOP button doesn't break anything and only sometimes fails in the
following way: You always get a top view, but somtimes the map is
rotated (north to east or south). TOP is always top, but not always
the "north-up" view which is mostly expected. But that's really not
severe (so I suggest to keep this useful button) since the
user can easily rotate the map using the puck.

> The release of GRASS5.0 should not be hold on this. I believe, that at
> this stage such enhancements really should not be added, because GRASS
> will never get released.

Yes, I agree (and I am a bit tired of 5.0.0).

> >
> > - r.in.gdal: fix the currently hard_coded LL "projection" for
> > GCPs (means: fix the wkt_to_grass()
> > - Huidae is currently adding cats transfer to r.mapcalc for
> > the two cases:
> > new_mapname = oldmapname
> > new_mapname = if(cond, old_mapname1, old_mapname2)
> > - Andrea Aime and me are finishing the cats support for s.delaunay
> > (have been missing, which lead to broken polygons)
> > - more?
>
> overall, I believe, that long time ago, only the absolutely essential bug fixes
> should have been holding GRASS release and non essential features
> and enhancements should be left for the next release or as patches that people
> can download separately. It appears to me that each time the GRASS5pre* is
> released
> the list of TODO things gets longer rather than shorter.
> There are many people sticking to a totally obsolete GRASS4.3 - which is listed
> on the web site as current,stable version instead of using GRASS5.0 which I
> believe
> has probably fewer bugs, is easier to install and has incomparably improved
> capabilities.
> We all know that there is about a milion improvements and fixes needed for
> GRASS,
> but it runs pretty well as it is and it is definitely suitable for routine,
> everyday production
> work so I think that you should cut-off any new development and enhancements
> and release it. GRASS has been really imporved tremendously, that you all for
> that,
> and it is a shame that many users are still having to use GRASS4.3

I agree 100%. Perhaps you post this on "grass5" as well? If nobody
minds, we can release stable today... I am open for this idea.

Best regards

Markus

PS: as suggested, I have changed
GRASS 5.0.0pre2 [current pre]
GRASS 4.3 [old stable]
here: http://grass.itc.it/index2.html

Markus Neteler wrote:

> I would like to suggest that we also start an official maintenance
> effort, including:
>
> + Convert pre-ANSI code to use ANSI prototypes.
> + Implement a uniform coding style.
> + Remove unused code and variables.
> + Use "const" where appropriate.
> + Guard headers against repeated inclusion.
> + Move variable definitions from headers to source files.
> + Consistent use (or not) of "cmd" subdirectory.
> + Remove warnings (enable "-Wall" by default for gcc).
> + Consistent use of G_{warning,fatal_error,malloc,free} etc.

We should also check if certain code which is repeated everywhere
can be moved to the GRASS libraries. That's improving consistency
and (later) maintenance.
Eventually (!) here at ITC-irst we can use tools to identify such
code, they have a so-called "clone detector". But as GRASS is quite
big, it is no easy task to apply the "clone detector" to this code.

Actually, that was one of the motivations for implementing a uniform
coding style.

Whenever I've found code which appears to have been cloned (initially
src/display/devices, but there have been a couple of other case), one
factor which complicated comparison was that sometimes, one version of
the code (or maybe even both versions) had been re-formatted.

Another motivation is that, when someone is modifying files which use
different coding conventions (e.g. fixing a common type of warning,
changing a system-wide convention, etc), the indentation has to be
done manually.

With a common coding style, you can just configure your text editor to
perform automatic formatting; but this is only practical if the
formatting is the same for all files.

BTW, I have absolutely no preference as to *which* coding style is
adopted.

> BTW, what's left to do before 5.0 can be "released"?

see my other mail:

- NVIZ TOP button needs a fix, NVIZ is really behaving strange here
   (Bob already spend a lot of time on that)

Can you clarify? I don't understand "NVIZ TOP button".

- r.in.gdal: fix the currently hard_coded LL "projection" for
   GCPs (means: fix the wkt_to_grass()
- Huidae is currently adding cats transfer to r.mapcalc for
   the two cases:
    new_mapname = oldmapname
    new_mapname = if(cond, old_mapname1, old_mapname2)

Can this be done for r.proj? Are there any others?

> Bear in mind that some problems only come to light once the software
> gets into the hands of people who don't use anything which is labelled
> "beta" or "pre-release". Actually, many people abide by the maxim of
> "never use a something-point-zero version of anything", so you might
> have to release 5.0.1 before you really start getting feedback.

Do you think of 5.1.1 here?

By "5.0.1", I mean the result of just fixing the bugs which are found
in 5.0.0 once it actually gets released.

The changes involved for 5.1.0 will probably ensure that 5.1.1 follows
shortly after that. The development cycle invariably goes:

  1. make changes
  2. fix all of the bugs that you can find
  3. release to the public
  4. fix all of the bugs that the public managed to find (but
     the developers didn't)
  5. GOTO 1

--
Glynn Clements <glynn.clements@virgin.net>

Helena Mitasova wrote:

Glynn, Eric, and others who have the most recent CVS version
would you be so kind and give Markus some feedback whether he could
release the current GRASS5.0 as a stable, final release ? (see our discussion
below). My major argument is that people are dowloading and using
GRASS4.3 as a current stable version, while I believe that GRASS5.0
as it is now is just plain much better and people should be using it,
(in spite of all the enhancements and fixes that it still needs.)

Well, it's getting to the point where there are few known actual bugs
(as opposed to limitations and deficiencies). In this situation, the
only way to avoid creating new bugs faster than existing ones are
being fixed is for most developers to remain idle.

--
Glynn Clements <glynn.clements@virgin.net>