# $Header: /cvsroot/nco/nco/doc/nco_src_frg.txt,v 1.31 2002/02/03 08:40:08 zender Exp $ -*-text-*-

# Purpose: Sourceforge information for NCO netCDF Operators project

Project Full Name:  NCO netCDF Operators
Project Unix Name:  nco
CVS Server:         cvs.nco.sourceforge.net
Shell/Web Server:   nco.sourceforge.net:/home/users/z/ze/zender
		    nco.sourceforge.net:/home/groups/n/nc/nco
Project Websites:   http://nco.sourceforge.net
		    http://sourceforge.net/projects/nco
		    http://sourceforge.net/project/?group_id=3331
		    http://freshmeat.net/projects/nco
Project FTP:        ftp://nco.sourceforge.net/pub/nco
		    nco.sourceforge.net:/home/groups/ftp/pub/nco
CVS:		    Anonymous check out:
		    cvs -d:pserver:anonymous@cvs.nco.sourceforge.net:/cvsroot/nco login 
		    cvs -z3 -d:pserver:anonymous@cvs.nco.sourceforge.net:/cvsroot/nco co -kk nco
		    Developer check out (note absence of pserver protocol allows ssh to be used)
		    export CVS_RSH=ssh 
		    export CVSROOT=zender@cvs.nco.sourceforge.net:/cvsroot/nco
		    cvs -z3 -dzender@cvs.nco.sourceforge.net:/cvsroot/nco co -kk nco
		    cvs -z3 -dzender@cvs.nco.sourceforge.net:/cvsroot/nco co -kk -r netcdf3 -d nco-1_3 nco 
		    Checkouts inside sourceforge firewall:
		    cvs -dzender@cvs1:/cvsroot/nco co -kk nco
Daily tarballs of entire CVS tree for mirroring:
		    http://cvs.sourceforge.net/cvstarballs/nco-cvsroot.tar.gz
Compile Farm:       cf.sourceforge.net

# Create tarballs for uploading to sourceforge
cd /data/zender/tmp
mkdir sf
cp /data/zender/tmp/netcdf-3.5.0.tar.Z /usr/local/lib/libnetcdf* /usr/local/include/netcdf* sf
tar cvzf sf.tar.gz ./sf
mv sf.tar.gz /var/ftp/pub/zender/nco
/bin/rm -r sf
ncftpput upload.sourceforge.net /incoming/var/ftp/pub/zender/nco/sf.tar.gz
scp upload.sourceforge.net:/incoming/sf.tar.gz .

# Copy netCDF libraries from NCO group account
cd ~/nco/bld
scp nco.sf.net:/home/groups/n/nc/nco/lib/LINUX/libnetcdf.a nco.sf.net:/home/groups/n/nc/nco/include/netcdf.h .

# Build NCO on Compile Farm
cd ~/nco/bld
NETCDF_INC=~/nco/bld NETCDF_LIB=~/nco/bld gmake
# Build nco_c++ on Compile Farm
cd ~/nco/src/nco_c++
NETCDF_INC=~/nco/bld NETCDF_LIB=~/nco/bld MY_INC_DIR=. gmake

Building group NCO: 
export MY_BIN_DIR='/home/groups/n/nc/nco/nco/bin'
export MY_LIB_DIR='/home/groups/n/nc/nco/nco/lib'
export MY_OBJ_DIR='/home/groups/n/nc/nco/nco/obj'
export NETCDF_INC='/home/groups/n/nc/nco/include'
export NETCDF_LIB='/home/groups/n/nc/nco/lib/LINUX'
cd /home/groups/n/nc/nco/nco/bld;make;cd -
export PATH="${PATH}\:/home/groups/n/nc/nco/nco/bin"

The purpose of this project is to create and improve tools for data
analysis by using Open Source development strategy. The starting
point for this project is the NCO software suite. NCO is a relatively
mature package which requires new ideas, features, and contributors 
in order to remain a useful and vital application.

The netCDF Operators, or NCO, are a suite of programs known as
operators. The operators facilitate manipulation and analysis of
self-describing data stored in the netCDF or HDF4 formats, which are
freely available (http://www.unidata.ucar.edu/packages/netcdf and
http://hdf.ncsa.uiuc.edu, respectively). Each NCO operator (e.g., 
ncks) takes netCDF or HDF input file(s), performs an operation (e.g.,
averaging, hyperslabbing, or renaming), and outputs a processed netCDF
file. Although most users of netCDF and HDF data are involved in
scientific research, these data formats, and thus NCO, are generic and
are equally useful in fields like finance. The NCO User's Guide
illustrates NCO use with examples from the field of climate modeling
and analysis. The NCO homepage is currently 
http://nco.sourceforge.org

