A reply to Thom Henderson's article in FidoNews. by Dean W. Cooper voice: (301) 428-7210. date: Oct 11, 1988 The following is a reply to an article written by Thom Henderson that appeared in the Oct 3rd issue of "FidoNews", the newsletter of the International FidoNet Association. For fairness, Thom's entire article has been reproduced. My replies have been inserted in square brackets. I am the author of the DWC archiver (not ARC-compatible) that is the only MS-DOS archiver around that is as fast as PKARC. ------------------------------------------------------------------- Thom Henderson, president System Enhancement Associates voice: (201) 473-5153 data: (201) 473-1991 Now That It's Over, What Did It Mean? Now that the dust has settled in the first shareware copyright case, it is time for SEA to make public the facts that many members of the shareware community deserve to know. For the record, SEA is a family owned business. Andy Foray, the company chairman, and Thom Henderson, the company president, are brothers-in-law. Irene Henderson, the secretary/treasurer and office manager, is Andy's sister and Thom's wife. As the creators, publishers and defenders of the industry standard ARC file compression format, we have always maintained a strong belief in a fundamental concept of shareware -- that shareware be distributed for free for all non-commercial use. To this end, we have never, and will never, charge for the use of ARC in a non-commercial environment. We also believe that full program sources should be available, at least to registered users, and we have always made the full ARC sources available to all users. We have also licensed a great many people to use the ARC sources in their own programs. [ It is admirable that you publish your software "free for all ] [ non-commercial use". It is also admirable that you have made ] [ available your full program sources. However, I fail to see ] [ where these two things are "fundamental concepts of shareware". ] [ I thought shareware meant that you are allowed to share the ] [ program freely with friends (distribute it freely), your allowed ] [ to test the program freely, but if you decide to use it, you are ] [ obliged to send in a license fee. Your implying that Phil is ] [ somehow violating fundamental shareware principles, but if that's ] [ true, then so are many, many, other fine shareware authors. To ] [ me, your style of shareware is fine and may even win you ] [ customers (because they want a free program or want source), but ] [ there is nothing wrong with what Phil has done. ] We discovered that PKWARE had obtained our source code without obtaining a license. He modified that code so that the program ran faster and provided several other enhancements. However, the nuts and bolts of the program were done by SEA. That is called PIRACY, plain and simple. And this industry has no place for pirates. [ First of all, you make it sound like it is a crime for someone to ] [ have "obtained" your source. Good grief, your source was ] [ publicly and freely distributed, so what do you expect? Even I ] [ eventually picked up a copy of your source (without licensing it) ] [ after I had already written my archiver. Just because I obtained ] [ a copy of your source, does not mean that I (or Phil) in any way ] [ copied it. ] [ I agree that "this industry has no place for pirates." But I ] [ hardly think that PKARC is piracy, "plain and simple". There are ] [ two main points that make this not such a simple matter. ] [ 1) You say that the "nuts and bolts" of the program were done by ] [ SEA. But in your own documentation for ARC, you clearly give ] [ credit to many other programs for being a great help in writing ] [ ARC. Here is the quote from ARC 5.20's documentation: ] [ "If we have achieved greatness, it is because we have ] [ stood upon the shoulders of giants. Nothing is ] [ created as a thing unto itself, and ARC is no ] [ exception. Therefore, we would like to give credit to ] [ the following people, without whose efforts ARC could ] [ not exist: ] [ "Brian W. Kernighan and P. J. Plauger, whose book ] [ "Software Tools" provided many of the ideas behind the ] [ distributive directory approach used by ARC. ] [ "Dick Greenlaw, who wrote the public domain SQ and USQ ] [ programs, in which the Huffman squeezing algorithm was ] [ first developed. ] [ "Robert J. Beilstein, who adapted SQ and USQ to ] [ Computer Innovations C86 (the language we use), thus ] [ providing us with important parts of our squeezing ] [ logic. ] [ "Kent Williams, who graciously allowed us to use his ] [ LZWCOM and LZWUNC programs as a basis for our Lempel- ] [ Zev compression logic, and who continues to make ] [ valuable contributions. ] [ "David Schwaderer, whose article in the April 1985 ] [ issue of PC Tech Journal provided us with the logic ] [ for calculating the CRC 16 bit polynomial. ] [ "Terry A. Welch, whose article "A Technique for High ] [ Performance Data Compression", IEEE Computer Vol 17 No ] [ 6 (June 1984) seems to have started all the research ] [ on Lempel-Zev coding. ] [ "Spencer W. Thomas, Jim McKie, Steve Davies, Ken ] [ Turkowski, James A. Woods, and Joe Orost, who are the ] [ authors of the UNIX compress utility." ] [ Moreover, in your source code documentation you state the ] [ following for your "squeeze" routines: ] [ "Most of the routines used for the Huffman squeezing algorithm ] [ were lifted from the SQ program by Dick Greenlaw, as adapted ] [ to CI-C86 by Robert J. Beilstein." ] [ And, in your source code documentation for Lempel-Ziv compression,] [ you state the following: ] [ "In this section I am drawing heavily on the COMPRESS program ] [ from UNIX. The basic method is taken from "A Technique for ] [ High Performance Data Compression", Terry A. Welch, IEEE ] [ Computer Vol 17, No 6 (June 1984), pp 8-19. Also see ] [ "Knuth's Fundamental Algorithms", Donald Knuth, Vol 3, ] [ Section 6.4. ] [ ] [ "As best as I can tell, this method works by tracing down a ] [ hash table of code strings ..." ] [ At least you give abundant credit. But good grief, "most" of ] [ your squeeze routines were "lifted", you draw "heavily" from the ] [ Compress program, and "as best as [you] can tell" the code you ] [ copied works a certain way. Not only did you borrow heavily for ] [ the two critical compression routines, but you also obtained the ] [ logic for CRC calculations from another source, the logic for ] [ hashing formulas from another source, and the entire idea of ] [ "distributive directory approach" from another source. It seems ] [ that ARC is mostly a compilation of ideas and code from many ] [ public domain sources. How can Phil steal the "nuts and bolts" ] [ of ARC when the "nuts and bolts" of ARC come from public domain ] [ sources? Perhaps if you had significantly modified them, then ] [ it would be more your original work. But for the critical ] [ compression routines, you don't even claim this! ] [ 2) The second point that makes this not such a simple case of ] [ piracy is how much different Phil's programs are from ARC. Now, ] [ let's assume for arguments sake that Phil did indeed use SEA's ] [ code. (There is much dispute over this, but let's ignore that ] [ for now.) Many people seem to think that all Phil had to do was ] [ switch over to a better compiler and do some assembler ] [ optimization. If that's true, then why is Vern Buerg's programs ] [ significantly slower than Phil's? Remember, Vern's programs are ] [ written in assembler and have even been improved many times for ] [ speed, but are still slower than Phil's. And even if that's all ] [ Phil did, it's still pretty original, especially when compared to ] [ ARC's originality. ] [ But I can assure you, that Phil's code is not just a simple ] [ assembler optimization of SEA's code. As probably the only ] [ person around who has matched Phil's feat of high speed/high ] [ compression Lempel-Ziv code (with my DWC archiver), I know full ] [ well how much effort and work it took Phil to do what he did. ] [ Every aspect of that algorithm has to be gone over, re-worked and ] [ re-worked, fine tuning it until everything works just right. In ] [ my case, I started with the public domain Lempel-Ziv code written ] [ by Kent Williams (the same code that SEA used), and changed it ] [ around so many times that nothing is left of the original code. ] [ I'm sure it's the same with Phil. I challenge anybody to make ] [ only trivial (or even not so trivial) optimizations to SEA source ] [ and see if they can make it as fast as PKARC. ] [ Let me be a little more exact here. When I say that every detail ] [ of the algorithms must be gone over, I'm talking about things ] [ like taking weeks just trying to find the optimum hashing ] [ formula. SEA hardly made this effort. They merely copied a ] [ hashing algorithm out of Knuth, as they clearly state in their ] [ code. Maybe they tried out a few different ones, but they hardly ] [ did the work that Phil or I did in inventing the BEST possible ] [ hashing algorithm for the Lempel-Ziv algorithm, and I dare say ] [ you won't find our hashing formulas in Knuth. ] [ Another area that has to be gone over is the Lempel-Ziv "reset" ] [ algorithm. This is where the program decides to restart and ] [ clear the Lempel-Ziv string table and start over, rather than ] [ continue with the current string table. How one implements the ] [ reset logic can effect the compression rate significantly. I ] [ have spent many, many hours trying to perfect this, and from ] [ what I've heard from Phil, he's spent even longer. The reset ] [ algorithm is a particularly nasty thing because what works well ] [ for one type of file, doesn't for others, so one must test ] [ zillions of files, and zillions of different parameters to find ] [ the best balance. ] [ Now the latest versions of ARC have been improved in this area ] [ (still inferior to Phil's though), but the older one, the one ] [ that Phil supposedly copied, was so awful that it's doubtful that ] [ SEA even tried to find a good solution. ] [ The two examples I've given are just two aspects that show how ] [ Phil has done original and inventive work. There are many other ] [ parts that likewise had to be meticulously gone over. Are users ] [ to be denied such inventive and original work? ] [ So, people now say, well gee, maybe SEA is not saying Phil stole ] [ the compressor/decompressor parts, but some other parts. Well ] [ first of all, the compressor/decompressor part is THE CRITICAL ] [ PART of the program. It is what makes PKARC such a superior ] [ product. In short, it is the part that drives the sales. Even ] [ if Phil copied verbatim the entire rest of the program from SEA, ] [ SEA may have technical justification then to sue, but it seems ] [ hardly "fair" to me that they gain control over his program. ] [ Aren't they the ones that are then stealing his original code, ] [ whether they know it or not? ] [ But of course Phil did not copy the rest verbatim. His interface ] [ is different (split over two programs instead of one), and his ] [ programs don't even have all of the features that ARC has. ] [ Moreover, to get the speed he has, he had to drastically re-write ] [ all of the file handling routines. And I don't mean simply ] [ adding larger file buffers. I know that in DWC some of my most ] [ complex code is my file handling routines, and they got as ] [ complex as they are strictly for the sake of speed. I had to do ] [ it to be as fast as Phil. ] [ So what we're left with, is at most just minor bits and pieces, ] [ and that's assuming that Phil DID use SEA's code at all! Hardly ] [ a "simple" case of piracy. ] We tried to politely ask PKWARE to obtain a license. He ungraciously told us where to go. [ Good grief, whether you asked politely or not hardly matters if ] [ Phil honestly believes his work is his own original work. Why ] [ on earth should Phil get a license for his original code? ] We asked our lawyer what we should do. He said we were bound by law to protect our rights to the trademark and copyrights on ARC. If we did not, then anyone could use the ARC trademark and copyrights. It is very much like a candy bar calling itself Hershey. If another company used the Hershey name without permission, you can imagine what would happen. [ Again, you are correct IF Phil indeed stole your code, but if he ] [ did not, then you are violating his rights. ] Also, it should be noted that PKWARE did not live up to the high standards set by the shareware industry. He didn't make his source code available. He sought out our market and competed directly for our corporate market by using the funds he had received from non-commercial users (whom we would not charge!) He authorized ads with false and misleading comparison statements to run in the magazines we advertised in. And he placed those ads on the same pages as our ads. If we did not protect our investment in the ARC trademark, we would have lost our trademark, our market and our business. Furthermore, the industry would have been left in disarray, as two standards would have emerged. [ If Phil has failed to live up to "the high standards set by the ] [ shareware industry, then so have many, many other shareware ] [ authors. I know of no "standard" that say's a shareware author ] [ must release his source, or must not charge non-commercial users. ] [ If that's the policy you want, then fine, but why does Phil or ] [ anybody else have to follow your "standard"? ] [ So now because Phil didn't follow your "standard" your crying ] [ foul. Sounds to me like two competitive companies that simply ] [ have two different marketing policies. ] [ If Phil's adds were misleading, please tell us how. What did you ] [ consider unfair about them? ] [ Phil is your competitor. You mean it's somehow unfair for him to ] [ place adds next to yours? ] [ Your argument seems to be, "See, Phil was trying to compete for ] [ our bread-and-butter. If we didn't do something, we would have ] [ lost our business." No kidding. What do you think competition ] [ is all about? Only if the competition is "unfair" do you have ] [ a reason to sue. Otherwise, you should stick to improving your ] [ own product. ] [ Your last sentence seems to imply that you consider that you ] [ "own" the ARC standard. It is true that you are the creator of ] [ that standard. But who made it a standard? The public did, and ] [ I think the de facto ARC standard belongs to neither you nor to ] [ to Phil, but to the public. You both have a public duty to ] [ properly follow the standard and to cooperate on any extensions. ] [ However, cooperation between you and Phil has been non-existent. ] So after Phil Katz told us he would not settle this case like a gentleman, we were forced to ask the courts to settle it for us. We didn't want to go to court. We couldn't afford the lawyers fees. We couldn't afford the time away from programming the updated versions of ARC that will work on other systems, such as Unix, Macintosh, and VM/CMS. And we couldn't afford to create a controversy in an industry that we helped to pioneer. We also couldn't afford to create ill will among users -- both our users and PKWARE users. But PKware left us no choice. [ What's that? Phil's supposed to be a good little software pirate ] [ and just settle the case the way you would like? But what if ] [ Phil isn't a pirate? ] [ What a waste! Here we have two software companies wasting all ] [ their time and money on a stupid lawsuit. ONLY if Phil CLEARLY ] [ stole your code should you have started this. ] Anyway, the case didn't get very far, thanks to the testimony of an expert witness, John Navas. He looked at the source code of both programs and found, lo and behold, that the PKWARE program was indeed a blatant copy of the SEA code. [ There has been a lot of controversy on this point. First, I do ] [ not know the date of your article, but I would like to know if ] [ you are still claiming this? If so, I would like to talk to (or ] [ write) this gentleman to ask him first hand just exactly what he ] [ is claiming. Could you please tell us how we may contact him? ] [ And anyway, what is John Navas an expert in? Is "blatant" your ] [ term or his? Frankly, even though I have never seen Phil's code, ] [ I see NO WAY for it to be a blatant copy of your code. From my ] [ "expert" experience, it's just impossible. At most, only bits ] [ and pieces could have been copied. ] When Katz heard this, he called us directly -- bypassing the attorneys -- and said he wanted to settle. [ You are implying that Phil found out you knew he copied your ] [ source, and then wanted to settle out-of-court. Do you have any ] [ quotes from Phil admitting this? Or are you just making an ] [ assumption? I have only seen that Phil denies copying your ] [ source and that he only settled out of court because the lawyer ] [ fees and such were running quite high and, like you, he could well] [ be spending his time on more productive things. ] We were only too happy to put a quick end to this. We wanted the facts to come out. Unfortunately, Katz demanded that part of the settlement terms be kept under court seal. We agreed, and we probably should not have, but we did because we wanted to end the case quickly so we could get back to updating and improving ARC. [ Again, this is a disputed fact. Katz is claiming that he never ] [ demanded that the terms be kept under court seal, that instead it ] [ was your lawyer who did. Perhaps it was a miss-understanding. ] [ But unless you can give more evidence, it's simply your word ] [ against his, and that doesn't get us anywhere. ] Some of the terms are public: PKWARE cannot distribute the program after January 1, 1989, they cannot substantially change the program (though they can make bug fixes) and if they receive inquiries for the product, they must send out SEA literature. Also, PKWARE is prohibited from creating a new program that is compatible with ARC or PKARC. If those terms sound one-sided, then it only goes to prove the extent to which PKWARE felt that it had no legitimate right to its program. After all, why would he give up everything if he was right? He obviously was not above board in this case, even though the settlement terms said he was not admitting fault in any way (a standard legalese ploy). [ Obvious? It's not obvious at all. I'm afraid you are so ] [ convinced that Phil stole your code, that you can only see things ] [ one way. You ask, "why would he give up everything if he was ] [ right?" Why indeed? I'll tell you why. Could it be that Phil ] [ did write a completely original archiver? Could it be that he ] [ worked so long on PKARC, that he has already re-coded it ] [ completely a number of times? Could it be that in all his time ] [ refining every aspect of PKARC, that he ran time after time into ] [ a wall of "compatibility", and said to himself, "if only I didn't ] [ have to worry about compatibility, I could do so much better ] [ doing this and that", that he was grateful for the "opportunity" ] [ to throw away his old stuff, and write something completely new? ] [ In short, he's not giving up anything. He's gaining a lot. ] We are a bit perturbed that one of PKWARE's part-time employees obtained a copy of the sealed court document, typed it into a file along with numerous typos and loaded it onto several bulletin board systems. She also included her own biased, editorial opinion on the case and its terms. While we don't believe PKWARE had authorized this action, it obviously violates the sense of fair play that we have lived with, at Mr. Katz' request. [ You make it sound like Phil and his employees are really a bunch ] [ of sneaky foul-playing crooks. Come on. It was only after a ] [ public newspaper went down to the court house and got and ] [ published the supposedly "sealed" documents, that Phil's employee ] [ did the same. Anybody could have done it. Anyway, why should ] [ it perturb you if the facts you didn't want kept quite are now ] [ available for all to read? ] Now we are faced with several problems. The bulletin board community has heard many comments by people who did not possess the facts of this case, and therefore made ill informed opinions. Those opinions seemed like fact because we did not respond to them while the case was in progress. You are well aware that no party in a legal action can really speak his mind while the action is occurring. Because we didn't respond, people assumed that we were wrong. Well, we weren't wrong and we won't be silent any more. We have begun responding to the outrageous and outlandish opinions expressed against SEA. We realize that people came to the only conclusion possible, given the lack of reliable information about this case. We will respond to any and every comment about this case. We welcome questions and urge people to call us at our office. When the dust settles, no one will doubt our sincerity in trying to do the right thing. [ I have never doubted your sincerity in trying to do the right ] [ thing. I am convinced that you believe that Phil stole your ] [ code. Nevertheless, that does not mean you are right or that ] [ Phil is a pirate. I am glad that you say you will "respond to ] [ any and every comment about this case." But so far, that doesn't ] [ seem to apply if you don't like what someone says. I have asked ] [ you numerous questions on Magpie, and received very little reply ] [ from you. I really would like to here your point of view. ] We'd also like to clear up a few basic misconceptions that have appeared on the boards: - SEA waited too long to take action. Response: The legal world moves slowly. First we have to be aware of the situation, determine that a violation of our copyright existed, try to settle amicably and then take legal action. That takes time. [ Please tell us when and how did you become aware of the ] [ situation? I can recall no public protest by you during the ] [ first archiver debate on Magpie that Phil stole your code. And ] [ when and how did you determine that a violation of your copyright ] [ existed? It really does look like you didn't bother doing ] [ anything until Phil started eating into your income. Is this so? ] - SEA doesn't upgrade it's program. Response: We have updated the program nine times in three years. We have made it available for several other operating systems, such as OS/2 and CP/M. We will continue to upgrade the program to benefit all users on all systems. [ Come on. Who are you trying to kid? Sure you made a number of ] [ updates when ARC first appeared, but then there was a LONG period ] [ where you did nothing. I think this is part of the problem: You ] [ think you've done work updating ARC, but you've done no where ] [ near the work that Phil or I have done perfecting our archivers. ] [ And that's why it's hard for you to see that Phil did so much ] [ original work. As a comparison, it took me two weeks to ] [ completely emulate the features in ARC (with a program that ran ] [ faster too), but it took many, many weeks to get the speed that I ] [ have today (and the compression size). ] - SEA used the courts when it realized it couldn't compete on raw programming talent. Response: We have a very good program and one that is getting better. We wouldn't be the defenders of an industry standard if we didn't have programming talent to begin with. [ You may be a good programmer, and you did come out with it first ] [ which is what made it the standard, but you sure haven't tried ] [ hard enough to speed it up. What takes you guys so long? As ] [ soon as I saw that there existed a program faster than mine, I ] [ went back and programmed and programmed until mine beat his ] [ (Phil's). Then he went back and improved his to be faster than ] [ mine. Then I went back and improved mine. You didn't even seem ] [ to try. What's the deal? You seem to think that because you ] [ want portable C code, that you can't have a faster archiver. ] [ But DWC has a portable C version that is almost as fast as ARCA/ ] [ ARCE, and it has optimized assembler code that follows the exact ] [ same logic as the C code that makes DWC as fast as PKARC. ] [ Either you have a poor attitude and refuse to improve your ] [ product and be competitive, or else your lazy and complacent, or ] [ else you don't know how to. Which is it? ] - SEA is a Goliath pursuing a David called Phil Katz. Response: Phil Katz is a not just a person. He is a company, and a big one at that. PKWARE is a bigger company than SEA, despite the fact we publish four programs. We calculate that PKware currently grosses almost $2,000 a day, or about five times what we do. We challenge him to make his audited figures public. - PKWARE must be a small company because we hear there are only three employees including his mother. Response: We applaud Mrs. Katz and wish her the best of success. We too are a family run company. Andy Foray and Thom Henderson are brothers-in-law and Irene Henderson serves as secretary/treasurer. We have hired a programmer and a license manager. We didn't do this because we had a windfall profit, we did this because we needed to stay competitive and to serve new markets. - SEA should have pursued the case to a jury trial so a precedent could be set for the industry. Response: We wish we had the money to support our lawyer to take this case to a jury trial conclusion. However, we were eating hot dogs every night and had to take on outside consulting jobs to make ends meet. We needed to end this case before the legal fees devoured our company. Besides, we weren't out to crucify the guy -- we just wanted him to stop stealing our work. [ It's incredible to me that you went to such an extent (I'll ] [ assume what you say is correct). You surely must really believe ] [ Phil stole your code. Have you seen his code? Could you give us ] [ examples of what he stole? Please! We need some hard evidence. ] If there are more questions, be assured, we will respond to them. We have also issued a new policy statement regarding the licensing of ARC. It has been uploaded to the IBMSW forum on CompuServe, the utilities/archivers conference on BIX, and has been disseminated to other BBSes as well. The terms probably are the most liberal for any licensing policy for any software company. And if that isn't enough, give us a call and we'll see what we can work out. We welcome the opportunity to better serve the shareware community. We invite your comments and your suggestions.