Open brief over objectgerichtheid

Pieter Wisse

Wat volgt is de tekst die ik op 25 juni 1993 als concept, ter vóórinzage noemde ik het toen met diplomatiek venijn, stuurde aan de directeur van de nederlandse dealer van een amerikaans gereedschap voor geautomatiseerde informatievoorziening. In definitieve versie heb ik deze open brief vervolgens nooit verstuurd. Het concept had immers al het beoogde effect, te weten mijn geld terug voor gereedschap dat mi niet functioneerde zoals het moest.

Ik geef bedoelde directeur gaarne na dat hij, toen hij via mijn correspondentie eenmaal persoonlijk van de kwestie op de hoogte was, snel en vanuit mijn perspectief correct handelde. Hij heeft dus wel kaas van relatiebeheer gegeten. Daarbij geloof ik dat hij weliswaar mijn probleem met zijn bedrijf en produkt niet zo goed begreep, maar in elk geval door ongewenste publiciteit geen àndere problemen wenste. Dat vond ik natuurlijk wel verstandig. En het was precies waarop ik gemikt had.

Gelet op die afwikkeling heb ik de oorspronkelijke tekst voor deze bundel zodanig bewerkt dat gewraakte organisaties, mensen en produkten onherkenbaar zijn. Althans, dat hoop ik. Verder heb ik niets veranderd. Wat blijft moet in het algemeen een leerzaam verhaal zijn. Ikzelf vind het eigenlijk ook best grappig, zeker achteraf gezien. Ik probeerde stijlvol gram te halen. En wie weet leest die aardige directeur dit ooit ook nog eens.

Goed, en dan nu die open brief zèlf.

 

 

Het is mode om op van alles en nog wat het etiket objectgericht te plakken. Ik ben daar nu zelf het slachtoffer van geworden. Met deze open brief probeer ik allereerst iets van mijn geleden schade vergoed te krijgen. Als slachtoffer schaam ik me overigens voor mijn eigen naïviteit. Hoe kon ik zo stom zijn om erin te stinken? Aan de andere kant, hoe kon ik het beter weten? Ik ben terecht, meen ik, boos geworden over wat ik als misleiding en ontbrekende service zie. Voorts bedoel ik het volgende verhaal als waarschuwing tegen namaak, ondeskundigheid en noem allemaal maar op wat mi onterecht aanspraak op objectgericht maakt. Hopelijk kan ik zo potentiële klanten behoeden voor de fout die ikzelf maakte. Vertrouw niet op krachtige aanbevelingen, demonstraties, informatie in de folder en de bijsluiter. Ga er niet vanuit dat de winkelier ècht begrijpt wat hij verkoopt en dat hij fatsoenlijke service geeft. Helaas.

 

 

de aanschaf

Begin dit jaar (1993) was ik zover dat diverse grote organisaties interesse toonden in een prototype. Dat had ikzelf ooit ontworpen en nu met een systeemontwikkelaar als partner verder ontwikkeld voor integratie van informatievoorziening in bedrijfsprocessen. Het prototype was volgens de wens van de organisatie, die de ontwikkelingskosten deels sponsorde, met een traditioneel 4GL gebouwd. Om verder te komen, daar was ik overigens altijd al van overtuigd geweest, moest ik overschakelen op een objectgerichte ontwikkelomgeving.

Hoewel de eerdere sponsor daarin nog niet mee ging, stemde ik mijn keuze voor zo'n ontwikkelomgeving bewust af op wat ik voor die organisatie in kwestie verwachtte. Voor later dus, dacht ik optimistisch. Via een medewerker van de ex-sponsor kwam ik in contact met het automatiseringsbedrijf X. Naar verluidt, werden toepassingen daar bijna allemaal met O-plus ontwikkeld. En dat O-plus, een programmatuurpakket van de amerikaanse firma Y, is gebaseerd op Smalltalk. En Smalltalk was en is het enige dat voor mij voor objectgerichte ontwikkeling en toepassing in aanmerking komt.

Ik maakte een afspraak voor een demonstratie. Die liep uiterst vlot. Ik was onder de indruk. De documentatie in dat stadium was overigens bijzonder mager. Dat was een tweezijdig bedrukt vel, formaat A4. Een folder is zelfs te veel gezegd. Maar ja, wat ik had gezien, werkte flitsend. En op het velletje las ik nog eens: "O-plus includes a complete object oriented development environment. Smalltalk-4GL, O-plus' Smalltalk implementation, supports all of the characteristics of a true object oriented programming language and environment." Dat was helemaal wat ik zocht. Wat ik voor de langere termijn ook interessant vond, in verband met integratie in een pluriforme infrastructuur, was de geschetste mogelijkheid voor "links to most popular SQL databases." Bijzonder hoog scoorde bij mij de aangekondigde eigenschap (ondanks de taalfout in de desbetreffende zin, i.e. "developer" als enkelvoudig onderwerp en "their" als meervoudig bezittelijk voornaamwoord) dat "... the developer has the right to distribute an unlimited number of copies of their application on a royalty free basis ..." Ik ben logischerwijs tegen illegaal copieëren, en zo kon er nooit een probleem over rijzen. Ik wilde simpel objectgerichte toepassingen kunnen genereren en verspreiden.