To build NCO on SourceForge, 
make NETCDF_LIB=/home/groups/n/nc/nco/lib/LINUX NETCDF_INC=/home/groups/n/nc/nco/include

To make a new release of NCO on SourceForge:
ncftpput download.sourceforge.net /incoming nco-2.0.0.tar.gz
ncftpput upload.sourceforge.net /incoming /usr/src/redhat/SRPMS/nco-2.0.0-*.src.rpm /usr/src/redhat/RPMS/i386/nco-2.0.0-*.i386.rpm /usr/src/redhat/SOURCES/nco-2.0.0.tar.gz

To upload to RedHat for inclusion in, e.g., rpmfind.net:
ncftpput incoming.redhat.com /libc6 /usr/src/redhat/SRPMS/nco-2.0.0-*.src.rpm /usr/src/redhat/RPMS/i386/nco-2.0.0-*.i386.rpm

Mailing lists nco-announce:
Web page for users:
http://lists.sourceforge.net/mailman/listinfo/nco-announce

Address for posting:
nco-announce@lists.sourceforge.net

Subscriber info, Send message with "help" in it to 
nco-announce-request@lists.sourceforge.net

Subscription page for changing password, options, etc:
http://lists.sourceforge.net/mailman/options/nco-announce/zender@uci.edu

List administration:
http://lists.sourceforge.net/mailman/admin/nco-announce

Contributors with active projects:
Name, E-mail, Sourceforge name, Project
Henry Butowsky <thin@thin.screaming.net> ncap
James Watson <jwatson@csee.uq.edu.au> autoconf
gautam <gautamdhar@hotmail.com> getopt?
Jason Dale Robey <jrobey@users.sourceforge.net> getopt? (Bad email,
never contacted)
S. Srinivasan <s.srinivasan@ematic.com>
Gian Luca Bignardi <pac77@libero.it> GTK+ GUI wrapper?
Jeff Turner <jturner@alum.rpi.edu> getopt, _FillValue?
Igor Crane <igor_crane@hotmail.com> ncap?
John Parish <gerbil@planetquake.com> http? C++ interface?
Mohan Thiyagarajah <mthiyagarajah@yahoo.com> C++ interface? namespace/nc_utl?

How to help develop NCO:

The best way to start contributing is to checkout the software from 
the CVS repository on Sourceforge. The CVS repository contains the
latest, up-to-the-minute software. If you have never used CVS before,
you may just want to download the numbered tar.gz or RPM release,
whichever method you prefer. These will not contain any code changes
since they were released. Eventually, therefore, you must learn to
use CVS so that you can make serious code changes and keep up with the
development branch. NCO-specific instructions on how to check out the
code with CVS are posted to the Developer's forum on Sourceforge 
http://sourceforge.net/forum/forum.php?forum_id=9831 
in the message dated June 21, 2000.

Once you have NCO, build it! If you must make non-trivial
modifications to the Makefile in order to build on your platform,
then please submit those modifications as your first patch.
Once you have built NCO, peruse the user's guide and try a few
examples. 

Read the contents of the Developer's forum! Subscribe to all the NCO
forums so that you are automatically CC'd when new messages arrive.
Post your questions and progress and ideas to the developer's forum
(frequently!) so that others may learn about your work. The
Developer's forum will help prevent duplication of effort and is
the key communication point for everyone involved in the project.

Once you have done all this, you are ready to choose an item on the
TODO list to tackle. For C hackers, I suggest you dive right in to the
source code. Yes, the source code in nc_utl.c and csz.c should be
better organized and split into smaller files. If hacking 5000 line 
files which contains 50 C functions each is too intimidating, then
consider re-organizing the files themselves. This is TODO item #181.
In an open source project, YOU decide what needs to be done.

There are also plenty of non-C ways to contribute, if
that's more your bag (HTML, Make, RPM). The important thing is to
start learning NCO so you can decide for yourself how best
you can contribute. Then, as mentioned above, post your questions
and progress to the developer's forum where different implementation
strategies and technical details are to be discussed. 

Thanks,
Charlie
