5 ---------------------------------------------
7 Ganymede has been under development for over 15 years now, in both
8 planning and execution. The work has primarily been performed in the
9 Information Technology Services Division of the Applied Research
10 Laboratories at the University of Texas at Austin, with support from
11 division and laboratory management.
13 The development of Ganymede has benefited from the direct
14 development contributions of the following individuals:
18 Jonathan Abbey, jonabbey@arlut.utexas.edu
20 Primary architect and coder on the project. Designed and implemented
21 the Ganymede server and admin console, the table and tree GUI
22 components used in both the admin console and the primary client, the
23 great bulk of the project documentation (or lack thereof) as well as
24 much of the Git and build script work. Answers e-mail.
30 While working at ARL, Deepak made extensive contributions to the
31 development of Ganymede 2.0, including transitioning Ganymede's build
32 system from old Perl scripts to using Ant. Deepak also developed the
33 Jython integration, and worked on the new Sync Channel software, both
34 in the Ganymede client and especially in the amazing Python Sync
35 Channel servicing code framework, known as SyncUtil, which forms the
36 basis of the gasharl schema kit's support for efficient sync'ing to
39 Deepak also designed and implemented the Ganymede 2.0 Query Language,
40 using Terrance Parr's splendiferously good ANTLR tool.
46 Dan originated the GASH project, providing strategic vision and
47 architectural design to solve the essential problem of shared group
48 control over the lab's master NIS and DNS databases. Dan has
49 contributed greatly to the higher level design issues in Ganymede, as
50 well as providing invaluable user interface design feedback and bug
51 reporting. Neither Ganymede nor GASH could have been developed at all
58 Mike worked on Ganymede during his year and a half at the lab, from
59 February of 1997 through September of 1998, before moving to the
60 Washington D.C. area. Significant amounts of the client remain
61 primarily Mike's work. In addition to the large bulk of client-side
62 coding, Mike contributed significantly to the design of the system
63 architecture as a whole. Ganymede would be a far poorer thing were it
70 Brian worked on Ganymede during his tenure as a student employee at
71 ARL from February 1998 through August of 2000. Brian created custom
72 icons for the Ganymede client and rewrote the permissions editor to
73 use more Swing classes, as well as creating the persona selection
74 dialog introduced in Ganymede 0.98. Brian also reworked the Query
75 dialog to be more user-friendly. During his last year at ARL, Brian
76 did an enormous amount of work in preparing for the ultimate
77 replacement of the old-style hosts_info DNS support with new code to
78 convert BIND files into an XML representation and back again.
80 As if that wasn't enough, Brian also created the Ganymede logo as well
81 as many of the icons used in the Ganymede clients.
87 Navin worked on Ganymede from its inception in late 1995 through his
88 departure from the lab in April of 1997. Navin contributed to initial
89 architecture design decisions during this time, as well as the initial
90 development of the client, including the basic framework within which
91 the client was developed. He developed the excellent calendar GUI
92 component that is used in the client, as well as the more unobtrusive
93 but vital GUI components that the client used for data entry, way back
100 James replaced the ARL-written baseTable, gridTable, and rowTable
101 classes used in the Ganymede client with a new SmartTable class that
102 wraps the javax.swing.JTable class with a compatible interface. This
103 work has made report printing possible in Ganymede.
105 James also provided the port of Ulrich Drepper's Unix SHA256, SHA512
106 crypt algorithms to Java that is used in Ganymede for secure password
113 Erik worked on Ganymede from mid 1997 through his departure
114 from the lab in December of 1997. Erik developed the GUI code for the
115 permissions editor and the query submission dialog, helping bring the
116 client into fruition.
120 Within ARL, Gil Kloepfer provided design assistance on the networking
121 issues that Ganymede was designed to address as the lab moved into the
122 21st century. Marcus Walker and Tania Ayala made very helpful user
123 interface recommendations and bug reports. Marcus also helped
124 designed the gasharl schema's support for Active Directory constructs.
125 Jay Scott contributed work on the build script environment used to
126 propagate data from Ganymede into the laboratory's information
127 systems. GASH admins Mark Parker, Glen Kronschnabl, Carrie Woodworth,
128 Rich Gramann, Andrew Helyer, Richard Mach, Randy Zagar, and many
129 others made helpful reports on gaps and problems with Ganymede.
131 John Knutson has provided bug reports and code contributions in the
132 course of evaluating the Ganymede code for use on an SGL
133 project. Ganymede's support of floating point data fields came
136 A lot of Ganymede is based on the experience and design work
137 that went into GASH. In addition to the aforementioned names, Dean
138 Kennedy and Pug Bainter should be credited for their design work on
139 GASH. Pug Bainter authored the original GASH makefiles that the
140 Ganymede GASH schema uses to propagate information from
141 Ganymede into NIS and DNS.
143 Outside ARL, we have gotten very helpful bug reports and feedback
146 Pug Bainter - lots of really good early bug reports
147 Martin Schneider - server customization bug reports
148 Michael McEniry - linux localhost patch
149 Christoph Litauer - xmlclient testing
150 Curtis King - detailed bug reports
151 Doug Floyd - bug reports and AIX testing
152 Matt Knopp - Early FreeBSD testing, Sesame Chicken
153 Mike Clay - Early FreeBSD testing
154 Stephen L. Johnson - bug reports
155 Matt Bush - beta testing, bug reports
156 Dan "Jher" Harris - beta testing
157 Sheilagh O'Hare - design brilliance
158 Frederick Dickey - packaging bug report
159 Lewis Muhlenkamp - packaging, client bug reports
160 Nikola Nedeljkovic - packaging reports
161 Andy Johnson - build script bug reports
162 Charles Adams - bug reports, debugging
163 Darrell Tippe - bug reports
164 Glen Joseph - installServer bug report
165 Chris McCraw - bugzilla testing
166 Ido Dubrawsky - testing
167 Michael Houle - many bug reports
168 Miklos Muller - many wonderful bug reports for Ganymede 1.0
169 Gaurav Bhargava - Bug reports, schema development
170 Martin Vogt - bug reports
171 Steve Lemons - bug reports
172 Fredrik.A.Bergman@ericsson.com - many excellect bug reports for Ganymede 2.0
173 Stefan Bier - Ganymede 2.0 bug reports, patches, German localization
174 Christian Hammers - Submitted a compatibility patch to Sha256Crypt and
175 Sha512Crypt for better glibc compatibility.
179 The Java implementation of the standard UNIX crypt() function was
180 converted from C by John Dumas, johnfdumas@gmail.com, whose code can
181 be found at http://www.vulcanware.com/java_jcrypt/index.html. jcrypt
182 is included in Ganymede by permission of the author.
186 The Qsmtp class was originally written by James Driscoll
187 (maus@io.com), and placed into the public domain. See
188 http://www.io.com/~maus/JavaPage.html for details and additional free
189 Java code. Note that the version of Qstmp packaged with Ganymede has
190 been significantly modified, to provide more convenient use in a
191 threaded context, and to provide rudimentary MIME file attachment
196 The MD5Crypt class used to support FreeBSD-style md5 passwords was
197 originally written by Poul-Henning Kamp (phk@login.dknet.dk) in C, and
198 was translated into Java by Jonathan Abbey.. the following license
199 information was placed on the original code:
201 ----------------------------------------------------------------------------
202 "THE BEER-WARE LICENSE" (Revision 42):
203 <phk@login.dknet.dk> wrote this file. As long as you retain this notice you
204 can do whatever you want with this stuff. If we meet some day, and you think
205 this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
206 ----------------------------------------------------------------------------
210 The MD4 class used to support Windows NT-compatible cryptographic
211 hashes was derived from MD classes written by Harry Mantakos,
212 harry@meretrix.com, and are here under Harry's "there's code in here
213 that you're welcome to steal" license. The MD classes came from
214 Harry's JOTP project, which you can link to at
215 http://www.cs.umd.edu/users/harry/jotp/.
217 The actual "LANMAN" and "NT MD4 Unicode" hash support code was written
218 by Andrew Tridgell and released under the GPL as part of the Samba
219 source code, and was ported to Java by Jonathan Abbey, using Harry's
220 MD4 code to perform the fundamental cryptographic hash function.
222 Note that Sun has declined to provide support for md4 in the
223 java.security.MessageDigest class. This is because md4 is terribly
224 weak by modern standards, but if you want to support old school Lan
225 Manager password hashes, that's what you have to use.
229 The Unix SHA Crypt algorithms embodied in the
230 arlut.csd.crypto.Sha256Crypt and arlut.csd.crypto.Sha512Crypt classes
231 come from Ulrich Drepper, who released the algorithms into the public
232 domain. See http://people.redhat.com/drepper/sha-crypt.html for a
233 discussion of details. The port was performed by James Ratcliff,
234 falazar@arlut.utexas.edu.
236 Unlike md4, the hashing used for the Unix SHA Crypt standard is
237 phenomenally strong, and you should probably try to use this if you're
238 generating hashed passwords for modern Linux, Solaris, AIX, or HPUX
243 The BCrypt implementation included in Ganymede (org.mindrot.BCrypt) is
244 copyright 2006 by Damien Miller <djm@mindrot.org>, under the BSD
248 * Copyright (c) 2006 Damien Miller <djm@mindrot.org>
250 * Permission to use, copy, modify, and distribute this software for any
251 * purpose with or without fee is hereby granted, provided that the above
252 * copyright notice and this permission notice appear in all copies.
254 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
255 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
256 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
257 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
258 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
259 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
260 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
263 Damien has his current JBCrypt code online, see http://code.google.com/p/jbcrypt/
267 The Ganymede server uses James Clark's excellent XMLWriter class
268 library for XML generation. It is copyright 1997, 1998 by James
269 Clark, and is included in Ganymede in accordance with his stated
270 licensing terms. See http://www.jclark.com/xml/xp/copying.txt for his
275 The Java UUID Generator code used by ARL custom code to generate RFC
276 and DCE-compliant globally unique identifiers for our Macintosh LDAP
277 synchronization was written by Tatu Saloranta, tatu.saloranta@iki.fi,
278 and is included in Ganymede under the Lesser General Public License.
279 See http://jug.safehaus.org/ for more information.
283 The Java Base 64 encoder/decoder (here named arlut.csd.crypto.Base64)
284 used to generate LDAP style SSHA password encodings was written by
285 Robert Harder (rob@iharder.net) and placed into the public domain.
286 See http://iharder.net/base64/ for Robert's Java Base64 page.
290 Ganymede 2.0 ships with Jython, in src/jython. Jython is used in the
291 Ganymede server to allow DBEditObject sub classes to be written in
292 Python, but interpreted on the server. Jython is copyright the Jython
293 Developers and is licensed under the following BSD-like terms:
295 Copyright (c) 2000, Jython Developers
298 Redistribution and use in source and binary forms, with or without
299 modification, are permitted provided that the following conditions
302 - Redistributions of source code must retain the above copyright
303 notice, this list of conditions and the following disclaimer.
305 - Redistributions in binary form must reproduce the above copyright
306 notice, this list of conditions and the following disclaimer in
307 the documentation and/or other materials provided with the distribution.
309 - Neither the name of the Jython Developers nor the names of
310 its contributors may be used to endorse or promote products
311 derived from this software without specific prior written permission.
313 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
314 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
315 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
316 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
317 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
318 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
319 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
320 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
321 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
322 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
323 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
325 Jython is at http://www.jython.org/
329 The Ganymede client makes use of the Foxtrot project
330 (http://foxtrot.sourceforge.net/) by Simone Bordet, a very nifty GUI
331 threading tool that allows us to synchronously decouple the client's
332 GUI thread from certain kinds of long-standing network activity on the
333 client while allowing the GUI thread to dispatch GUI events until the
334 network activity is done. The Foxtrot project is included in the
335 Ganymede clients under the BSD license.
339 Some code in Ganymede 2.0 is based on Terence Parr's incredutastic
340 ANTLR3 parser generator. The src/lib directory contains a jar file of
341 runtime classes from his project, which he has released under the BSD
345 Copyright (c) 2003-2008, Terence Parr
348 Redistribution and use in source and binary forms, with or without
349 modification, are permitted provided that the following conditions are
352 Redistributions of source code must retain the above copyright
353 notice, this list of conditions and the following disclaimer.
355 Redistributions in binary form must reproduce the above copyright
356 notice, this list of conditions and the following disclaimer in
357 the documentation and/or other materials provided with the
360 Neither the name of the author nor the names of its contributors
361 may be used to endorse or promote products derived from this
362 software without specific prior written permission.
364 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
365 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
366 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
367 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
368 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
369 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
370 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
371 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
372 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
373 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
374 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
376 See http://www.antlr.org/ for information on ANTLR.
380 Ganymede uses the gnu.trove PrimeFinder class to optimize its hash
383 The Trove library is licensed under the Lesser GNU Public License,
384 which is included with the distribution in a file called LICENSE.txt.
386 Other license arrangements are possible, for a fee: contact
387 ericdf@users.sourceforge.net for terms/pricing.
389 The PrimeFinder and HashFunctions classes in Trove are subject to the
390 following license restrictions:
392 Copyright (c) 1999 CERN - European Organization for Nuclear Research.
394 Permission to use, copy, modify, distribute and sell this software and
395 its documentation for any purpose is hereby granted without fee,
396 provided that the above copyright notice appear in all copies and that
397 both that copyright notice and this permission notice appear in
398 supporting documentation. CERN makes no representations about the
399 suitability of this software for any purpose. It is provided "as is"
400 without expressed or implied warranty.
404 The gasharl schema kit uses Steve Waldman's c3p0 DataSource / Resource
405 Pool class library for JDBC to provide connection pooling for internal
406 use at the laboratory. We are including the binary c3p0 jar file
407 under src/schemas/gasharl/lib in the public release of Ganymede to
408 simplify our revision control and to provide an example of the use of
409 external JDBC connections in custom schema code.
411 The c3p0 home page is at
413 http://sourceforge.net/projects/c3p0
415 The c3p0 package is distributed under the terms of version 2.1 of the
416 GNU Lesser General Public License (LGPL).
420 The 'ant validate' task makes use of the Perl Config::Properties
421 package, copyright by Randy Jay Yarger, Craig Manley, and Salvador
422 FandiƱo. It is free software, licensed under the same terms as Perl
423 is. At the time of this writing, the URL for Config::Properties is
424 http://search.cpan.org/src/SALVA/Config-Properties-0.58/.
426 The verification/launchers directory contains some scripts that can be
427 used to launch the Ganymede server in conjunction with software
428 coverage and/or performance profiling code. The software coverage
429 tool that is used is called Emma, and it is Copyright by Vlad
430 Roubtsov. See http://emma.sourceforge.net/ for details on and source
431 code from Emma. Emma is distributed and licensed under the Common
432 Public License, at http://www.eclipse.org/legal/cpl-v10.html. The
433 profiling tool is called PerfAnal, and it is distributed under the GNU
434 General Public License. See
435 http://java.sun.com/developer/technicalArticles/Programming/perfanal/
436 for details on PerfAnal.
440 The jarbundler-2.1.0.jar file under src/lib provides Seth
441 J. Morabito's Mac OS X JarBundler Ant task, as further developed by
442 Will Gilbert. It was downloaded from
443 http://informagen.com/JarBundler/ to provide Macintosh-specific
444 application packaging of the Ganymede clients.
446 The JarBundler project is licensed under the Apache Software License
451 The mac_widgets.jar file under src/lib provides a very Mac-like
452 appearance when running the Ganymede client on the Macintosh. It was
453 downloaded from http://code.google.com/p/macwidgets/.
455 Mac Widgets is by Kenneth Orr, and is licensed under the Gnu Lesser
456 General Public License.
460 The forms-1.3.0pre4.jar file under src/lib is used to provide support
461 features for Kenneth Orr's Mac Widgets. It was downloaded from
462 http://www.jgoodies.com/downloads/libraries.html, using the 'JGoodies
465 JGoodies Forms is by the JGoodies company, Karsten Lentzsch, founder.
467 JGoodies Forms is licensed under the permissive BSD license.
472 The arlut.csd.JTable.TableSorter class which is used to decorate and
473 provide sorting for the javax.swing.JTable class is a product of Sun
474 Microsystems, and is used under the following license:
476 Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
478 Redistribution and use in source and binary forms, with or without
479 modification, are permitted provided that the following conditions
482 - Redistributions of source code must retain the above copyright
483 notice, this list of conditions and the following disclaimer.
485 - Redistributions in binary form must reproduce the above copyright
486 notice, this list of conditions and the following disclaimer in the
487 documentation and/or other materials provided with the distribution.
489 - Neither the name of Sun Microsystems nor the names of its
490 contributors may be used to endorse or promote products derived
491 from this software without specific prior written permission.
493 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
494 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
495 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
496 PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
497 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
498 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
499 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
500 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
501 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
502 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
503 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
507 The org.solinger.cracklib library used to provide password quality
508 checking for password fields was written by Justin F. Chapweske. It
509 is a port of the C cracklib written by Alec Mufett.
511 It is included in Ganymede under the terms of the Artistic License
512 version 2.0, and has been enhanced slightly for use in Ganymede.
514 You can find the original Java Cracklib port from
516 http://sourceforge.net/projects/solinger/
518 or by downloading it directly from
520 http://sourceforge.net/projects/solinger/files/Java%20CrackLib/0.5/cracklib-0.5.tar.gz/download
522 See src/ganymede/org/solinger/cracklib/README and
523 src/ganymede/org/solinger/cracklib/LICENSE for full details.
527 The SwingX jar file included in the Ganymede client comes from
528 https://swingx.dev.java.net/, and is included in Ganymede under the
529 terms of version 2.1 of the Lesser Gnu Public License (LGPL).
533 While most of the icons in the Ganymede distribution were created by
534 us, Ganymede also uses some icons released into the public domain from
535 the Tango project (http://tango.freedesktop.org/).
539 Special thanks to authors of Git, Ant, and Subversion for high quality
540 build and version control tools.