# $Header: /cvsroot/nco/nco/doc/nco_src_frg.txt,v 1.46 2003/01/07 03:22:41 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:       ssh cf.sourceforge.net cf.sf.net
HP Testdrive:       telnet 192.233.54.169

# 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 docs from compile farm to NCO websites
cd ~/nco/doc;scp -C nco.dvi nco.html nco.info* nco.pdf nco.ps* zender@nco.sourceforge.net:/home/groups/n/nc/nco/htdocs
cd ~/nco/doc;scp -C nco.dvi nco.html nco.info* nco.pdf nco.ps* zender@dust.ess.uci.edu:/var/www/html/nco

# Copy netCDF library to HP account
ncftpput spe141.testdrive.compaq.com /house/zender /data/zender/tmp/netcdf-3.5.1-beta5.tar.Z
mkdir ${HOME}/bin/${GNU_TRP}
mkdir ${HOME}/lib/${GNU_TRP}
cd ~/netcdf-3.5.1-beta5/src
make distclean
CPPFLAGS='-Df2cFortran' FC='g77' ./configure --prefix=${HOME} --bindir=${HOME}/bin/${GNU_TRP} --libdir=${HOME}/lib/${GNU_TRP}
CC='/bin/c89' CPPFLAGS='-D_HPUX_SOURCE' CXX='aCC' FC='/opt/fortran/bin/fort77' FFLAGS='-w' FLIBS='-lU77' ./configure --prefix=${HOME} --bindir=${HOME}/bin/${GNU_TRP} --libdir=${HOME}/lib/${GNU_TRP}
make;make install

# Copy netCDF library to NCO group account
scp -C /data/zender/tmp/netcdf-3.5.0.tar.Z zender@nco.sourceforge.net:/home/groups/n/nc/nco
scp -C ~/nco/data/nco_tst.nc zender@nco.sourceforge.net:/home/groups/n/nc/nco/nco/data
# Copy netCDF library from NCO group account to compile farm
scp -C nco.sf.net:/home/groups/n/nc/nco/netcdf-3.5.0.tar.Z ~
scp -C nco.sf.net:/home/groups/n/nc/nco/nco/data/nco_tst.nc ~/nco/data
# Build netCDF library on compile farm
cd ~;tar xvzf netcdf-3.5.0.tar.Z
cd ~/netcdf-3.5.0/src
make distclean
CPPFLAGS='-Df2cFortran' FC='g77' ./configure --prefix=${HOME} --bindir=${HOME}/bin/${GNU_TRP} --libdir=${HOME}/lib/${GNU_TRP}
make;make install

# Compile Farm startup
alias bsrc="source ${HOME}/.bashrc"
alias cp='cp -i' # -i = inquire
alias cvc='cvs commit -m ""'
alias cvu='cvs update -kk'
alias env='env | sort | more'
alias h='history'
alias ls='ls -F' # -F = mark directories with /, links with @, etc.
alias m="less"
alias mv='mv -i' # -i = inquire
alias rm='rm -i' # -i = inquire
alias scp='scp -C' # -p = preserve mode, time, -C = enable compression
export CVS_RSH='ssh'
export GNU_TRP=`~/nco/autobld/config.guess`
export HOST=`/bin/hostname`
export MY_BIN_DIR="${HOME}/bin/${GNU_TRP}"
export MY_LIB_DIR="${HOME}/lib/${GNU_TRP}"
export NETCDF_INC="${HOME}/include"
export NETCDF_LIB="${HOME}/lib/${GNU_TRP}"
export PATH=${MY_BIN_DIR}\:${PATH}
export PS1='\u@\h:\w\$ ' # Prompt user@host:cwd$ NeR98 p. 71 NB: single quotes
cd ~/nco;cvs update -kk

# Build NCO on Compile Farm, old method:
cd ~/nco/bld
NETCDF_INC=${HOME}/include NETCDF_LIB=${HOME}/lib/${GNU_TRP} make
# Build nco_c++ on Compile Farm
cd ${HOME}/nco/src/nco_c++
NETCDF_INC=${HOME}/include NETCDF_LIB=${HOME}/lib/${GNU_TRP} 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.2.0.tar.gz
ncftpput upload.sourceforge.net /incoming /usr/src/redhat/SRPMS/nco-2.2.0-*.src.rpm /usr/src/redhat/RPMS/i386/nco-2.2.0-*.i386.rpm /usr/src/redhat/SOURCES/nco-2.2.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.2.0-*.src.rpm /usr/src/redhat/RPMS/i386/nco-2.2.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 <henryb at ntlworld dot com> ncap
Rorik Peterson <ffrap1 at uaf dot edu> autoconf
James Watson <jwatson at csee dot uq dot edu dot au> autoconf
gautam <gautamdhar at hotmail dot com> getopt?
Jason Dale Robey <jrobey at users dot sourceforge dot net> getopt? (Bad email,
never contacted)
S dot  Srinivasan <s dot srinivasan at ematic dot com>
Gian Luca Bignardi <pac77 at libero dot it> GTK+ GUI wrapper?
Jeff Turner <jturner at alum dot rpi dot edu> getopt, _FillValue?
Igor Crane <igor_crane at hotmail dot com> ncap?
John Parish <gerbil at planetquake dot com> http? C++ interface?
Mohan Thiyagarajah <mthiyagarajah at yahoo dot 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