Kort en goed, ik bestelde O-plus. De firma X had verteld dat bedrijf Z voortaan dealer was. Mij best. Voordelig, te weten in verhouding voordelig, was nog de 'oude' prijs. Als ik wachtte tot Z dealer was, kwam er zomaar zes à zeven duizend gulden bij. Dat is een stijging van ruim vijfenzeventig procent en dus ook iets om op te letten.

Ik kreeg spoedig een overeenkomst standaardprogrammatuur en een software license and equipment sale agreement toegezonden. Ik tekende ze en medio maart werd dan O-plus bezorgd. Blij ermee aan de slag te kunnen, betaalde ik prompt.

 

 

problemen met èchte objecten

Enige tijd verliep alles voorspoedig. De systeemontwikkelaar waarmee ik samenwerk, oriënteerde zich eerst algemeen op en met het pakket. Begin mei kon hij beginnen met de bouw van een nieuw prototype, nu dus objectgericht. Dat ging allemaal uitstekend omdat hij tijdens testen in de ontwikkelomgeving de informatie (lees hier ook: in de betekenis van variabelen i.p.v. methoden) slechts, zeg maar, vluchtig als onderdeel van objecten registreerde. Dat wil zeggen, het leven van de toegevoegde informatie in de toepassing overschreed niet de duur van één sessie met de ontwikkelomgeving.

Toen was het moment aangebroken, dat moet rond 18 mei geweest zijn, om de zgn Application Generator te activeren. Want daar gaat het toch om, dat wil zeggen "to generate a distributable application" (citaat uit de folder). Mis.

Oké, met de ontwikkelomgeving O-plus werd een gedeelte van de programmatuur apart gezet. En dat gedeelte was vervolgens oproepbaar en toegankelijk als aparte toepassing. En die toepassing stond de gebruiker in de loop van zijn sessie toe om nieuwe informatie als onderdeel van nieuwe objecten te registreren. Dat was tot zover allemaal zoals het hoort. Wat absoluut niet lukte, was om de sessie normaal te beëindigen inclusief permanente opslag van de gewijzigde verzameling objecten. De functie "save image" werkte domweg niet. En dat is zeer vreemd, als je tenminste verwacht een èchte objectgerichte toepassing ontwikkeld te hebben.

De ontwikkelaar probeerde van alles, spitte de documentatie door, probeerde opnieuw. Het resultaat bleef hetzelfde; in de gegenereerde toepassing kon de verzameling objecten niet veranderd èn ge'save'd worden. Op 24 mei, of misschien zelfs al eerder, nam de ontwikkelaar telefonisch contact op met de firma Z. De produktspecialist kon de vraag niet thuisbrengen. Het idee van informatie in objecten bleek nieuw voor hem. Vreemd. Na enkele dagen meldde deze betrokken medewerker van Z dat hij de vraag naar Y in de Verenigde Staten zou doorsturen. Vervolgens ging hij een week met vakantie. Zo waren er alweer twee weken verstreken totdat ik de boodschap kreeg dat O-plus principieel géén toepassingen kan genereren waarmee de gebruiker informatie als onderdeel van objecten kan manipuleren. Dat vond ik nòg vreemder. Ik meende immers een "true object oriented programming language and environment" inclusief de middelen "to generate a distributable application" gekocht te hebben. Helaas, mis.

Ik had een deadline door een afspraak voor een demonstratie van het prototype. Als noodoplossing kon ik de toepassing nog opgenomen in de totale ontwikkelomgeving laten zien. Dus niet apart. Oké, dat probeerde de systeemontwikkelaar om tenminste iets aan mijn klant te kunnen laten zien. Tegelijk was uiteraard toen al duidelijk dat O-plus ongeschikt is voor de definitieve toepassing, althans wanneer die boodschap uit de Verenigde Staten juist was.

Met de toepassing ìn de ontwikkelomgeving kwamen er met enkele toegevoegde objecten reeds foutboodschappen en raakte een icoontje in de war, maar er gebeurde wel iets. De terugkeer naar de ontwikkelomgeving inclusief toepassing was echter reeds problematisch. Slechts na diverse pogingen wilde dat nog weleens lukken. Met een groter (maar absoluut gezien uiterst bescheiden) aantal geregistreerde objecten bleek terugkeer volkomen geblokkeerd. Jammer genoeg, óók mis.

Dit gebeurde allemaal of, beter gezegd, dit mislukte allemaal in de geïntegreerde omgeving die O-plus volgens èchte objectgerichtheid zou moeten bieden. Met de zgn Application Generator bleek het totaal onmogelijk "to generate a distributable application" met de eigenschap van èchte objectgerichtheid. En die mogelijkheid om copieën van toepassingen vrij van O-plus-rechten te kunnen maken, was voor mij een wezenlijk buying point geweest. Maar, nogmaals, objecten weggschrijven in zo'n aparte toepassing, dat wil zeggen apàrt van de ontwikkelomgeving, dat lukte überhaupt niet.

 

 

intermezzo over objectgerichtheid

