[GRASS5] Status of GRASS 5.1

Here a quick status report - GRASS 5.1 development

Modules included (numbers are approximate):

GRASS 5.1 5.0 Comments
--------------------------------------------------
display 38 57 (several d.* modules of 5.0 have been merged)
database 12 11
general 17 17
imagery 19 38
postgresql 1 -
postscript 1 3
raster 89 136 (several modules should not go into 5.1)
vector 29/30 74 (several v.* modules of 5.0 have been merged)
scripts 12 76 (in 5.1 g.parser is used)

Important changes:
- vector -> 2D and 3D support
- sites -> vector (sites functionality is in vector now)
- nviz -> extended to 3D vectors (faces)
- tcltkgrass -> d.m (with small map print manager)
- menus for each module generated on startup (tcl/tk based)
- DBMS support per default (DBF) for vector data
- vector network analysis support (4 modules so far)
- new v.clean with several tools

Remarks:
- It is important to increase the code cohesion for maintainance reasons.
  At time similar functionality is provided by different modules in 5.0.
- r.out.gdal (probably based on gdal_translate) is desperately needed

Some screenshots:
http://mpa.itc.it/radim/g51/

Draft Tutorial:
http://grass.itc.it/grass51/tutorial/

Cheers

Markus

Markus also told me that GRASS 5.1 and its vector format is
stable in production use for months at ITC.

There have been many plans what should be added for 5.1,
but not much development help for Radim or Markus.

I therefore propose that
we should make the improved vector support of GRASS 5.1
as designed and implemented by Radim
the main focus of the 5.2 release.

There is no reason to not bring this improved vector
capabilities to a broader audience for testing and then production use.

This means:
We would try to go for a real experimental release (5.1.0) tarball.
Therefore we should move modules over by procedure to be defined
and call a freeze on major features for 5.2.

For each module fully declared moved to 5.1
the development focus will change.
Developments then have to take place in the 5.1 tree
and focus on getting 5.1. ready for release.

If we all agree on the general plan
we could start making a list of modules that need to be moved
and necessary cleanup steps that we might want to perform
in the move. Note that if people don't help with this,
the modules that will be fully supported in 5.1
will be decided by the active people
according to their time and interests.

  Bernhard

On Fri, May 16, 2003 at 06:04:59PM +0200, Markus Neteler wrote:

Here a quick status report - GRASS 5.1 development

Important changes:
- vector -> 2D and 3D support
- sites -> vector (sites functionality is in vector now)
- nviz -> extended to 3D vectors (faces)
- tcltkgrass -> d.m (with small map print manager)
- menus for each module generated on startup (tcl/tk based)
- DBMS support per default (DBF) for vector data
- vector network analysis support (4 modules so far)
- new v.clean with several tools

Some screenshots:
http://mpa.itc.it/radim/g51/

Draft Tutorial:
http://grass.itc.it/grass51/tutorial/

Bernhard Reiter wrote:

We would try to go for a real experimental release (5.1.0) tarball.
Therefore we should move modules over by procedure to be defined
and call a freeze on major features for 5.2.

For each module fully declared moved to 5.1
the development focus will change.
Developments then have to take place in the 5.1 tree
and focus on getting 5.1. ready for release.

This is the key issue. If the development focus is moved to 5.1, 5.0.x
needs to be frozen; the only subsequent changes to 5.0.x should be bug
fixes.

If we all agree on the general plan
we could start making a list of modules that need to be moved
and necessary cleanup steps that we might want to perform
in the move.

Useful cleanup steps include:

1. Uniform coding style.
2. Use ANSI prototypes.
3. Remove unused code and variables.
4. Use "const" where appropriate.
5. Guard headers against repeated inclusion.
6. Move variable definitions from headers to source files.
7. Consistent use (or not) of "cmd" subdirectory.
8. Eliminate warnings (enable "-Wall" by default for gcc).
9. Consistent use of G_{warning,fatal_error,malloc,free} etc.
10. Identify and remove cloned code.

Step 1 boils down to choosing a set of switches for the "indent"
program, then running indent on all source files.

Step 2 can be automated using "protoize".

Most of the others have to be done manually; some steps are so trivial
that they could be done by a non-programmer (e.g. step 5), while
others require non-trivial analysis of the code (e.g. step 4).

Step 4 has to be done bottom-up; i.e. start with core libraries
(libgis), then the higher-level libraries, then the programs.

