Subject: What I want from my Common Lisp vendor and the Common Lisp community From: Erik Naggum <erik@naggum.net> Date: Fri, 31 Aug 2001 05:57:38 GMT Newsgroups: comp.lang.lisp Message-ID: <3208226254834485@naggum.net> I want to live in a world of competent, intelligent, caring people. This is a large part of the reason I was attracted to computers in the 1970's. Computer people showed passion for their work, dedication to quality, and above all, both a strong sense of joy in their skills and their work and an equally strong sense of pride in the results of their work. It was a lot of _fun_ to hang around older computer people when I was a kid, it was utterly wonderful to be able to use large computers at the University of Oslo and learn to use and program under TOPS-10 and TOPS-20 on _real_ computers, massive DECsystem-10s and -20s. People in the business gave me computers to play with, I was invited to test new stuff that would not hit the market for months, both DEC and IBM sent me half a ton of system documentation for free. All of the people I came into contact with were happy they could work with computers and they spread that happiness to anyone who looked as if they had the capacity to care about computers. Then I was shown a Lisp on a VAX running BSD Unix (probably Franz Lisp), and more competent, intelligent, caring people virtually sprung up around me, eager to show me cool stuff and waiting for me to grasp the elegance. I felt like I was born a Lisper, that this was the language that matched how I thought, as opposed to Fortran, Cobol, Pascal or any of the other Algol derivatives, which I had of course learned and played with. (The only other language that had said "me" was the assembly language of the PDP-10, MACRO-10.) But it was hard to use Lisp for real stuff, so I had little opportunity to use it for real. Unix arrived on the scene in 1980 and I learned C, because it was the language of joy in the Unix world, and everybody were excited and happy about it. Mastering it was a huge challenge, but I did, and that was very satisfying and people came to me and offered lots of money to help them create bug-free applications or debug their applications. Ten years after I had discovered computers, and still a kid, I started to make a living programming them and helping people realize their desires on computers. I found that I could make people happy and that my love of my work was contagious: it was just so great to watch people share my satisfaction that something _worked_ that they had not even dared to hope would. Over and over again, I felt "Yeah! I am _good_ at this!" and both the computers and the people I talked to concurred. I was far from alone in feeling like this. All around me were people who felt the same way, who were competent and intelligent and caring about each their own fields, and we could talk about and study each other's work and share information and sit down together and solve problems bigger than each of us could deal with alone and all around us was the common understanding that computers were great, that our languages were great, that we were great because we knew how to use them to great benefit, that everything was just plain _great_. I believe every computer enthusiast recognizes himself in these words. I have certainly met so many real enthusiasts all over the world that I do not think those who did not share these feelings worked with computers in the 1970's, 1980's or even early 1990's. Today, we have a lot of people who only work with computers because it pays for their expensive homes, cars, spouses, and kids, but I do not care much about those people, and they have no impact on the industry, either, as they are the people who get laid off and simply go into another business they do not care much about either if they cannot continue to work with computers. The rest of the computer people are just as competent, intelligent, and caring as they used to be, and they drive innovation, development, excitement in new stuff of all kinds. They also keep the little fire within burning with a passion for the older things they have loved all their lives. For every hardware or software product, there are enthusiasts: wild, untamed, uncontrollable people who overflow with excitement that "normal" people have no way to understand. It is that _excitement_ that sets us apart from the crowd. It is that _excitement_ that causes people to join free software and open source projects to give away their work to others of the same kind. This is why free software and open source are mostly developer-to-developer, because only developers share their joy. Users do not understand, they do not care, and they do not understand why we care. The currency in the developer community is _enthusiasm_. Not just your own for your own work, but for the competence, intelligence, and caring that just about anybody else excudes, too. As a developer, you are not judged solely by your work, but by how great you think it is, what went into making it great, and for your capacity to understand how great somebody else's work is. All of the software tools on the Internet have a following behind them: People who _care_ and who are willing to help others who care. All languages have groups of dedicated people behind them that profess their love for their language, in direct words, in direct action, in every way they can. All languages with vendors behind them have developer forums where people come with a general attitude that the tools are great and that the vendor does a great job providing for them, unless, of course, there are bugs, in which case the "angry side" of developers show up and they feel personally betrayed by incompetent, unintelligent, or careless people. But give them half a chance to prove otherwise, and developers will love them again, forgiving and forgetting, because they share the overall enthusiasm that drives us all. In fact, developer to developer, we do not only expect enthusiasm, we demand it. There is something very _wrong_ with a developer who just slops something together and leaves a stinking heap of dysfunctional crap, and such people _anger_ developers. The demand for enthusiasm is a profound recognition of the competence, intelligence and caring that _must_ go into computer software. It is among the hardest mental tasks known to man to create bug-free software. We manage to do it because we demand competence, intelligence and caring from _all_ the people who take part in its creation. If there are somebody among us who fail to deliver on these counts, the are not only doing a bad job, they are destroying part of the very fragile fabric that know keeps everything together. Because, let us just face it right away: Creating software is so immensely hard that we cannot afford to create it in a world where incompetent, unintelligent, careless people must be safe from harm. This is different from every other engineering discipline -- all of them are about ensuring that the blundering moron does not get himself killed. Software can crash on the incompetent, bridges cannot. We "solve" this problem by requiring of the people that set the standards for our industry that they be enthusiasts, highly competent, highly intelligent, very caring enhtusiasts who are devoted and dedicated to a level of quality that would be unimaginable in any other discipline. We do not always get what we want, but that is the requirement we have. The optimism that the information technology industry managed to excude to the general public a few years ago led to the hyperinflation in IT stocks. The wild, untamed, uncontrollable excitement that computer people feel towards their own work spilled over into the general public for the first time, and the public was completely unprepared for it, so they thought it was more than the _feeling_ shared among developers. It went really bad. Billions of dollars have moved from the hands of those who believed to unscrupulous, big spenders who were not developers, but managers and other suits who got a whiff of our enthusiasm and could not handle it. Such is the immense power of the enthusiasm that developers and computer people feel that it has probably produced a global recession when it affected people who did not know that it was a feeling _reserved_ for competent, intelligent, caring people who knew where it came from and when it should be used. However sad the losses and difficult our times because of it, the enthusiasm remains untamed among developers. They may be more cautious in their spending and they may regret that they spent all that free money too soon, but their core belief in competence, intelligence, and caring has not changed. Developers everywhere are still devoting their time and their lives to the extremely high quality of their work. The enthusiasm that defines computer people has not been killed by being laid off, by losing money, by failing products, even by betrayal from managers, investors, what have you. Computers are great, our languages are great, we are great, we just had a bit of bad luck. I include this part of negativism because I want to show that the greatness that keeps us together and in the business survived such a huge blow. I think Common Lisp is a really _great_ language. I absolutely loved Guy Steele's "Common Lisp the Language" in both editions -- he excudes more competence, intelligence, and caring than any other programming language book author I have read. His profound and rich sense of humor is no accident. I think ANSI Common Lisp is the best standard there is, and the language it defines is most certainly the top of the crop. I feel a deep personal satisfaction in being able to program in this greatest of languages. Now, when I approach a Common Lisp vendor, I fully _expect_ him to share my enthusiasm for the technology I want to purchase from him and probably to exceed mine because he created something great for a great language and since I have discovered both the great language, the great product, and the great vendor, we should be able to share a _lot_ of enthusiasm. If the vendor does not share my enthusiasm, there is something _wrong_ with him. If the vendor insults what I think is great, he is insane -- no two ways about that. My enthusiasm for Common Lisp is not affected by a negative idiot who thinks it sucks. For every language and product, there are people who are _not_ members of their respective communities who hate them with a passion very close in magnitude to the passionate love felt by its adherents, so this is not something I care about at all. Outsiders to any community have always been behaving like idiots. However, there is something _very_ seriously wrong with the Common Lisp community. People _in_ the community feel that it is perfectly OK to debase, denigrate, ridicule, denounce, disrespect, insult, defame, and smear Common Lisp. Instead of telling people how great a language we have, some certifiable nutcases spend their time propagandizing and agitating against the language, creating stupid deviant versions and breaking with the language as defined, doing something other than what was agreed upon, and introducing "features" that cause the knowledge base for the language to be polluted and the skill of knowing Common Lisp to be nigh worthless when faced with individual Common Lisp systems. [The worst perpetrators also argue that since you have to know so much extra in addition to Common Lisp, it does not matter that you cannot use your skill set from having learned Common Lisp.) Instead of being able to trust an implementation to follow the standard, to let the standard be the baseline of expectations, Common Lisp users are taught by expect things to be broken. If an insane vendor goes out of his way to decry the incompetence of the standards committee because he did not get his will on, say, lower-case symbol names, and he shows the whole world that he writes code that does not work correctly if you want standard behavior, that does something to the ability of developers to trust the implementation. Instead of taking conformance for granted, we have to check for it, read the release notes files very carefully to see that, oops, floating point contagion works differently here, the standard pathnames are broken by design so not supported, and it was just plain wrong to specify how CLOS objects should be updated when the class is updated, so we omitted that. These are not bugs. These are not best efforts that fall short for lack of resources and that will be fixed given the resources. These are _intentional_ violations. I call them "political bugs". The desire to maintain a greatness is so powerful in other communities that they split whenever they need an incompatible feature. A new name is often chosen for the new language. Anything to keep people looking upwards and onwards. The new feature is great to those who follow it, and the old feature is great to those who stay. Never mind the people who are not members of our community. In the Common Lisp community, however, it is perfectly OK for people to continue to call their deviant languages "Common Lisp" even though they purposefully break with it, and people who hate all sorts of features _stay_. They do _not_ leave when they are disgruntled and have better ideas. It is somebody else's fault when their better ideas are defeated. The inevitable conclusion is that Common Lisp is _not_ great to Common Lisp people. As a community, we are _unable_ to chase away the negative morons and their destructive forces. Instead, some people even defend the "right" of the destructive nutcases to continue to hammer on the greatness of their language. A feeble lack of enthusiasm follows, where "it is just a tool" and "it has good sides and bad". So, why should anyone choose Common Lisp over any other tool? For some time, lots of Lisp people have asked why (Common) Lisp is dying. There are some objections every now and then, like when a dying parent keeps his ungrateful offspring from stealing his fortune by refusing to stop breathing. There are some people who still show signs of enthusiasm in the Common Lisp community, who still express love for their language, who still want the language to be fully implemented. The rabid nutcases refer to these as "religiuos zealots". In any _other_ community, those who love the language would be celebrated and the nay-sayers would be run out of town, asked to go create their own community. Instead, we let these corpses stay with us and spread death and gloom and pestilence, and anyone who arrives in our community will take one whiff of the death and decide to go elsewhere, anywhere, because just about anywhere else, you find _vibrant_ enthusiasm among the community members. We need to throw out and bury the corpses. Those who think Common Lisp sucks are _not_ members of the Common Lisp community. Those who want to work with Common Lisp should feel free to express their _love_ for the language, should not be ashamed to be _excited_ about their language, should feel comfortable _sharing_ with others in the community, and should experience a strong sense of commmon competence, intelligence and care from joyful, happy people who have seen a great languge survive all sorts of problems and changes and still remain a truly great language. This is not possible when people who hate parts of the language, some of the people who created it, or some of the process that created it, who hold personal grudges they cannot let go of, or who think the best way to "improve" the language is to stay in the community and spread negativity and tear down everybody else's enthusiasm, do just that. No improvement at all will take place when such negativity rules because everybody is afraid that if they open up for any change at all, the destructive forces will win and the language they love will be destroyed by the hatemongers and destroyers who seek only their own personal revenge over feature wars lost. And that is precisely the case with Common Lisp. Strong negative forces want to reverse several decisions and threaten to destabilize the language, so in order to maintain the necessary peace that will allow developers to use this language at all, _nothing_ happens. By mounting a constant attack on the standards process, the nutcases who are never going to be happy with the language, anyway, ensure that their negative attitude keeps everyone else from being happy and becoming happier, too. The enthusiasm that really helps improve a language is a love for it the way it is and has evolved so far, with an understanding and appreciation of its "momentum of evolution" so that any changes that are proposed seek to retain the users and the investments in it and does not splinter off into a different language and break with the past. People who love their language develop it further and share their ideas of its evolution so that the community takes part in deciding where to go, but they never seek to "improve through destruction". People who love their language want to go from "great" to "greater", not from "great" via "sucks" to "different". Can we do this? Can people who are still enthusiastic about Common Lisp the language, even after reading a 20K long news article, please raise a hand and express their feelings? Can you stand up and say "I _love_ Common Lisp!" in a crowd and feel proud of yourself? Do you want to fight for Common Lisp at work, at school, at home? Do you want to tell people how great Common Lisp is? Do you want to share of your time to help make Common Lisp a continued success and to go from survivor to winner? Do you want to pay hard earned cash to make sure that Common Lisp vendors succeeds because you know that that helps you succeed? Do you want to help make _all_ the vendors and Common Lisp system builders stop their negative spins on the language and the standard and just do the right thing and implement the standard faithfully _first_, and then do whatever else they think is also great _afterwards_, _without_ making any insults towards the standard or the rest of the community? It will take hard work to get the negative attitudes out of the system. It will require significant effort to convince the vendors who still have rabid nutcases on staff to want to change their public image to a more up-beat, enthusiastic one. E.g., convincing the CLISP maintainers to get rid of the negative attitude problem in stuff like this -ansi ANSI CL compliant: Comply with the ANSI CL specification even on those issues where ANSI CL is broken. This option is provided for maximum portability of Lisp programs, and is not useful for actual everyday work. It sets the symbol macro *ansi* to t. See "Maximum ANSI CL compliance", for details. would be a good start. It should be possible to argue for a better way without _having_ to debase what one does not like. If one argues for something different based on something that others think is great being bad, nobody who likes the existing stuff will want to listen, and instead they get all defensive and want to keep the lunatics at bay. I actually believe thare are enough Common Lisp enthusiasts out there to make a difference if we can get the corpses that stink up the place out and that there is nothing wrong with Common Lisp's following or fans if they can be allowed to express their enthusiasms instead of being hurt by rabid nutcases who insist on insulting both language and its happy users. ///