Voordat ik over de avonturen met O-plus en bedrijf Z verder vertel, verklaar ik hier eerst in het algemeen iets over objectgerichtheid. Ik geef toe dat het niet eenvoudig is. Maar dat houdt meteen in dat wie er geen verstand van heeft, geen adequate service kan leveren.

De O-plus-folder rept van "a true object oriented programming language and environment." Wat is dat, "true"? Welnu, in absolute zin bestaat daarover mi geen gedetailleerde wijsheid en die zal ik dus niet proberen te verkondigen. Het is inmiddels zo dat objectgerichtheid veeleer een stroming inhoudt waarbinnen accenten kunnen verschillen. Maar ondanks smaken en soorten, zijn er wel degelijk fundamentele eigenschappen te benoemen waaraan een taal en ontwikkelomgeving moeten voldoen om terecht aanspaak op het etiket objectgericht te kunnen maken. Overeenkomsten gelden uiteraard nog sterker tussen uitsluitend Smalltalk-versies. Wat O-plus in theorie betreft, ligt daar ook helemaal geen probleem. Eén van de meegeleverde handboeken is een zgn Primer. Daarin staat (maar ik citeer hier niet letterlijk omdat mij dat volgens ons contract niet toegestaan is) dat zgn encapsulatie een eigenschap van een objectgerichte taal moèt zijn. En wat is encapsulatie of, zoals ik het noem, inkapseling dan wel? Dat staat op de volgende pagina van de Primer genoteerd. Wie O-plus ook gekocht heeft, kan het daar dus nalezen. Adele Goldberg (de moeder van Smalltalk, als ik Alan Kay de vader zou mogen noemen) en David Robson schrijven in hun boek Smalltalk-80: the language (Addison Wesley, 1989, p 6) nog beknopter: "An object consists of some private memory and a set of operations. [....] A crucial property of an object is that its private memory can be manipulated only by its own operations." Dat is inderdaad zeer abstract en voor menigeen dus (te?) ingewikkeld. Maar het is juist dergelijke abstractie die aan objectgerichtheid haar uitzonderlijke kracht verleent. In (hopelijk) wat gewonere taal komt inkapseling erop neer dat, wat traditionele automatiseerders gewend zijn data te noemen, altijd als onderdeel van een object opgeslagen is. De instructies die exclusief toegang tot data (lees ook: informatie) hebben, zijn in datzèlfde object ondergebracht. Objectgerichtheid is aldus een synthese van data- en proceduregerichte informatievoorziening.

Wie begrijpt wat inkapseling is, begrijpt eveneens dat er een fundamenteel probleem bestaat wanneer objecten met daarin toegevoegd informatie (data) door een aparte toepassing niet voor opslag naar extern computergeheugen weggeschreven kunnen worden. Of, als dat binnen de ontwikkelomgeving al lukt, wanneer bij aanvang van een volgende sessie de weg naar de omgeving radicaal geblokkeerd is zodat de opgeslagen informatie effectief ònbereikbaar is (en de gehele ontwikkelomgeving opnieuw geïnstalleerd moet worden).

De manier waarop Smalltalk, en altijd weer als eigenschap van de gehéle omgeving voor toepassing en/of ontwikkeling die tijdens de sessie actief is, met duurzame opslag van objecten omgaat, is theoretisch als volgt. Er is een afbeelding, het zgn image. Dat image is eigenlijk een verschijningsvorm van de gehele omgeving waarvan naar behoefte een ondeelbare dump op extern geheugen mogelijk is. Dit idee van ondeelbaarheid klinkt traditionele automatiseerders natuurlijk weer vreemd in de oren, maar is volkomen consequent voor wie snapt dat Smalltalk een omgeving biedt waarin geen scheiding tussen ontwikkeling en toepassing bestaat. De toevoeging van informatie wordt aldus als ontwikkeling opgevat. Daarom moet die gewijzigde toestand van de omgeving desgewenst opgeslagen kunnen worden. Vandaar dat Smalltalk aan de ontwikkelaar/gebruiker de functie "save image" biedt.

 

 

stagnatie van ontwikkeling

Na dit intermezzo terug naar de avonturen met Z. Zoals gezegd, meldde de systeemontwikkelaar die aan het prototype bezig was, in de loop van mei 1993 aan de firma Z de eerste moeilijkheden met het opslaan van het image. De problemen veroorzaakten dat in elk geval sinds 24 mei de ontwikkeling van het prototype totaal stagneerde. Alle aandacht onzerzijds ging vanaf toen uit naar de (on)mogelijkheid om toegevoegde informatie conform "true" object-gerichtheid op te slaan en later weer ter beschikking te hebben. Wat gebeurde er met de melding?