Step 10 mostly boils down to creating one or more general utility
libraries to provide a home for shared code which doesn't belong in
any existing library.

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

On Fri, May 16, 2003 at 08:27:32PM +0100, Glynn Clements wrote:

Bernhard Reiter wrote:

> We would try to go for a real experimental release (5.1.0) tarball.
> Therefore we should move modules over by procedure to be defined
> and call a freeze on major features for 5.2.
>
> For each module fully declared moved to 5.1
> the development focus will change.
> Developments then have to take place in the 5.1 tree
> and focus on getting 5.1. ready for release.

This is the key issue. If the development focus is moved to 5.1, 5.0.x
needs to be frozen; the only subsequent changes to 5.0.x should be bug
fixes.

Yes and we need a trigger script that alerts us
if somebody still commits on such a module that is declared moved.

> If we all agree on the general plan
> we could start making a list of modules that need to be moved
> and necessary cleanup steps that we might want to perform
> in the move.

Useful cleanup steps include:

Note that we should only plan to do the work
we have developer resources committed.

Markus and Radim do all the work for GRASS 5.1
(with some people I think like you and Paul helping).
We can't make a list that in the end they have to do the work for.

I plan to help setting up the process and scripts driving it.
We need a list which everybody can see that shows what modules
still are scheduled for what step and which will be left behind,
because nobody commit the work to move them.

I'm also ready to tackle a few modules modules myself
if I get straight instructions.

1. Uniform coding style.
2. Use ANSI prototypes.
3. Remove unused code and variables.
4. Use "const" where appropriate.
5. Guard headers against repeated inclusion.
6. Move variable definitions from headers to source files.
7. Consistent use (or not) of "cmd" subdirectory.
8. Eliminate warnings (enable "-Wall" by default for gcc).
9. Consistent use of G_{warning,fatal_error,malloc,free} etc.
10. Identify and remove cloned code.

Step 1 boils down to choosing a set of switches for the "indent"
program, then running indent on all source files.

Are you absolutely sure that this improves the situation
in all cases? Please suggest a set of switches that Radmin
and Markus agree with.

Step 2 can be automated using "protoize".

You probabl mean:
http://gcc.gnu.org/onlinedocs/gcc/Running-Protoize.html

http://gcc.gnu.org/onlinedocs/gcc/Protoize-Caveats.html#Protoize%20Caveats
tells me that the result might need checking.

Most of the others have to be done manually; some steps are so trivial
that they could be done by a non-programmer (e.g. step 5), while
others require non-trivial analysis of the code (e.g. step 4).

Step 4 has to be done bottom-up; i.e. start with core libraries
(libgis), then the higher-level libraries, then the programs.

I don't think that we fully get 3. or 4. done for the move.
Same for 6 and possible 5 and 7.
Anyway, we might make a plan and record who did what.
It would be nice if we could identify the weaknesses by
a script that we could run each night and update it to the current
status.

Step 10 mostly boils down to creating one or more general utility
libraries to provide a home for shared code which doesn't belong in
any existing library.

A major task, unless we find somebody really putting time
into this, it won't happen for 5.1.

As always, we need developers helping with the job.
GRASS development is only as good as you all are!

  Bernhard

Bernhard Reiter wrote:

> > We would try to go for a real experimental release (5.1.0) tarball.
> > Therefore we should move modules over by procedure to be defined
> > and call a freeze on major features for 5.2.
> >
> > For each module fully declared moved to 5.1
> > the development focus will change.
> > Developments then have to take place in the 5.1 tree
> > and focus on getting 5.1. ready for release.
>
> This is the key issue. If the development focus is moved to 5.1, 5.0.x
> needs to be frozen; the only subsequent changes to 5.0.x should be bug
> fixes.

Yes and we need a trigger script that alerts us
if somebody still commits on such a module that is declared moved.

I'm not sure that a module-by-module transition is really viable.

It would be better to just declare that all development should move to
5.1, and that anyone wanting to update a module which hasn't yet been
transitioned to 5.1 should start by transitioning the module to 5.1
then working on that.

> > If we all agree on the general plan
> > we could start making a list of modules that need to be moved
> > and necessary cleanup steps that we might want to perform
> > in the move.
>
> Useful cleanup steps include:

Note that we should only plan to do the work
we have developer resources committed.

