The Kermit Project |
612 West 115th Street, New York NY 10025 USA • firstname.lastname@example.org
The Kermit Project at Columbia University is cancelled effective 1 July 2011The Columbia University Kermit Project website is frozen effective 1 October 2011, but remains available as a public resource. A new Kermit Project website has been established outside of Columbia at www.kermitproject.org for the continued development of C-Kermit, E-Kermit, and Kermit 95.New Kermit Project website New K95 Source Code pageFrank da Cruz
20 July 2011
Most recent update: Thu Sep 29 16:46:23 2011
As part of the cancellation of the Kermit Project, the source code for Kermit 95 (K95 for short, the Kermit software for 32-bit and 64-bit versions of Microsoft Windows and for IBM OS/2, which previously was available only as a commercial product) is being published for the first time under the open-source Revised 3-Clause BSD License so that anybody who wants to can download, build, customize, embed, package, redistribute, or do anything else with it that is legal and permitted by the license. It is hoped that this will result in the Open Source community creating a new and free version of Kermit 95. In the meantime, those who still need a ready-to-run Kermit 95 application can obtain it from the retailers listed on the Kermit 95 page, and those who need bulk licenses can obtain them from Columbia Technology Ventures.
The new k95source directory in the Kermit software archive now contains the Columbia-written source files for Kermit 95 2.1.3, released 1 January 2003, with updates by Jeffrey Altman through 2007, which are listed HERE.
This source code does not include the various libraries with which K95 is linked, notably MIT Kerberos and OpenSSL. Those libraries have undergone considerable change and development since K95 2.1.3 was released, and any new release of K95 should be adapted to the current releases (use buttons above).
The modules which are shared with C-Kermit for Unix, VMS, and other platforms (ckc*.*, cku*.*) correspond to those of C-Kermit 8.0.207 (which was never formally released), but with updates either from the main C-Kermit development branch, or K95-specific by Jeff. No attempt has been made to reconcile these sources with those of C-Kermit 9.0; that would be a big job indeed (but one that is worth doing if a new Open Source Kermit 95 release is to be created). Only the minimum changes to convert the K95 source code to an Open Source license have been made:
- A new COPYING.TXT file.
- New copyright notices in ckcmai.c (the K95 main program module).
- Elimination of restrictive license text from all files that are Copyright Trustees of Columbia University in the City of New York (these files have 19 July 2011 modification dates). The COPYING.TXT file applies to all files in this directory bearing a Columbia University copyright.
- Exclusion of any module whose license prohibits open distribution (primarily the XYZMODEM code).
No attempt has been made to compile or link these source files on Windows or OS/2 or anywhere else (actually I did attempt it, but did not get very far; see below).
Any new version of K95 will have to deal with the following considerations:
- A new (non-Installshield) installer is needed.
- Many bugs need to be addressed. They are listed HERE and HERE.
- Assorted ideas (mine) for a new release are HERE.
- Large file support should be added (K95 uses 32-bit C Library APIs for file access). C-Kermit itself supports large files so it's "just" a matter of changing the file i/o routines in ckofio.c (?).
- All registration, serial number, and license enforcement code should be removed.
- There can be no Dialer unless a new one is written from scratch. The Dialer was built using a commercial GUI-builder called Zinc; that company ceased to exist many years ago. Columbia had a source license to Zinc and made modifications and bug fixes necessary to build the Dialer. But Columbia does not have the right to distribute Zinc nor any patches to it.
- If there is no Dialer, the Dialer activation button should be removed from the K95G.EXE Toolbar.
- The Console version for Windows is obsolete since later Windows versions do not support it; only the GUI version (K95G.EXE) should be built. Also there is probably not much reason to carry forward support for Window 95, 98, and ME.
- The XYZMODEM protocol code was contributed from Finland. The license under which this code was included in K95 (see below) forbids publication of the source code.
- The SSH code contains known security weaknesses that need to be fixed. K95's SSH module was adapted from a 2002 version of OpenSSH, but OpenSSH itself has changed so much since then that a new SSH module should be developed from scratch.
- Other security code (Kerberos, SSL/TLS, and SRP) needs to brought up to date with current releases of those libraries.
- To take advantage of all the new developments in C-Kermit since 2007 and to return to a common code base for C-Kermit and K95, K95 should be integrated with the C-Kermit source files (ck[cu]*.[ch] and ckcpro.w). The current release of C-Kermit is here.
K95 was last built with Microsoft Visual Studio 6.0. Some adaptation may be required to build it with current Microsoft developers tools and/or non-Microsoft tools.
K95-specific source files have names starting with "cko" and "ckn". These files were not written to be read by the public so in some cases comments might be inexistent, sketchy, or misleading.
The makefile is ckoker.mak. Before running it, it's necessary to set the "include" and "lib" environment variables for the external libraries K95 is linked with (such as OpenSSL, SRP, and Kerberos), for example [each of these is one long line broken for readability]:
set include=%include%;c:\src\kermit\k95; c:\src\openssl\0.9.7\inc32; c:\src\srp\include; c:\src\pwsdk\inc32; c:\src\kerberos\kfw-2.2-beta-2\athena\wshelper\include; c:\src\superlat\include; c:\src\kerberos\kfw-2.2-beta-2\athena\auth\krb5\src\include; c:\src\kermit\k95\kui; c:\src\zinc\include; set lib=%lib%;c:\src\kerberos\kfw-2.2-beta-2\target\lib\i386\rel; c:\src\zinc\lib\mvcpp500
Note that Zinc is not included in this distribution, nor Meridian Technologies SuperLAT, support for which was included in K95 under license. Any -DSUPERLAT definition should be removed the makefile. I'm not sure how avoid Zinc. Once the lib and include environments are defined, the makefile can be invoked something like this:
SET PLATFORM=NT SET K95BUILD=K95 nmake /nologo /e /f ckoker.mak msvc |& tee comp.out.nt | list /s
In the source code and makefile you will see many references to "KUI". This was a 100% graphical version of K95 that was never completed. The sources contain a fair amount of vestigial KUI code.
The principal authors of Kermit 95, Jeff Altman and Frank da Cruz, no longer have jobs at Columbia University and may or may not be available for advice due to the exigencies of real life.
Edward Berner has written a guide to the compiler options used in the Kermit 95 makefile, with the object of being able to build K95 with Open Watcom, and has kindly granted permission to publish it; CLICK HERE to see it (PDF reader required).
Appendix: Directory StructureThe makefile ckoker.mak assumes data files for Kermit 95 are in a directory tree (lowercase names are directories):
- Root (name doesn't matter)
- SETENV.BAT - Defines the "include" and "lib" environment variables
- infozip - Zip and Unzip sources and binaries (not used in build)
- kerberos - Kerberos for Windows sources, libraries, and utilities
- kermit - Kermit 95 source files
- cif - k95_21_master.cif file used in creating CD image (not used in build)
- dialer - source code for K95 Dialer (not released because there is no way to build it)
- k95 - Source code for Kermit 95 itself, plus .BAT files for launching builds of various configurations, plus the following subdirectories:
- iksd - Directory used for object files when building WIKSD
- kui - Directory used for object files for building KUI (see above)
- nt - Directory for building Kermit 95
- ssh - OpenSSH libraries and other materials
- k95dlls - Example of how to create a K95 DLL (not used in build)
- k95inst - Files used in K95 installer and registration (not used in build)
- p - Original XYZMODEM code Oy Online Solutions Ltd including license
- p95 - XYZMODEM code modified for use in K95
- openssl - OpenSSL
- pwsdk - Digital Equipment Corporation PATHWORKS Software Developers Kit
- srp - Stanford Secure Remote Password libraries
- superlat - Meridian Technologies SuperLAT
- zinc - the Zinc GUI developer
Using this arrangement, you could first CD to the root directory, execute SETENV.BAT, then CD to the Kermit subdirectory, then CD to the k95 directory and execute the makefile.
I tried this myself with mknt.bat, but evidently these batch files are to be used with some other shell than CMD.EXE because it fails with "& was not expected at this time". Giving the nmake command without the redirectors:
nmake /nologo /e /f ckoker.mak msvc
failed because nmake wasn't found. I located it in:
C:\Program Files\Microsoft Visual Studio\VC98\Bin\nmake.exe
and set my PATH accordingly, tried the nmake command again but it failed with "mspdb60.dll not found" and advised me to "reinstall". I'm not a Windows programmer, so that's as far as I got. If I obtain any new information and I still have access to this page, I will improve these instructions.
Appendix: XYZMODEM Code ("P") LicenseLICENSE AGREEMENT (21 July 1995)(1) Introduction: This agreement details when and how you may use the source code acquired from Oy Online Solutions Ltd.
In this agreement:
- "Program" means the binary code generated using "P" source code or portions of it.
- "source" or "source code" means the "P" source code.
- "we" or "us" means Oy Online Solutions Ltd., a corporation based in Jyväskylä, FINLAND.
- "you" means the person or persons working for the Kermit project at the Columbia University in the City of New York, USA.
(2) Copyright: "P" and its source code is protected by copyright under Finnish law and international treaty provisions.
Rights have been granted to the Columbia University in the City of New York to include "P" with its C-Kermit program in compiled form. Responsibility for the program stays with Oy Online Solutions Ltd., Finland.
Any binaries generated from this source code or portions of it must mention, where it is appropriate, the copyright holder. (e.g. Portions Copyright (c) 1995 Oy Online Solutions Ltd.)
(3) Use of the source code: The source code is released to be used only by the persons working for the Kermit project at Columbia University in the City of New York, USA. Such persons may use this source code only to make binaries to be released with C-Kermit, not as an individual program.
(4) Distribution of source code: Distribution of source code, or portions of it and any documentation relating to it in any form, file or hardcopy, is strictly forbidden.
You may distribute program generated from the source code to be used in accordance with C-Kermit.
(5) DISCLAIMER AND LIMITATIONS:
THE SOURCE CODE IS PROVIDED "AS-IS" AND WITHOUT ANY WARRANTY OF ANY KIND.
END OF LICENSE AGREEMENT
Kermit 95 Source Files / Columbia University / email@example.com / July 2011