Zoals eveneens reeds gezegd, bleek de betrokken medewerker van Z ons probleem niet te kùnnen begrijpen. Zijn houding was zeer behulpzaam, daar lag het beslist niet aan. Hij stelde na enige verwarring en dus tijd voor om de informatie niet in objecten, maar in een externe relationele database op te slaan. Dat was trouwens toch beter, vond hij. Dat idee van data ìn een object, daarvan had hij nog nooit gehoord. Desnoods konden we opslag in een extern ASCII-bestand overwegen. Op de vraag van de systeemontwikkelaar of data/informatie op een èchte objectgerichte manier in objecten geregistreerd kon worden in een toepassing die met de Application Generator apart gezet was, antwoordde de produktspecialist dat dié mogelijkheid sowieso uitgesloten was. Hij zei erbij dat hij dit direct van Y uit de Verenigde Staten vernomen had. Jammer, dacht ik nog eerst, blijkbaar had ik de brochure te optimistisch begrepen. Maar ik vond het al wèl gek dat het allemaal niet kon, voorzover ikzelf tenminste begreep wat objectgericht is.

 

 

obstakels voor begrip

Die opmerkingen over opslag in een externe relationele database zetten mij pas goed aan het denken. Ik bespeurde verschillende golflengtes. Het daagde snel bij mij dat niemand O-plus voor èchte objectgerichtheid gebruikt. Ik bedoel daarmee dat (nog) niemand er een objectgerichte toepassing mee ontwikkelt zoals ik beslist wilde. En inderdaad, dat werd voortdurend bevestigd door de reacties op onze meldingen en vragen.

Het pakket wordt tot dusver blijkbaar uitsluitend gebruikt voor optimalisatie van ontwikkeling van anderszins traditionele SQL-toepassingen. Het uitgangspunt van al die andere gebruikers is dus ergens een relationele database, of desnoods diverse van zulke databases, maar beslist niet de zgn inkapseling. Wat dat is, weten ze waarschijnlijk niet eens. Voor de mensen van Z was dat begrip in elk geval nieuw. Dus, wat ik als extra feature had beschouwd, te weten de mogelijkheid voor "links to most popular SQL databases", was kennelijk voor anderen het doel zèlf om O-plus te gebruiken. Voor mij was dat feature strikt genomen zelfs tegenstrijdig met èchte objectgerichtheid, maar eventueel wèl handig. Het bood een kans om een veranderingsproces rondom informatievoorziening geleidelijk te laten verlopen, dat wil zeggen, met in eerste aanleg wellicht nog veel maar gaandeweg steeds minder toepassingen gebaseerd op relationele databases. Ik beschouw objectbases als de beste oplossing voor vele toepassingen in de toekomst, met opslag in een ondeelbaar image als opstap. Gebruikers van O-plus zijn blijkbaar nog helemaal relationeelgericht. Als dubbelslachtigheid van O-plus zag ik nu dat het pakket onder de noemer van objectgericht juist relationele databases vóórtrekt. Het gevolg is dat èchte objecten zelfs minder kans krijgen. Met andere woorden, gezien vanuit bevordering van objectgerichtheid is O-plus een wolf in schaapskleren. De gefixeerde reacties van Z spraken mij boekdelen, waarmee ik overigens niet wil zeggen dat betrokken medewerkers me bewust misleidden; zij wìsten domweg niet anders vanuit hun perspectief. Ik had er last van, omdat niemand mijn oorspronkelijke probleem met O-plus naar zijn enorme waarde kon schatten.

 

 

extra probleem

Met andere woorden, er was behalve het niet-functionerende O-plus een probleem bijgekomen. Althans, daarvan werd ik mij steeds bewuster. Dat extra probleem bestond natuurlijk allang en het was ruimer gezien mijn probleem ook niet, maar dat van de leverancier en zijn dealer; ik was er nu de dupe van. Niet alleen werkte O-plus niet volgens de eigen folder en verdere documentatie, maar het nederlandse bedrijf dat erin handelt en het pakket ondersteunt bleek niet te begrijpen wat het pakket volgens die documentatie en algemene inzichten omtrent objectgerichtheid verondersteld is te doen. Ik snapte dat extra probleem pas toen ik objectgericht louter als een vlag herkende op een lading die nog traditioneel gericht is op relationele databases. Ik moest medewerkers van de leverancier gaan uitleggen wat objectgerichtheid is, en waar ze er iets over in de documentatie konden vinden. Dat stemde me treurig en steeds bozer. Vooral steeds bozer omdat ik met mijn eigen ontwikkeling maar niet vooruit kon. Het prototype was eerder in mijn ogen reeds gereed geweest. Ik had de opslag van informatie in objecten als onderdeel van het image nooit als een probleem voorzien. Dat het kon, had voor mij vanzelf gesproken. Maar het kon dus niet.

 

 

schade door gemiste kansen

Voor één demonstratie met een geïnteresseerde organisatie had ik voor midden juni reeds een concrete afspraak gemaakt. Na hevig aandringen en rappelleren van mijn kant, bezorgde Z twee dagen eerder eindelijk programmatuur die in elk geval opslag van extra objecten in de ontwikkelomgeving mogelijk maakte. Maar objectgerichtheid van de aparte toepassing bleef totaal ònmogelijk.

