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.

///