Ganymede Release 2.0 29 June 2013 CREDITS --------------------------------------------- Ganymede has been under development for over 15 years now, in both planning and execution. The work has primarily been performed in the Information Technology Services Division of the Applied Research Laboratories at the University of Texas at Austin, with support from division and laboratory management. The development of Ganymede has benefited from the direct development contributions of the following individuals: -- Jonathan Abbey, jonabbey@arlut.utexas.edu Primary architect and coder on the project. Designed and implemented the Ganymede server and admin console, the table and tree GUI components used in both the admin console and the primary client, the great bulk of the project documentation (or lack thereof) as well as much of the Git and build script work. Answers e-mail. -- Deepak Giridharagopal While working at ARL, Deepak made extensive contributions to the development of Ganymede 2.0, including transitioning Ganymede's build system from old Perl scripts to using Ant. Deepak also developed the Jython integration, and worked on the new Sync Channel software, both in the Ganymede client and especially in the amazing Python Sync Channel servicing code framework, known as SyncUtil, which forms the basis of the gasharl schema kit's support for efficient sync'ing to Active Directory. Deepak also designed and implemented the Ganymede 2.0 Query Language, using Terrance Parr's splendiferously good ANTLR tool. -- Dan Scott Dan originated the GASH project, providing strategic vision and architectural design to solve the essential problem of shared group control over the lab's master NIS and DNS databases. Dan has contributed greatly to the higher level design issues in Ganymede, as well as providing invaluable user interface design feedback and bug reporting. Neither Ganymede nor GASH could have been developed at all without his support. -- Mike Mulvaney Mike worked on Ganymede during his year and a half at the lab, from February of 1997 through September of 1998, before moving to the Washington D.C. area. Significant amounts of the client remain primarily Mike's work. In addition to the large bulk of client-side coding, Mike contributed significantly to the design of the system architecture as a whole. Ganymede would be a far poorer thing were it not for Mike. -- Brian O'Mara Brian worked on Ganymede during his tenure as a student employee at ARL from February 1998 through August of 2000. Brian created custom icons for the Ganymede client and rewrote the permissions editor to use more Swing classes, as well as creating the persona selection dialog introduced in Ganymede 0.98. Brian also reworked the Query dialog to be more user-friendly. During his last year at ARL, Brian did an enormous amount of work in preparing for the ultimate replacement of the old-style hosts_info DNS support with new code to convert BIND files into an XML representation and back again. As if that wasn't enough, Brian also created the Ganymede logo as well as many of the icons used in the Ganymede clients. -- Navin Manohar Navin worked on Ganymede from its inception in late 1995 through his departure from the lab in April of 1997. Navin contributed to initial architecture design decisions during this time, as well as the initial development of the client, including the basic framework within which the client was developed. He developed the excellent calendar GUI component that is used in the client, as well as the more unobtrusive but vital GUI components that the client used for data entry, way back in the Java 1.0 days. -- James Ratcliff James replaced the ARL-written baseTable, gridTable, and rowTable classes used in the Ganymede client with a new SmartTable class that wraps the javax.swing.JTable class with a compatible interface. This work has made report printing possible in Ganymede. James also provided the port of Ulrich Drepper's Unix SHA256, SHA512 crypt algorithms to Java that is used in Ganymede for secure password hashing. -- Erik Grostic Erik worked on Ganymede from mid 1997 through his departure from the lab in December of 1997. Erik developed the GUI code for the permissions editor and the query submission dialog, helping bring the client into fruition. ------ Within ARL, Gil Kloepfer provided design assistance on the networking issues that Ganymede was designed to address as the lab moved into the 21st century. Marcus Walker and Tania Ayala made very helpful user interface recommendations and bug reports. Marcus also helped designed the gasharl schema's support for Active Directory constructs. Jay Scott contributed work on the build script environment used to propagate data from Ganymede into the laboratory's information systems. GASH admins Mark Parker, Glen Kronschnabl, Carrie Woodworth, Rich Gramann, Andrew Helyer, Richard Mach, Randy Zagar, and many others made helpful reports on gaps and problems with Ganymede. John Knutson has provided bug reports and code contributions in the course of evaluating the Ganymede code for use on an SGL project. Ganymede's support of floating point data fields came from John. A lot of Ganymede is based on the experience and design work that went into GASH. In addition to the aforementioned names, Dean Kennedy and Pug Bainter should be credited for their design work on GASH. Pug Bainter authored the original GASH makefiles that the Ganymede GASH schema uses to propagate information from Ganymede into NIS and DNS. Outside ARL, we have gotten very helpful bug reports and feedback from: Pug Bainter - lots of really good early bug reports Martin Schneider - server customization bug reports Michael McEniry - linux localhost patch Christoph Litauer - xmlclient testing Curtis King - detailed bug reports Doug Floyd - bug reports and AIX testing Matt Knopp - Early FreeBSD testing, Sesame Chicken Mike Clay - Early FreeBSD testing Stephen L. Johnson - bug reports Matt Bush - beta testing, bug reports Dan "Jher" Harris - beta testing Sheilagh O'Hare - design brilliance Frederick Dickey - packaging bug report Lewis Muhlenkamp - packaging, client bug reports Nikola Nedeljkovic - packaging reports Andy Johnson - build script bug reports Charles Adams - bug reports, debugging Darrell Tippe - bug reports Glen Joseph - installServer bug report Chris McCraw - bugzilla testing Ido Dubrawsky - testing Michael Houle - many bug reports Miklos Muller - many wonderful bug reports for Ganymede 1.0 Gaurav Bhargava - Bug reports, schema development Martin Vogt - bug reports Steve Lemons - bug reports Fredrik.A.Bergman@ericsson.com - many excellect bug reports for Ganymede 2.0 Stefan Bier - Ganymede 2.0 bug reports, patches, German localization Christian Hammers - Submitted a compatibility patch to Sha256Crypt and Sha512Crypt for better glibc compatibility. -- The Java implementation of the standard UNIX crypt() function was converted from C by John Dumas, johnfdumas@gmail.com, whose code can be found at http://www.vulcanware.com/java_jcrypt/index.html. jcrypt is included in Ganymede by permission of the author. -- The Qsmtp class was originally written by James Driscoll (maus@io.com), and placed into the public domain. See http://www.io.com/~maus/JavaPage.html for details and additional free Java code. Note that the version of Qstmp packaged with Ganymede has been significantly modified, to provide more convenient use in a threaded context, and to provide rudimentary MIME file attachment support. -- The MD5Crypt class used to support FreeBSD-style md5 passwords was originally written by Poul-Henning Kamp (phk@login.dknet.dk) in C, and was translated into Java by Jonathan Abbey.. the following license information was placed on the original code: ---------------------------------------------------------------------------- "THE BEER-WARE LICENSE" (Revision 42): wrote this file. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp ---------------------------------------------------------------------------- -- The MD4 class used to support Windows NT-compatible cryptographic hashes was derived from MD classes written by Harry Mantakos, harry@meretrix.com, and are here under Harry's "there's code in here that you're welcome to steal" license. The MD classes came from Harry's JOTP project, which you can link to at http://www.cs.umd.edu/users/harry/jotp/. The actual "LANMAN" and "NT MD4 Unicode" hash support code was written by Andrew Tridgell and released under the GPL as part of the Samba source code, and was ported to Java by Jonathan Abbey, using Harry's MD4 code to perform the fundamental cryptographic hash function. Note that Sun has declined to provide support for md4 in the java.security.MessageDigest class. This is because md4 is terribly weak by modern standards, but if you want to support old school Lan Manager password hashes, that's what you have to use. -- The Unix SHA Crypt algorithms embodied in the arlut.csd.crypto.Sha256Crypt and arlut.csd.crypto.Sha512Crypt classes come from Ulrich Drepper, who released the algorithms into the public domain. See http://people.redhat.com/drepper/sha-crypt.html for a discussion of details. The port was performed by James Ratcliff, falazar@arlut.utexas.edu. Unlike md4, the hashing used for the Unix SHA Crypt standard is phenomenally strong, and you should probably try to use this if you're generating hashed passwords for modern Linux, Solaris, AIX, or HPUX systems. -- The BCrypt implementation included in Ganymede (org.mindrot.BCrypt) is copyright 2006 by Damien Miller , under the BSD license: /* * Copyright (c) 2006 Damien Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ Damien has his current JBCrypt code online, see http://code.google.com/p/jbcrypt/ -- The Ganymede server uses James Clark's excellent XMLWriter class library for XML generation. It is copyright 1997, 1998 by James Clark, and is included in Ganymede in accordance with his stated licensing terms. See http://www.jclark.com/xml/xp/copying.txt for his copyright terms. -- The Java UUID Generator code used by ARL custom code to generate RFC and DCE-compliant globally unique identifiers for our Macintosh LDAP synchronization was written by Tatu Saloranta, tatu.saloranta@iki.fi, and is included in Ganymede under the Lesser General Public License. See http://jug.safehaus.org/ for more information. -- The Java Base 64 encoder/decoder (here named arlut.csd.crypto.Base64) used to generate LDAP style SSHA password encodings was written by Robert Harder (rob@iharder.net) and placed into the public domain. See http://iharder.net/base64/ for Robert's Java Base64 page. -- Ganymede 2.0 ships with Jython, in src/jython. Jython is used in the Ganymede server to allow DBEditObject sub classes to be written in Python, but interpreted on the server. Jython is copyright the Jython Developers and is licensed under the following BSD-like terms: Copyright (c) 2000, Jython Developers All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Jython Developers nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Jython is at http://www.jython.org/ -- The Ganymede client makes use of the Foxtrot project (http://foxtrot.sourceforge.net/) by Simone Bordet, a very nifty GUI threading tool that allows us to synchronously decouple the client's GUI thread from certain kinds of long-standing network activity on the client while allowing the GUI thread to dispatch GUI events until the network activity is done. The Foxtrot project is included in the Ganymede clients under the BSD license. -- Some code in Ganymede 2.0 is based on Terence Parr's incredutastic ANTLR3 parser generator. The src/lib directory contains a jar file of runtime classes from his project, which he has released under the BSD license: [The BSD License] Copyright (c) 2003-2008, Terence Parr All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. See http://www.antlr.org/ for information on ANTLR. -- Ganymede uses the gnu.trove PrimeFinder class to optimize its hash tables. The Trove library is licensed under the Lesser GNU Public License, which is included with the distribution in a file called LICENSE.txt. Other license arrangements are possible, for a fee: contact ericdf@users.sourceforge.net for terms/pricing. The PrimeFinder and HashFunctions classes in Trove are subject to the following license restrictions: Copyright (c) 1999 CERN - European Organization for Nuclear Research. Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. CERN makes no representations about the suitability of this software for any purpose. It is provided "as is" without expressed or implied warranty. -- The gasharl schema kit uses Steve Waldman's c3p0 DataSource / Resource Pool class library for JDBC to provide connection pooling for internal use at the laboratory. We are including the binary c3p0 jar file under src/schemas/gasharl/lib in the public release of Ganymede to simplify our revision control and to provide an example of the use of external JDBC connections in custom schema code. The c3p0 home page is at http://sourceforge.net/projects/c3p0 The c3p0 package is distributed under the terms of version 2.1 of the GNU Lesser General Public License (LGPL). -- The 'ant validate' task makes use of the Perl Config::Properties package, copyright by Randy Jay Yarger, Craig Manley, and Salvador FandiƱo. It is free software, licensed under the same terms as Perl is. At the time of this writing, the URL for Config::Properties is http://search.cpan.org/src/SALVA/Config-Properties-0.58/. The verification/launchers directory contains some scripts that can be used to launch the Ganymede server in conjunction with software coverage and/or performance profiling code. The software coverage tool that is used is called Emma, and it is Copyright by Vlad Roubtsov. See http://emma.sourceforge.net/ for details on and source code from Emma. Emma is distributed and licensed under the Common Public License, at http://www.eclipse.org/legal/cpl-v10.html. The profiling tool is called PerfAnal, and it is distributed under the GNU General Public License. See http://java.sun.com/developer/technicalArticles/Programming/perfanal/ for details on PerfAnal. -- The jarbundler-2.1.0.jar file under src/lib provides Seth J. Morabito's Mac OS X JarBundler Ant task, as further developed by Will Gilbert. It was downloaded from http://informagen.com/JarBundler/ to provide Macintosh-specific application packaging of the Ganymede clients. The JarBundler project is licensed under the Apache Software License v2.0 (ASLv2). -- The mac_widgets.jar file under src/lib provides a very Mac-like appearance when running the Ganymede client on the Macintosh. It was downloaded from http://code.google.com/p/macwidgets/. Mac Widgets is by Kenneth Orr, and is licensed under the Gnu Lesser General Public License. -- The forms-1.3.0pre4.jar file under src/lib is used to provide support features for Kenneth Orr's Mac Widgets. It was downloaded from http://www.jgoodies.com/downloads/libraries.html, using the 'JGoodies Forms' link. JGoodies Forms is by the JGoodies company, Karsten Lentzsch, founder. JGoodies Forms is licensed under the permissive BSD license. -- The arlut.csd.JTable.TableSorter class which is used to decorate and provide sorting for the javax.swing.JTable class is a product of Sun Microsystems, and is used under the following license: Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of Sun Microsystems nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- The org.solinger.cracklib library used to provide password quality checking for password fields was written by Justin F. Chapweske. It is a port of the C cracklib written by Alec Mufett. It is included in Ganymede under the terms of the Artistic License version 2.0, and has been enhanced slightly for use in Ganymede. You can find the original Java Cracklib port from http://sourceforge.net/projects/solinger/ or by downloading it directly from http://sourceforge.net/projects/solinger/files/Java%20CrackLib/0.5/cracklib-0.5.tar.gz/download See src/ganymede/org/solinger/cracklib/README and src/ganymede/org/solinger/cracklib/LICENSE for full details. -- The SwingX jar file included in the Ganymede client comes from https://swingx.dev.java.net/, and is included in Ganymede under the terms of version 2.1 of the Lesser Gnu Public License (LGPL). -- While most of the icons in the Ganymede distribution were created by us, Ganymede also uses some icons released into the public domain from the Tango project (http://tango.freedesktop.org/). -- Special thanks to authors of Git, Ant, and Subversion for high quality build and version control tools.