Het is pijnlijk om een demonstratie te moeten afzeggen. Deze ene keer heb ik het prototype dus als onderdeel van de ontwikkelomgeving laten zien. Verder ga ik echter niet, ook al omdat dat er uiteindelijk toe zou leiden dat iedere klant de volledige ontwikkelomgeving van O-plus zou moeten aanschaffen om mijn programmatuur operationeel te gebruiken. Dat gebeurt dus niet, daarvoor is het pakket te duur. En ik wil het niet. Ik wil aparte toepassingen, precies zoals het in de folder en documentatie onder de noemer van èchte objectgerichtheid voorgespiegeld is.

Nogal wat andere organisaties had ik eveneens voor mijn prototype geïnteresseerd. Daarmee had ik gelukkig, want het had erger gekund, nog geen concrete afspraken voor demonstraties gemaakt. Maar uitstel stemt ze zeker niet gunstiger tegenover mijn aanbieding. En ik had het prototype echt klaar, ... dacht ik, uitgaande van de specificaties van de gebruikte ontwikkelomgeving. Door uitstel gaan voor mij ongetwijfeld commerciële kansen verloren. Dat stond mij beslist niet voor ogen bij de aanschaf van O-plus en ondersteuning door Z. Jammer.

 

 

wie ondersteunt nu wie?

Ik vind dat ik met medewerkers van de firma Z heel ver ben gegaan om mijn problemen uit te leggen èn ze tegelijk les in objectgerichtheid te geven. Dat is natuurlijk wel te zot voor woorden, als je de leverancier/dealer moet zeggen waar hij iets in de documentatie kan opzoeken. Maar goed, ik had een enorm probleem en probeerde hulp te krijgen van wie volgens mij dat probleem had veroorzaakt. Of van wie tenminste deskundige ondersteuning zou moeten verschaffen. Dáárom spande ik me samen met de systeemontwikkelaar zo in. Ik probeerde de chef van de produktspecialist het fundamentele karakter en dus belang van inkapseling en image uit te leggen door een vergelijking met een relationele database. Ook zèlf weer een aardige man, hoor. Stel, zei ik, dat u mij een relationele database verkoopt. Dan kan ik tabellen samenvoegen met de zgn join-functie, nietwaar? Ik vind de join een wezenlijke eigenschap van een relationele database. Het is dus niet zomaar een fout in de programmatuur als de join-functie niet werkt. En dan heb ik als klant niets aan een leverancier die mij vertelt dat nog geen andere klant eerder op het idee van samenvoeging van tabellen is gekomen. Het is mijn probleem niet, riep ik terwijl ik radelozer werd van onmacht mijn èchte problemen begrepen te krijgen, indien anderen een relationele database nog gebruiken als verzameling van losse ISAM-bestanden. Ik ben niet geholpen als u mij vertelt datzelfde maar te doen. Ik wens over de functionaliteit te beschikken die volgens de literatuur, zelfs en vooral inclusief de meegeleverde documentatie, bij "true" relationeel databeheer hoort. Ik schaf zoiets toch niet zomaar aan? En zo is het precies met objectgerichtheid. Als de ontwikkelaar/gebruiker van een objectgerichte ontwikkel- annex toepassingsomgeving zijn informatie niet in een object kwijt kan, waar in hemelsnaam dan wel? Wat heb ik aan een tekstverwerker waarmee ik misschien nog wel een tekst op schijf kan opslaan, maar waarna ik mijn hele tekstverwerker niet meer kan gebruiken?

Het is, om nog maar een voorbeeld te geven, alsof ik een mountain bike kocht waarvan de lichtste versnellingen niet gaan. "Maar meneer," zegt de handelaar vriendelijk, "er zijn hier toch geen bergen?" Ik wordt boos omdat ik moet uitleggen wat een berg überhaupt is, dat ik dáár mijn tocht gepland heb en dùs vooral over de lichtste versnellingen moet kunnen beschikken.

Is dat een gewone fout, of zelfs een grof schandaal als zoiets niet werkt?

 

 

verloren vertrouwen

Zo is het ook een schandaal dat ik een open brief als middel zie om druk op de leverancier uit te oefenen. Hoe kan iets zo escaleren? De omvang van mijn problemen werd Z, althans de medewerkers waarmee ik sprak, maar steeds niet duidelijk. Nogmaals, waarom is dat erg? Ik kan met mijn ontwikkeling van objectgerichte toepassingen geen millimeter verder. En dàt met een pakket dat mij door de leverancier via folder, demonstratie en handboeken/documentatie nadrukkelijk als een, ik herhaal het citaat uit de folder, "true object oriented programming language and environment" verkocht is.

Natuurlijk kunnen fouten hersteld worden. Er is binnen de ontwikkelomgeving in kwestie conform Smalltalk een functie gedefinieerd die "save image" heet. Dankzij de programmatuurcorrectie werkt dat nu, zij het dat ik die correctie graag meteen gehad had. Van een andere orde is de moeite inclusief het geld die het Y, Z of wie daartoe volgens mij ook maar verplicht is, zal kosten om de Application Generator zó te laten werken dat een image apàrt van O-plus als de oorspronkelijke ontwikkelomgeving verspreidbaar is. Ik vertrouw er ook niet op dat deze fout ooit hersteld wordt. Want de producent ziet het zèlf niet als fout, gelet op de fixatie op toepassingen met externe relationele databases.