Markus and Radim do all the work for GRASS 5.1
(with some people I think like you and Paul helping).
We can't make a list that in the end they have to do the work for.

I'm happy to move from 5.0 to 5.1 if an authoritative decision is made
to do so, but I don't intend to do active development on two
substantially different versions at once, and any move to 5.1 would
effectively be permanent (I would be willing to do bug-fixes for
5.0.x, but not anything more substantial).

I plan to help setting up the process and scripts driving it.
We need a list which everybody can see that shows what modules
still are scheduled for what step and which will be left behind,
because nobody commit the work to move them.

I'm also ready to tackle a few modules modules myself
if I get straight instructions.

I could do a lot of the "bulk" work, i.e. the situations where it's
clear what need to be done (particuarly steps 1, 2 and 5, and to a
lesser extent steps 3, 4, 6, 7 and 9).

> 1. Uniform coding style.
> 2. Use ANSI prototypes.
> 3. Remove unused code and variables.
> 4. Use "const" where appropriate.
> 5. Guard headers against repeated inclusion.
> 6. Move variable definitions from headers to source files.
> 7. Consistent use (or not) of "cmd" subdirectory.
> 8. Eliminate warnings (enable "-Wall" by default for gcc).
> 9. Consistent use of G_{warning,fatal_error,malloc,free} etc.
> 10. Identify and remove cloned code.
>
> Step 1 boils down to choosing a set of switches for the "indent"
> program, then running indent on all source files.

Are you absolutely sure that this improves the situation
in all cases?

Yes. The current situation means that, if I am editing a bunch of
files which are spread across various modules, I have to either:

a) change XEmacs' formatting rules for each file that I edit,
b) manually adjust the formatting of individual lines, or
c) disable auto-formatting altogether.

Please suggest a set of switches that Radmin
and Markus agree with.

Well, the one thing that's been holding this up is reaching agreement
as to exactly what the coding style should be. IIRC, Markus did once
suggest a set of switches, and nobody commented.

Assuming that Radim has used the same style for all of the existing
work on 5.1, maybe we should just figure out which indent switches
produce that style and use those?

> Step 2 can be automated using "protoize".

You probabl mean:
http://gcc.gnu.org/onlinedocs/gcc/Running-Protoize.html

http://gcc.gnu.org/onlinedocs/gcc/Protoize-Caveats.html#Protoize%20Caveats
tells me that the result might need checking.

AFAICT, all of the likely failures will result in errors.

> Most of the others have to be done manually; some steps are so trivial
> that they could be done by a non-programmer (e.g. step 5), while
> others require non-trivial analysis of the code (e.g. step 4).
>
> Step 4 has to be done bottom-up; i.e. start with core libraries
> (libgis), then the higher-level libraries, then the programs.

I don't think that we fully get 3. or 4. done for the move.
Same for 6 and possible 5 and 7.
Anyway, we might make a plan and record who did what.
It would be nice if we could identify the weaknesses by
a script that we could run each night and update it to the current
status.

The most important one to do at the same time as the move is 1, as it
often changes most of the source file, resulting in a large diff,
which not only wastes bandwidth when doing "cvs update", it also makes
a mess of any "cvs diff" operations which span the reformatting.

The rest can be done as time allows.

However, use of "const" in core libraries should be done sooner rather
than later. Lack of "const" is almost a bug IMHO; worse, it "infests"
all callers, as they have to declare their own arguments as mutable,
creating the same problem for their callers etc.

> Step 10 mostly boils down to creating one or more general utility
> libraries to provide a home for shared code which doesn't belong in
> any existing library.

A major task,

It shouldn't be. At a minimum, you could just add the cloned function
to libgis. Even if it's moved to some other library, the corresponding
Makefile changes are trivial.

unless we find somebody really putting time
into this, it won't happen for 5.1.

As always, we need developers helping with the job.
GRASS development is only as good as you all are!

Just revoke everyone's commit access for the 5.0 tree; people will
start working on 5.1 soon enough :wink:

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

On Sat, May 17, 2003 at 12:13:50AM +0200, Bernhard Reiter wrote:

