Title: Code Development on NT Some notes on experience gained in developing crossplatform NTUnix HEP softwa
1Code Development on NTSome notes on experience
gained in developing cross-platform (NT/Unix) HEP
software for the Linear Collider DetectorMore
of a Random Walk than a Formal Overview of
Development Tools
- HEP-NT workshop
- SLAC - October 1999
- Tony Johnson
- Tony Waite
- (tonyj,apw_at_slac.stanford.edu)
In absentia
2NT Code Development
- Topics
- NT Code development tools for C/Fortran/Java
- Code development issues
- Code management
- SourceSafe
- CVS
- DEC -
- Using NT as a data server
- Conclusions
3Windows NT Development Tools
- For windows only development, tools are
excellent - Visual C/J (MS Java)/Compaq Fortran
- Excellent IDE allows development in all three
languages - Integrated editor, cross-language debugger
- Integrated build tool (make clone)
- Incremental linker (that works)
- Integrated code management (visual sourcesafe)
- Object browser
- SLAC has site license for MS developer tools
4C for cross platform development
- Cross Platform C development has many problems
- Makefile for each platform
- Need to build/debug on each platform
- Versionitis
- External dependencies
- Compiler flags
- Even egcs compiler has many system specific flags
- Different methods for building DLLs/C name
mangling - Compiler bugs
- Differing Levels of ANSI/STL Support
- Architecture specific bugs
- Found bugs in both Visual C (5.0) and egcs
compiler for intel.
5C for cross-platform development
- Certainly possible - Simulation package does work
on both NT and Unix.
Large amount of time goes into testing/debugging
on different platforms.
6Java for Cross Platform Development
- Have succeeded in writing entire
reconstruction/analysis package in Java - Currently using Visual J/Sourcesafe
- All development currently being done on NT
- JAR files built on NT and put on web server for
download by others. - Java code can be run
- Standalone from command prompt/batch job
- Inside Java Analysis Studio (JAS)
7Java Analysis Studio
- Cross Platform Java GUI for data analysis
8Java for cross-platform Graphics/GUI
9Java Experience
- Write Once Run Anywhere
- Really works (for applications, if not applets).
- Develop on NT, runs without changes elsewhere
- Developers have been able to learn language and
tools and get up-to-speed fast - Performance - Adequate, getting better all the
time - Need to abandon Visual J, Source Safe
10CVS for cross platform development
- CVS is available for NT as well as Unix
- NT tools include
- line mode tools
- WinCVS
- Rather confusing GUI
- jCVS
- Cross platform CVS GUI written in Java
- Doesnt support ssh access to remote repository?
- Several tools available for web based access to
code - CVSWeb - perl script
- jCVS servlet - works well on NT
11jCVS Client
12jCVS Servlet
13CVS security issues
- Supports distributed access to code repository
- bewildering array of access methods/security
issues - rsh - no longer allowed at SLAC
- pserver -
- needs custom server,
- passes weakly encrypted passwords over network
- ssh
- doesnt work with all CVS clients
- complex to set up client
- no AFS token support
14CVS vs. Sourcesafe
15Is CVS sufficient for a physics collaboration?
- If using Java - probably
- If using C, not really,
- Need to be able to switch between configurations
easily - Logical names where are you?
- Location of external dependencies
- Would like to use pre-built dlls where possible.
- Want to isolate users from system dependencies as
far as possible. - Want to avoid nightly builds
- Need to layer tool on top of CVS, make
- LCD Solution
- Development Environment Controller (DEC)
16Development Environment Controller
- Written for LCD by Tony Waite, could be used by
others - Hides details of file organization from user
- User deals with subsystems, Gismo, Recon, etc.
- Easy to switch between PROD,DEV,Test version of
each subsystem - User Profiles allow saving/restoring environment.
- Hides machine dependencies of BUILD operation
- Automatically archives CVS version numbers for
production BUILDs
17Running a (Java) Data Server on NT
Remote Data
Desktop Client
Network Data Server
DIM
- Use NT Service Manager to Run Data Server
- Microsoft Java has built-in support for running
as NT server - Application can be distributed as a single .exe
which installs itself as an NT service - Other Java implementations can be run as an NT
service with 3rd party add-ons (or roll your
own). - Error logging using NT event log/viewer
18NT Service - Pros and Cons
- Pros
- Auto start on reboot
- Runs in background
- Use service manager to start/stop service
- Real life problems
- Does not auto restart
- Application can unexpectedly pop up dialog box!
- Remote control difficult
- Remote Server Manager only distributed with NT
server (or with NT resource kit). - Requires port 137/138 access (blocked at SLAC
firewall) or VPN/PPTP
19Net Meeting for Remote Control
- Netmeeting 3.0 has Remote Desktop Feature
- If run on server allows remote access to server
desktop from any NT/95/98 machine. - Free!
- Security
- Claims to use encrypted communication channel
- Requires NT login to access remote desktop
- Security dubious
- Potentially very useful, perhaps worth considering
20(No Transcript)
21NT Disk Cache Problem
- Problem with reading large datasets
- NT will grow disk cache until it takes 99.5 of
physical memory, regardless of who/what else
requires memory. - Reading large datasets can result in NT totally
grinding to a halt. - No system parameter to limit disk cache size
- Workarounds
- If you have access to call to C open statement
you can turn off disk caching (big if) - Can run program which constantly flushes disk
cache - Conclusion
- NT not ready for primetime data server
applications - Windows 2000 better?
22Things I didnt talk about
- Because I dont know anything about them
- Sniff - Cross platform IDE
- http//www.takefive.com/
- Cross platform GUI development with C
- QT Widgets
- http//www.troll.no/
- Libtool/configure
- NT ports exist but not for non-experts
- cygwin
- Unix environment under NT
23Conclusions
- Tools for code development under NT only are
great - Development tools probably better than Unix
- Cross platform development
- In C is a lot of extra work
- Java can make things much easier, especially for
- GUI applications
- Client/Server applications
- NT for HEP batch/server side data processing
- No obvious advantage over Unix/Linux
- Tools and OS not as well suited to task as Unix
- NT still maintains lead as desktop machine
- Unix seems to be catching up fast (gnome,
office)