Of met O-plus ooit de mogelijkheid komt van aparte toepassingen die ècht objectgericht zijn, interesseert me niet meer. Voor mij is het nú reeds te laat. Ik heb kostbare weken verloren, en daardoor niet te becijferen schade geleden. De systeemontwikkelaar en ik hebben veel tijd en moeite besteed aan wat gewoon had moeten werken. Wat ik verder verloren heb, is het vertrouwen in de firma Z om O-plus, stel dat het zich ooit ècht objectgericht gedraagt, deskundig te ondersteunen. Het is nu zo, dat ik Z les en ondersteuning geef en dat nog wel zonder dat ik daarvoor betaling ontvang. Dat is de omgekeerde wereld.

 

 

mijn redelijke eis

Het is alweer een maand geleden dat ik met de ontwikkeling van mijn objectgerichte toepassingen absoluut geen kant meer opkon. Meteen toen ik hoorde dat O-plus volgens zeggen van de producent nooit èchte objectgerichte toepassingen zou kunnen genereren, heb ik tegen de baas van de produktspecialist gezegd dat ik in dat geval het produkt wilde teruggeven en mijn geld -ontvangen. Zijn reactie was dat in zijn bedrijf creditnota's niet populair zijn. Welnu, dat zijn ze nergens. Mijn verzoek om de aanschaf ongedaan te maken herhaalde ik later tegenover een commercieel medewerkster. Zij zou het met haar baas opnemen. Haar opmerking dat het toch om een technisch probleem ging, boorde ik maar meteen de grond in. Volgens mij is het een commerciële zaak indien een produkt niet werkt conform documentatie èn redelijke verwachtingen.

De reactie op mijn redelijke eis was tot dusver niet bevredigend. Met andere woorden, Z beschouwt de aanschaf als definitief en stort het aanschafbedrag niet terug. Ik leg mij daar niet bij neer. Vandaar een open brief waarvan ik vóóraf een exemplaar direct naar de directeur van Z zond.

In dezelfde aangetekende envelop had ik trouwens een brief gestopt waarin ik na alle mondelinge pogingen het falen van objectgerichtheid in een gegenereerde toepassing tenslotte ook schriftelijk meldde. Ik moest dat volgens artikel 5, in het bijzonder lid a, van mijn overeenkomst met Z binnen een half jaar na aanschaf doen om tenminste een formele poot te hebben om op te staan (en om verhaal te halen). De officiële garantieperiode bedraagt een half jaar. Daarbinnen valt mijn melding ruim. De leverancier garandeert volgens genoemde clausule de correctie van een fout, die daar gedefinieerd staat als afwijking van wat in meegeleverde documentatie als functionaliteit aangegeven staat, binnen een redelijke termijn. Maar wat is hiervoor redelijk? Inderdaad, voor zoiets wezenlijks is vandáág de enige redelijke termijn. Iedere dag later, dus zeker zoals in dit geval enkele weken, heeft een ruïneus effect op mijn bedrijf door totale stilstand van systeemontwikkeling en vooral daarop geënte commerciële activiteiten. Zonder de werkende functie "save image" in een toepassing kun je eenvoudigweg niet verder met èchte objectgerichte ontwikkeling.

De volledige tekst van de brief die ik op 25 juni 1993 aan de directeur van de firma Z zond, luidt als volgt:

Geachte Heer,

Eerder dit jaar sloot ik met u de Overeenkomst Standaardprogrammatuur met contractnummer O-plus/123. Daarin wordt verwezen naar de voorwaarden in de aangehechte Software License Agreement, en die heeft nummer O-plus/123/a.

De standaardprogrammatuur in kwestie, dat wil zeggen de ontwikkelomgeving O-plus, staat de ontwikkelaar niet toe een aparte toepassing te genereren die objectgericht functioneert. Ik beschouw dit als een fout. Deze fout maakt verder werken aan ontwikkeling van zgn èchte objectgerichte toepassingen met O-plus zinloos. Daarmee ben ik dan ook gestopt.

Deze fout is door een medewerker van mijn bedrijf rond op 24 mei 1993 voor het eerst aan de O-plus-produktspecialist van de firma Z gemeld. Daarna heb ook ik overleg met diverse medewerkers van uw bedrijf gehad, oa met dhr [....] en mw [....]. Hun reacties acht ik in het professionele vlak onvoldoende. De fout wordt zelfs niet als zodanig erkend. Het werk met O-plus ligt bij mij dus nog steeds helemaal stil. Nota bene: deze brief is op 25 juni 1993 gedateerd!

Met verwijzing naar artikel 5 van onze overeenkomst O-plus/123/a doe ik hierbij formeel aanspraak op de garantie dat O-plus conform de documentatie functioneert.

In de documentatie staat dat O-plus "true" objectgericht is en dat er toepassingen mee gegenereerd kunnen worden. Er staat nergens expliciet vermeld dat zulke toepassingen beperkt moeten blijven tot verwerking van data in externe bestanden. Daarom meen ik me terecht te kunnen beroepen op algemeen geaccepteerd inzicht omtrent objectgerichtheid.