On Fri, May 16, 2003 at 08:27:32PM +0100, Glynn Clements wrote:
> Bernhard Reiter wrote:
>
> > We would try to go for a real experimental release (5.1.0) tarball.
> > Therefore we should move modules over by procedure to be defined
> > and call a freeze on major features for 5.2.
> >
> > For each module fully declared moved to 5.1
> > the development focus will change.
> > Developments then have to take place in the 5.1 tree
> > and focus on getting 5.1. ready for release.
>
> This is the key issue. If the development focus is moved to 5.1, 5.0.x
> needs to be frozen; the only subsequent changes to 5.0.x should be bug
> fixes.

Yes and we need a trigger script that alerts us
if somebody still commits on such a module that is declared moved.

> > If we all agree on the general plan
> > we could start making a list of modules that need to be moved
> > and necessary cleanup steps that we might want to perform
> > in the move.
>
> Useful cleanup steps include:

Note that we should only plan to do the work
we have developer resources committed.

Markus and Radim do all the work for GRASS 5.1
(with some people I think like you and Paul helping).
We can't make a list that in the end they have to do the work for.

Right - as they won't do it all alone for several reasons:
- our institute allows us only to dedicate a certain percentage of our
  work time to GRASS development (yes, we have lot's of other projects
  to do)
- I am more a non-programmer than programmer
- it's much to much for 1.x people

I plan to help setting up the process and scripts driving it.

That's most welcome.

We need a list which everybody can see that shows what modules
still are scheduled for what step and which will be left behind,
because nobody commit the work to move them.

Due to my experience the GRASS developers tend to concentrate
to work on things they need, which is reasonable and should be
kept in mind when defining steps.

A starting point is to work on the code which is currently linked
into 5.1. We have chosen modules which seemed to be important to
cover base GIS functionality. Those missing such as 'r.support'
require significant overhaul, e.g. to have full CMD line support.

I'm also ready to tackle a few modules modules myself
if I get straight instructions.

We should definitly start to clean up and improve libgis.
Also the documentation should be moved into the code (from
the ProgMan) in doxygen style (see 5.1 vector lib how to
do that). It's impossible to maintain this separated from the
code.

> 1. Uniform coding style.
> 2. Use ANSI prototypes.
> 3. Remove unused code and variables.
> 4. Use "const" where appropriate.
> 5. Guard headers against repeated inclusion.
> 6. Move variable definitions from headers to source files.
> 7. Consistent use (or not) of "cmd" subdirectory.
> 8. Eliminate warnings (enable "-Wall" by default for gcc).
> 9. Consistent use of G_{warning,fatal_error,malloc,free} etc.
> 10. Identify and remove cloned code.
>
> Step 1 boils down to choosing a set of switches for the "indent"
> program, then running indent on all source files.

Are you absolutely sure that this improves the situation
in all cases? Please suggest a set of switches that Radmin
and Markus agree with.

I have already suggested this month ago and proposed to use
the indent rule used by the Apache people (see grass5 archive,
can't find the ref now).
If you look at lib/image3/ you see an absolute nightmare of
code layout.

Roger Bivand pointed out that files should be even split in
libgis to make R/GRASS interface programming easier.

> Step 2 can be automated using "protoize".

You probabl mean:
http://gcc.gnu.org/onlinedocs/gcc/Running-Protoize.html

http://gcc.gnu.org/onlinedocs/gcc/Protoize-Caveats.html#Protoize%20Caveats
tells me that the result might need checking.

> Most of the others have to be done manually; some steps are so trivial
> that they could be done by a non-programmer (e.g. step 5), while
> others require non-trivial analysis of the code (e.g. step 4).
>
> Step 4 has to be done bottom-up; i.e. start with core libraries
> (libgis), then the higher-level libraries, then the programs.

I don't think that we fully get 3. or 4. done for the move.

Why not? At least 3 should be done (enjoy lib/ogsf/ for unused variables).

Same for 6 and possible 5 and 7.
Anyway, we might make a plan and record who did what.

Step 8 is already done.

It would be nice if we could identify the weaknesses by
a script that we could run each night and update it to the current
status.

Yes. If available, I could add it to the grass web site.

> Step 10 mostly boils down to creating one or more general utility
> libraries to provide a home for shared code which doesn't belong in
> any existing library.

A major task, unless we find somebody really putting time
into this, it won't happen for 5.1.

At least functions present in the libs should be used and local
versions (often identical) deleted (see the imagery modules, I feel
that the imagery lib was developed after several modules had been written).

As always, we need developers helping with the job.
GRASS development is only as good as you all are!

You are most welcome to participate in steps 1..10 :slight_smile:

I think Radim and me are at the absolute maximum what we can provide
for GRASS development. Without getting more programmers on board it
will take a lot of time.

Dear professors, maybe you can invite motivated students (computer
science etc) to work on some tasks?

Markus

On Sat, May 17, 2003 at 07:23:55PM +0200, Markus Neteler wrote:

I think Radim and me are at the absolute maximum what we can provide
for GRASS development. Without getting more programmers on board it
will take a lot of time.

I believe the GRASS community to be very grateful
for your motivated long-standing work for GRASS.

Without you GRASS would have lost
its healthy green color long ago.

  Bernhard

Hi Alex,
(cc grass5)

On Mon, May 19, 2003 at 05:09:05AM -0700, Alex Shevlakov wrote:

Hi Markus,

I recently checked the updates in 5.0.3 and found
that due to quoted variables in "tcltkgrass" shell
script
(your diff to 1.10) these variables are null elsewhere
thus nothing works in picking features in tcltkgrass
boxes.
It's 7.3 RedHat with 8.3 Tcl/Tk on my box.

thanks for pointing this out - on Redhat 7.3 it works...

grass/src/tcltkgrass/tcltkgrass,v
retrieving revision 1.10
retrieving revision 1.11
diff -r1.10 -r1.11
12,14c12,14
< set env(GISDBASE) [exec g.gisenv get=GISDBASE]
< set env(LOCATION_NAME) [exec g.gisenv get=LOCATION_NAME]
< set env(MAPSET) [exec g.gisenv get=MAPSET]
---

set env(GISDBASE) [exec g.gisenv get="GISDBASE"]
set env(LOCATION_NAME) [exec g.gisenv get="LOCATION_NAME"]
set env(MAPSET) [exec g.gisenv get="MAPSET"]

Is this change wrong? Should it be
get=\"LOCATION_NAME\"
etc instead?

Markus

It works with names without quotatons. I guess these
marks are unnecessary, or I am wrong.

--alex

--- Markus Neteler <neteler@itc.it> wrote:

Hi Alex,
(cc grass5)

On Mon, May 19, 2003 at 05:09:05AM -0700, Alex
Shevlakov wrote:
> Hi Markus,
>
> I recently checked the updates in 5.0.3 and found
> that due to quoted variables in "tcltkgrass" shell
> script
> (your diff to 1.10) these variables are null
elsewhere
> thus nothing works in picking features in
tcltkgrass
> boxes.
> It's 7.3 RedHat with 8.3 Tcl/Tk on my box.

thanks for pointing this out - on Redhat 7.3 it
works...

grass/src/tcltkgrass/tcltkgrass,v
retrieving revision 1.10
retrieving revision 1.11
diff -r1.10 -r1.11
12,14c12,14
< set env(GISDBASE) [exec g.gisenv get=GISDBASE]
< set env(LOCATION_NAME) [exec g.gisenv
get=LOCATION_NAME]
< set env(MAPSET) [exec g.gisenv get=MAPSET]
---
> set env(GISDBASE) [exec g.gisenv get="GISDBASE"]
> set env(LOCATION_NAME) [exec g.gisenv
get="LOCATION_NAME"]
> set env(MAPSET) [exec g.gisenv get="MAPSET"]

Is this change wrong? Should it be
get=\"LOCATION_NAME\"
etc instead?

Markus

_______________________________________________
grass5 mailing list
grass5@grass.itc.it
http://grass.itc.it/mailman/listinfo/grass5

__________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.
http://search.yahoo.com

Markus Neteler wrote:

> I recently checked the updates in 5.0.3 and found
> that due to quoted variables in "tcltkgrass" shell
> script
> (your diff to 1.10) these variables are null elsewhere
> thus nothing works in picking features in tcltkgrass
> boxes.
> It's 7.3 RedHat with 8.3 Tcl/Tk on my box.

thanks for pointing this out - on Redhat 7.3 it works...

grass/src/tcltkgrass/tcltkgrass,v
retrieving revision 1.10
retrieving revision 1.11
diff -r1.10 -r1.11
12,14c12,14
< set env(GISDBASE) [exec g.gisenv get=GISDBASE]
< set env(LOCATION_NAME) [exec g.gisenv get=LOCATION_NAME]
< set env(MAPSET) [exec g.gisenv get=MAPSET]
---
> set env(GISDBASE) [exec g.gisenv get="GISDBASE"]
> set env(LOCATION_NAME) [exec g.gisenv get="LOCATION_NAME"]
> set env(MAPSET) [exec g.gisenv get="MAPSET"]

Is this change wrong?

Yes.

Should it be
get=\"LOCATION_NAME\"
etc instead?

No; it should be as it was before, without quotes.

Tcl is not the Bourne shell. Even if it was, those changes would be
unnecessary, as what was being quoted were variable names, not
variable values (with a dollar sign).

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

On Mon, May 19, 2003 at 04:06:12PM +0100, Glynn Clements wrote:

Markus Neteler wrote:

> > I recently checked the updates in 5.0.3 and found
> > that due to quoted variables in "tcltkgrass" shell
> > script
> > (your diff to 1.10) these variables are null elsewhere
> > thus nothing works in picking features in tcltkgrass
> > boxes.
> > It's 7.3 RedHat with 8.3 Tcl/Tk on my box.
>
> thanks for pointing this out - on Redhat 7.3 it works...
>
> grass/src/tcltkgrass/tcltkgrass,v
> retrieving revision 1.10
> retrieving revision 1.11
> diff -r1.10 -r1.11
> 12,14c12,14
> < set env(GISDBASE) [exec g.gisenv get=GISDBASE]
> < set env(LOCATION_NAME) [exec g.gisenv get=LOCATION_NAME]
> < set env(MAPSET) [exec g.gisenv get=MAPSET]
> ---
> > set env(GISDBASE) [exec g.gisenv get="GISDBASE"]
> > set env(LOCATION_NAME) [exec g.gisenv get="LOCATION_NAME"]
> > set env(MAPSET) [exec g.gisenv get="MAPSET"]
>
> Is this change wrong?

Yes.

> Should it be
> get=\"LOCATION_NAME\"
> etc instead?

No; it should be as it was before, without quotes.

Tcl is not the Bourne shell. Even if it was, those changes would be
unnecessary, as what was being quoted were variable names, not
variable values (with a dollar sign).

Thanks.
Fixed in CVS now.

Markus

I'm currently going througth some of the more "Interesting modules", with
the aim of contributing to the development process.

On Mon, 19 May 2003, Bernhard Reiter wrote:

On Sat, May 17, 2003 at 07:23:55PM +0200, Markus Neteler wrote:
> I think Radim and me are at the absolute maximum what we can provide
> for GRASS development. Without getting more programmers on board it
> will take a lot of time.

I believe the GRASS community to be very grateful
for your motivated long-standing work for GRASS.

Without you GRASS would have lost
its healthy green color long ago.

  Bernhard

Has anybody installed GRASS on RedHat9? If yes, were there any problems
that we need to take care of if we want to do it?

thank you,

Helena

On Thu, 2003-05-29 at 10:50, Helena wrote:

Has anybody installed GRASS on RedHat9? If yes, were there any problems
that we need to take care of if we want to do it?

I am running it on Redhat 9.0 and the only issue I have come across was
the location of the tktcl shared libraries which has already been
reported.

--
John Preston
International Centre for Environmental and Nuclear Sciences
Mona Campus, University of the West Indies
Kingston, JAMAICA.

On Tue, May 20, 2003 at 04:29:13PM +0300, Andrew Olden Erasmus e99 wrote:

I'm currently going througth some of the more "Interesting modules", with
the aim of contributing to the development process.

Sound nice.
Did you find something yet?

Note that for exercise you could also try to inquire
and fix a couple of older bugs in the bugtracker.
It would get you a bit more into the development process of GRASS.
:slight_smile:

Please accept my appologies for not responding to the thread for a while
I was very absorbed due to several reasons.

Nontheless I think we need still need to make progress here.
I'll try to split the subjects in threads to we can
divide and conquer the questions.

My other next action will be to write a small script that
hands out stats on the bug tracker.

  Bernhard

On Sat, May 17, 2003 at 07:23:55PM +0200, Markus Neteler wrote:

On Sat, May 17, 2003 at 12:13:50AM +0200, Bernhard Reiter wrote:
> On Fri, May 16, 2003 at 08:27:32PM +0100, Glynn Clements wrote:
> > Bernhard Reiter wrote:
> >
> > > We would try to go for a real experimental release (5.1.0) tarball.
> > > Therefore we should move modules over by procedure to be defined
> > > and call a freeze on major features for 5.2.

> > This is the key issue. If the development focus is moved to 5.1, 5.0.x
> > needs to be frozen; the only subsequent changes to 5.0.x should be bug
> > fixes.

On Sat, 17 May 2003 19:23:55 +0200
"Markus Neteler" <neteler@itc.it> wrote:

> > 1. Uniform coding style.

[...]

> > Step 1 boils down to choosing a set of switches for the "indent"
> > program, then running indent on all source files.
>
> Are you absolutely sure that this improves the situation
> in all cases? Please suggest a set of switches that Radmin
> and Markus agree with.

I have already suggested this month ago and proposed to use
the indent rule used by the Apache people (see grass5 archive,
can't find the ref now).
If you look at lib/image3/ you see an absolute nightmare of
code layout.

Is this decided? (aka any objections?)
If it is, can it be added to the SUBMITTING file?

Apache coding style:
  http://www.apache.org/dev/styleguide.html

"This style can be generated with the following arguments to GNU indent:"
-i4 -npsl -di0 -br -nce -d0 -cli0 -npcs -nfc1

The reference to the "GNU coding standards" in SUBMITTING Rule #2 would
need to be qualified as GNU's section 5.1 presents a different standard.

Even if indent isn't run now, at least new & modified code could be
consistent..

=--=

> 7. Consistent use (or not) of "cmd" subdirectory.

Is/was there any useful reason to use a cmd directory for modules or
is this just a historical leftover? Add answer to Rule #2 of SUBMITTING?
src/raster/r.example/cmd/main.c or src/raster/r.example/main.c ??

thanks,
Hamish

Another thought.

I can't seem to find anything in SUBMITTING that asks that extensive
whitespace changes should be submitted to cvs seperately from actual
code changes?

thanks,
Hamish

H Bowman wrote:

> > > 1. Uniform coding style.
[...]
> > > Step 1 boils down to choosing a set of switches for the "indent"
> > > program, then running indent on all source files.
> >
> > Are you absolutely sure that this improves the situation
> > in all cases? Please suggest a set of switches that Radmin
> > and Markus agree with.
>
> I have already suggested this month ago and proposed to use
> the indent rule used by the Apache people (see grass5 archive,
> can't find the ref now).
> If you look at lib/image3/ you see an absolute nightmare of
> code layout.

Is this decided? (aka any objections?)
If it is, can it be added to the SUBMITTING file?

Apache coding style:
  http://www.apache.org/dev/styleguide.html

"This style can be generated with the following arguments to GNU indent:"
-i4 -npsl -di0 -br -nce -d0 -cli0 -npcs -nfc1

I think that we should be more prescriptive, i.e. we should specify a
setting for most options. Also, we should specify either -bbo or
-nbbo, even if we don't intend to use -lN, so that authors know where
to break long boolean expressions.

FWIW, my preference would be:

-nbad -bap -bbb -nbbo -nbc -bl -bli0 -bls -cbi0 -ncdb -nce -ci4 -cli0
-ncs -d0 -di0 -fc1 -nfca -hnl -i4 -ip4 -l80 -lc80 -lp -npcs -pi4 -nprs
-npsl -sbi0 -sc -nsob -ss -ts8

However, much of that is arbitrary; I'll live with whatever is
ultimately chosen (except -ts8; that's a technical issue rather than a
preference).

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

> > > > 1. Uniform coding style.
> [...]
> > > > Step 1 boils down to choosing a set of switches for the
> > > > "indent" program, then running indent on all source files.

I think that we should be more prescriptive, i.e. we should specify a
setting for most options. Also, we should specify either -bbo or
-nbbo, even if we don't intend to use -lN, so that authors know where
to break long boolean expressions.

FWIW, my preference would be:

-nbad -bap -bbb -nbbo -nbc -bl -bli0 -bls -cbi0 -ncdb -nce -ci4 -cli0
-ncs -d0 -di0 -fc1 -nfca -hnl -i4 -ip4 -l80 -lc80 -lp -npcs -pi4 -nprs
-npsl -sbi0 -sc -nsob -ss -ts8

However, much of that is arbitrary; I'll live with whatever is
ultimately chosen (except -ts8; that's a technical issue rather than a
preference).

How fool-proof is indent? Does it require checking & testing of every
converted file?

My guess would be if it does break stuff, it will probably just be
exposing existing bugs.

?
Hamish