De termijn waarop ik in formele zin herstel van de genoemde fout verlang is onmiddellijk. Of, praktisch, vrijwel onmiddellijk. Ik zei reeds dat anders verdere ontwikkeling met O-plus zinloos is en dat ik dus niet verder kan. U kunt zich hopelijk een voorstelling van schade maken.

Omtrent de genoemde fout kreeg ik echter expliciet te horen dat desbetreffende functionaliteit niet door de firma Y in O-plus voorzien is. Mijn conclusie: Daar heb ik niets aan. Dan heb ik het verkeerde produkt gekocht zonder dat ik dat kòn weten. Er wordt onder de noemer van èchte objectgerichtheid een valse illusie gewekt. Ik wil daar niet de dupe van zijn, laat staan van blijven.

Mijn voorkeur gaat daarom uit naar onmiddellijke ontbinding van onze overeenkomst(en). Dat komt omdat mijn vertrouwen in zowel O-plus als produkt voor èchte objectgerichtheid, als de firma Z als serviceverlenend bedrijf geschaad is.

Ik meen overigens dat het in deze omstandigheden ook voor Z raadzaam is om onze overeenkomst(en) zonder verdere escalatie te ontbinden.

Als voorwaarde voor ontbinding stel ik voor dat Z mij z.s.m. de volledige aanschafprijs terugbetaalt. Ik vind dat alleszins redelijk omdat ik slechts nadelen van het produkt ondervonden heb, en nog steeds ondervindt.

Ik trek dan mijn formele aanspraak op de garantie in en zend op mijn beurt de volledige documentatie en diskettes retour.

Ik besprak ontbinding en teruggave reeds met dhr [....] en mw [....] maar zonder positief resultaat. Het laatste voorstel van mw [....] kwam hedenmorgen. Dat luidde om "vanwege volle agenda's bij Z de zaak over de vakantie te tillen." Zulk uitstel is voor mij onacceptabel. Denkt u nog maar eens aan mijn schade. Ik antwoordde dat ik u heden nog de "zaak" met een aangetekende brief zou voorleggen. En dat is dus déze brief.

Ik beklemtoon dat ik de problemen met O-plus hoog opneem. Ik vind het een schande dat uw bedrijf het belang van mij als klant zó negeert en zal, indien u de koers van uw medewerkers voortzet, niet aarzelen andere wegen te zoeken om tenminste mijn geld terug te krijgen. Ik denk dan oa aan inschakeling van organisaties zoals COSSO, Consumentenbond en aan publiciteit langs mij bekende wegen, bijv. in [....]. Nogmaals, ik neem het hoog op dat er zo met reële verwachtingen van klanten omtrent programmatuurfunctionaliteit en service gesold wordt.

Wat uw eigen belang betreft, merk ik op dat mijn klanten niet (meer) in O-plus als ontwikkelomgeving voor èchte objectgerichte toepassingen geïnteresseerd zijn.

Behalve met deze brief heb ik mijn klacht tevens in de vorm van een zgn open brief gevat. Een afdruk van deze open brief zend ik hierbij ter vóórinzage toe. U gelieve die tekst tevens als formele bijlage bij deze brief te beschouwen, omdat er mi uitgebreid en duidelijk in geschetst staat wat de fout inhoudt.

Uw spoedige reactie is mi aan de orde. Uw schriftelijke reactie ontvang ik daarom gaarne vóór 5 juli a.s. U kunt ook het aanschafbedrag inclusief btw van O-plus direct op mijn rekening terugstorten.

Hoogachtend

 

 

onaanvaardbaar risico

Het is duidelijk dat ik sinds 24 mei jl niets nieuws met O-plus ontwikkelde. Het risico vind ik eenvoudigweg te groot. Goed, dat ene punt van opslag binnen de totale ontwikkelomgeving is dan opgelost. Het fundamentele punt van de aparte toepassingen echter niet, en waarschijnlijk nooit. Ik ben bang geworden voor andere verrassingen die mij ernstige schade gaan berokkenen. Ik heb de wolf in schaapskleren herkend. Moet ik bij ieder probleem eerst Z gaan uitleggen wat er aan de hand is? Qua ondersteuning door Z blijkt dat pakket alles met relationeelgericht en weinig tot niets met objectgericht te maken te hebben. Van Y ken ik slechts enige documentatie en daarin wordt juist de èchte objectgerichtheid van O-plus geafficheerd. Maar waarom werkt het pakket dan niet zo? Zoek het onderling dus maar uit. Ik doe niet meer mee. Want als het opnieuw escaleert ...? Nee, ik schrik van het vooruitzicht om voortdurend open brieven te schrijven. En dan heb ik nog steeds niet de toepassingen die ik wil. Ik heb wel iets beters te doen, dat wil zeggen mooie toepassingen maken die wèl ècht objectgericht zijn.

Ik moet voorts nog steeds maar hopen dat de firma Z begrijpt dat ik een zéér ontevreden klant ben die op enigerlei wijze tegemoetgekomen wil worden. Dan vind ik na alle ellende nog het minste dat ik het produkt kan teruggeven waarbij ik op mijn beurt de aanschafprijs volledig terug ontvang. Zo gaat het tenminste in iedere winkel van enig niveau. En terecht, want anders komen de betere klanten nooit meer en/of doen ze nooit een gunstige aanbeveling.

 

 

hoe verder?

De publicatie van de open brief zegt het al. Mijn geld ben ik nog steeds kwijt. De schade die ik lijdt, zou alsmaar toenemen als ik geen ànder gereedschap heb. Ik heb het, ik herhaal het nog maar eens, niet over zomaar een ongemak dat O-plus oplegt. Nee, het werkt gewoon helemaal niet meer zodra met een aparte toepassing informatie in objecten toegevoegd wordt.

Inmiddels heb ik ontwikkeling tòch weer opgepakt. Als dat niet met O-plus kan, dan met een àndere, betere ontwikkelomgeving. Dat alternatief was dankzij een prettige commerciële benadering van een ànder bedrijf spoedig beschikbaar.

Als Z nog veel langer wacht met het teruggeven van wat ik als mijn geld beschouw, vind ik het niet meer dan normaal dat ik tevens de prijs van van het vervangende programmatuurpakket vergoed krijg. Dat lijkt dan tenminste weer op service. Als Z dat onmiddellijk doet, praat ik verder niet over verdere schade en wat extra inspanningen gekost hebben om opnieuw met een ànder pakket te beginnen. Ik heb er dan genoeg van.

Omdat ik helemaal niets meer met O-plus doe, heb ik de volledige documentatie en alle diskettes al op een stapeltje verzameld, klaar om naar Z terug te sturen. Zolang dat bedrijf me echter geen bevredigende regeling voorstelt, beschouw ik onze overeenkomst nog als geldig. Op grond daarvan eis ik met verwijzing naar documentatie en algemeen geaccepteerde kennis over objectgerichtheid wèl door. Dan blijf ik stáán op onmiddellijk herstel van fouten en daarbij behorende ondersteuning. Ik vind dat niet leuk, helemaal niet, maar als een leverancier en/of dealer blijft weigeren het belang van zijn klant serieus te nemen, zie ik geen ander middel om ooit tòch serieus genomen te worden. Het gaat me daarbij zeker óók om het geld, zelfs vooral, dat geef ik direct toe. Voor O-plus heb ik duizenden guldens betaald, ik zei dat al. Dat is zeker veel geld voor gereedschap om op een personal computer een prototype te ontwikkelen (inmiddels is de prijs trouwens alweer beduidend hoger). Als ik niets aan het pakket blijk te hebben, en ik misleid ben door valse informatie en/of foutieve programmatuur van de leverancier, wil ik dat geld graag terug. De firma Z of, algemener gezegd, de firma Y heeft het met O-plus immers niet 'verdiend' en ik zit daardoor in de problemen.

Behalve dat geld is er het onrecht waartegen ik me verzet. Ook dáárom heb ik de moeite genomen om een open brief te schrijven. Misschien ben ik dat geld definitief kwijt, wie weet, omdat de firma Z geen commercieel fatsoen kent en op formele gronden zelfs via een rechtsgang niet tot terugbetaling en eventueel schadevergoeding gedwongen kan worden. Dankzij deze open brief kunnen tenminste anderen met hun geld hopelijk iets nuttigers doen dan het weggooien naar iets dat niet is wat wèl op het etiket ervan staat. Dat heb ik graag voor bevordering van èchte objectgerichtheid over.

 

 

tenslotte: kwaliteit van gereedschap èn ondersteuning

Oh ja, waardoor heb ik O-plus als ontwikkelomgeving vervangen? Dat is cOncurrent/Smalltalk. Natuurlijk werkt daarmee opslag van informatie (data) als onderdeel van objecten: het image. We praten toch over èchte objectgerichtheid! Natuurlijk is er desgewenst sprake van een image in termen van een aparte toepassing. Daar struikel ik met mijn ontwikkeling niet meer over. Het pakket kost overigens ook veel geld. Ik ga dat bij uw concurrent kopen. Dat zijn op zichzelf ook aardige mensen, net zoals bij Z, maar met het professionele voordeel dat zij veel over objectgerichtheid weten. Daar is makkelijk op niveau mee te communiceren.

Het pakket cOncurrent/Smalltalk is trouwens afkomstig van ABC. Dat is de bakermat van Smalltalk en daaraan verwante objectgerichtheid. Dat klopt dus. En zo niet ... dan krijg ik geheid mijn geld terug.

Het verschaffen van voorinzage van deze brief werkte dus. Ik was ook echt heel boos. Wie zich netzo benadeeld voelt, heb ik hopelijk tot actief verzet geïnspireerd.

Ik zei al dat die directeur deze zaak tenslotte adequaat behandelde. Zijn voorwaarde voor teruggave van het aanschafbedrag was een gesprek. Dat was precies waaraan ik ook behoefte had. Omdat ik met mijn conceptbrief mijn kritische boodschap al gegeven had, verliep onze ontmoeting plezierig en opbouwend. Of ze daar inmiddels meer van objectgerichtheid begrijpen, weet ik trouwens niet. Als ik die aardige directeur ooit weer ontmoet, zal ik hem ernaar vragen.

 

 

© 1993, webeditie 2002.