Door Anoniem: Door Anoniem: Waarom zou je iedere tien jaar een upgradeslag met al je code moeten doen als je ook vijftig+ jaar lang gewoon dezelfde code kan gebruiken?
Niet iedere 10 jaar, het is één keer gebeurd met een transitieperiode van ruim 10 jaar. Dat is iets volkomen anders.
Hebben ze beloofd dat ze nooit meer backwards-incompatible veranderingen doorvoeren? Ik weet dus niet hoe volkomen dat anders gaat zijn. En dat weegt wel mee in de rekening.
Nou, dat is verandering die arbitrair door de python-jongens erdoor gedrukt wordt voor hun eigen gemak.
Niet arbitrair, niet voor het eigen gemak. Als ze voor gemak kozen hadden ze niet de moeite genomen om een programmeertaal te ontwikkelen. Dat is niet triviaal, weet je?
Programmeertalen zijn gemaksvehikels bij uitstek. Ondanks de enorme berg moeite die heel veel mensen gestoken hebben en nog steeds steken in het ontwikkelen van allerlei programmeertalen.
De afweging was om een aantal achteraf gezien ongelukkige ontwerpkeuzes uit 1.x en 2.x te laten vervallen of Python in de toekomst ermee te blijven belasten. De inschatting om voor het eerste te kiezen was dat de nadelen op kortere termijn niet op zouden wegen tegen de voordelen op de langere termijn, ook voor de gebruikers van de taal. Dat je het niet eens bent met die keuze, en zelfs dat de conversieproblemen groter zijn dan men had ingeschat, betekent nog niet dat het een keuze voor het eigen gemak was.
Dat laatste dus overduidelijk wel, maar laten we het terzijde schuiven. Het punt was dus inderdaad dat ze dat vooral voor en vanuit eigen perspectief gedaan hebben. En dat past niet altijd bij het perspectief van de eindgebruiker. Ook al staat het er wat gechargeerd, je kan dat niet zomaar wegwuiven.
Dus als lange termijn belangrijk is voor je organisatie, dan is dat een punt tegen python (en nog veel meer andere taaltjes ook; php, ruby, node.js, allerlei fly-by-night andere talen en taaltjes). Als je nu concludeert dat er maar verrekte weinig taaltjes overblijven na dat filter, dat is correct.
Als je het over schuld en boete hebt, de schuld ligt bij de programmeur-knutselaars, en die leggen de rekening zonder blikken of blozen bij de eindgebruiker.
Als je het over rekeningen hebt moet je je eens afvragen of die eindgebruiker wel een betalende klant is van de Python Software Foundation.
Dat is alleen maar relevant als je het over betalende klanten wil hebben. Ook als er niet betaald wordt zit er wel een prijskaartje aan het gebruik. Het is een veelgebruikte dooddoener om te zeggen dat als je niet betaalt je dus niets mag zeggen, maar dat is niet zo. Je kan vanalles zeggen maar je hoeft niet te verwachten dat anderen onbezoldigd moeite voor jou gaan doen. Dat is wat anders. Tenminste voor jezelf mag je zeker wel de afweging maken of het complete plaatje van jouw kosten, ongeacht wie je ze betaalt, opwegen tegen de baten voor jouw gebruik.
Wat voor relatie denk je eigenlijk dat die met gebruikers van Python hebben? Python is een standaard voor een programmeertaal, en CPython is de referentie-implementatie van die standaard.
Dan zorg je toch dat je de versie twee van die referentie-implementatie betaald nog langer in de lucht houdt, eventueel gecomplimenteerd met een betaalde overzetdienst? Lijkt me een gouden combinatie voor een consultingbedrijfje.
Het is wel linke soep: Doe je het te graag, lijk je mensen jouw betaalde diensten in te drukken, loop je kans dat ze massaal en heel hard weg gaan rennen. Dus doe het met stijl. Maar de kans ligt er.
Je hoeft maar een klein beetje aandacht te hebben besteed aan hoe CPython wordt ontwikkeld om te hebben opgemerkt dat het eenvoudig houden van de interpreter en runtime een hoge prioriteit heeft. Als jij wilt dat Python2 langer ondersteund wordt of Python2 en Python3 in hetzelfde interpreterproces kunnen draaien dan vraag je om een forse toename van de complexiteit, wat onvermijdelijk grotere inspanning en hogere kosten oplevert voor de Python Software Foundation.
Mischien is dat omdat ze een stel prutsers zijn die de zaken niet eenvoudig hebben weten te houden?
Je hebt wel gelijk dat een hele hoop complexiteit meegezeuld wordt als gevolg van eerdere beslissingen, maar dat is nog geen vrijbrief voor wat je besluit wel mee te torsen, noch dat die latere beslissingen over wat wel en niet mee te nemen valideert.
Maargoed, ik hoef niet zonodig 2 en 3 in hetzelfde proces. Belangrijker was hier de opmerking dat als interpreter-taaltje je altijd afhankelijk bent van de interpreter. Een eenmaal gecompileerd C-programma heeft die afhankelijkheid niet. Dat scheelt vrij enorm in de complexiteit van het (deel van het) mechaniek dat werkelijk in productie belandt.
Jij klaagt dat die de rekening zonder blikken of blozen leggen bij de eindgebruiker die vermoedelijk in de meeste gevallen geen cent bijdraagt aan de ontwikkeling van Python. Heb je door dat jij zonder blikken of blozen rekeningen bij de ontwikkelaars legt zonder een cent ervoor te betalen?
Nee, de schuld leg ik zonder ze te betalen bij de ontwikkelaars. Of zelfs zonder python te gebruiken.
(Voor de volledigheid: Ik gebruik (een steenoude) python (2) zo nu en dan, maar niet op zo'n wijze dat ik niet meer zonder kan. Moet ik die gedwongen verhuizen dan is de kans groot dat ik een ander vehikel dan python versie 3 pak.)
En jij ook.
Kul. Ik doe niets anders dan een mening erover hebben. Ik ben totaal niet betrokken bij de ontwikkeling van Python, ik gebruik het alleen al vele jaren voor diverse softwareprojecten, die ook inmiddels al jaren geleden zonder noemenswaardige problemen naar Python3 zijn omgezet.
Die houden we even aan.
Waarbij de definitie van "vuile diesels" volstrekt arbitrair blijkt te zijn, en niet gebaseerd op wat er werkelijk uit de uitlaat komt. Dat laatste detail vind ik kwalijk en laakbaar. Kijk niet naar de brandstof en kijk niet naar het jaar waarin het ding volgens de papieren gebouwd is. Kijk naar wat er werkelijk uit de uitlaat komt.
Nee, zet al die oordelen opzij en kijk naar het praktische feit dat die auto's door veel steden geweerd worden. Al je tegenargumenten veranderen niets aan dat feit, en als het je vermogen om als bedrijf te functioneren beïnvloedt ben je heel dom bezig als je je hakken in de grond blijft zetten tot je in de situatie zit dat je je werk niet meer kan doen. Dat bedoel ik met oogkleppen op hebben. Je laat zien dat je er behoorlijk last van hebt.
Dat is veel meer een vooroordeel van jouw kant. Je verbindt namelijk mijn analyse van wat die "veel steden" doen en mijn waardeoordeel over hoe zich dat tegenover het idee van de rechtsstaat verhoudt aan acties cq. gevolgen die je er zelf bijverzint.
En ja, dan moet je dus ook benzineautos en zelfs hybrideautos meenemen. En bussen, vrachtautos, invalidekarretjes, motorfietsen, brommers, scooters, noem-maar-op. Bootjes en gensets ook. Alles met een uitlaat.
Amsterdam weert oudere scooters en vervuilende vrachtauto's. Bussen in Amsterdam rijden op gas of elektrisch. Met scheepvaart is men ook bezig, men wil bijvoorbeeld de cruise terminal uit het centrum weghebben. Je neemt aan dat men inconsequent is maar als je eens naar de feiten kijkt blijkt het beeld heel anders te zijn. Hoe andere steden het doen weet ik niet, ik houd niet alles en iedereen in de gaten.
Nou, hun invulling is dus wel inconsequent, zeker zodra je andere steden erbijpakt, en veroorzaakt een wirwar aan regels waar je als burger maar tussendoor te fietsen hebt. Maar dat je dat niet ziet omdat je moeite hebt met voorbij de A10 te kijken past ook goed in de rest van wat je schetst.
Een voorbeeld van hoe je het wel consequent doet: Had die Duitse Euro-vignetten overgenomen. Veel mensen hebben die al op de auto, welke je moet hebben staat gewoon in het kentekenbewijs, plakkertje erop en gaan. En die euro{1,2,3,4}-normering heeft een veel directere relatie met wat er uit de uitlaat komt dan het bouwjaar.
Maarja, dan kom je met feiten in deze symboolpolitiekdiscussie. Dat moeten we niet hebben met z'n allen, want hoe kunnen de steden nu nog tegen elkaar opbieden door steeds latere bouwjaren te kiezen? Want deugdrammen is zo te zien het enige punt van de hele exercitie. Feiten? Pfft, de idee!
Maar die teller voor wat een redelijke overgansgperiode is hoort niet bij de eerste alpha te gaan lopen. Dus ik accepteer "het is nu elf jaar na 2008, dus ruim voldoende tijd gehad" niet als goed argument.
Die teller gaat lopen op het moment dat een einddatum voor support wordt afgegeven.
En was dat in 2008? Zo niet dan is dat geen argument om te zeggen "maar je had al vanaf 2008 kunnen weten dat..."
Als jij ervoor kiest zo'n mededeling te negeren omdat op dat moment de nieuwe software nog niet goed genoeg is en vervolgens ervoor kiest het de tien jaar na die mededeling te blijven negeren terwijl die software inmiddels wel degelijk is dan doe je jezelf de ellende aan waar je nu over kankert. Kom eens uit die kankermodus en kijk naar wat er gedaan moet worden.
Negeren en nog niet kunnen beginnen met migreren want het alternatief is nog benedenmaats zijn verschillende dingen.
"Gewoon de handen uit de mouwen" kan soms wel, maar soms ook echt helemaal niet, zoals verschillende commentatoren hier al opgemerkt hebben. Dat opmerken is geen kankeren, het is realiteitszin. En precies waarom "change management" zo ontzettend belangrijk is.
Ik heb er niet op gelet, maar zulke achterhaaldheids-schattingen komen van rooskleurigkijkende proponenten en gaan over de populairste publiekelijk-beschikbare dingen. "De ene die je net nodig hebt" hoeft dat niet te zijn, maar kan bijvoorbeeld bedrijfsintern zijn, of iets anders, maar is de ene die net telt voor jouw specifieke project.
Dat krijg je als je geen rekening houdt met de ontwikkelingen. De bedrijfsinterne component moet gewoon net als je andere eigen software geconverteerd worden - of zijn. Voor componenten van leveranciers die hardnekkig op 2.x blijven zitten heb je als je het goed doet al lang die leveranciers aangesproken en als er geen beweging in zit alternatieven onderzocht.
Dan krijg je dus dat "goed blijven uitkijken wie wat nu weer anders doet" bijgeteld moet worden bij de moeite die het kost om je berg ICT-code in bijgewerkte staat te houden. Makkelijk een dagtaak, en dus een argument voor complexiteitsreductie.
Het meervoud van "anecdote" is niet "data". Maargoed, een enkele codebase, waar dus tijdig iemand op gesprongen is en het kostte nog steeds anderhalf jaar. Dat kun je zien als best case. Maar dan is er nog altijd een enorme "long tail" van minder goede cases. Die allemaal als "met oogkleppen op" wegzetten is niet heel productief.
Waarmee je je kop in het zand steken tot norm verheft.
Nee. Dat is een stukje realiteitszin.
Voor mij is dat gedrag niet productief. Productief is het om op tijd te reageren op aangekondigde veranderingen zodat je niet klem komt te zitten. Je kan zwaar de schurft in hebben over dát die veranderingen eraan komen, maar met je hakken in het zand zetten los je dat niet op.
Dat laatste verzin je er zelf bij. Jou idee van "productief" is behoorlijk arbeidsintensief, dus kostbaar, en lang niet altijd haalbaar. Past nog in de "start up" waar 100+ uur per week werken de norm is, maar in een grote organisatie met veel (oude) code ga je dat gewoon niet halen. "Gewoon heel hard werken" kun je dus ook niet als redelijke oplossing voor alle gevallen aannemen.
Die conversie laat zien dat het kennelijk kan, en daar was tien jaar echt niet onvoldoende. De code waar ik mee te maken heb in Python is niet van die omvang, en ik heb gewoon met enige regelmaat gecheckt of externe libraries waar mijn code van afhangt al voor Python3 beschikbaar waren, en of er equivalente libraries waren waarop overgestapt kon worden. Met die benadering was ik in 2015 al volledig over.
Jij wel, mooi man.
Geen Python, maar ik heb zelf in een ver verleden een conversie van een grote code base (honderden mensjaren ontwikkelinspanning) naar een ander besturingssysteem en andere compiler meegemaakt. Zowel de andere compiler als verschillen in het besturingssysteem en aangeroepen aangekochte software leverden, net als nu met Python, de noodzaak op in alle sources aanpassingen te doen. Daar is toen een eigen conversieprogramma voor gemaakt, dat gaandeweg tijdens de conversie werd uitgebreid en bijgeschaafd op basis van wat men tegenkwam. Die hele conversie is toen met succes afgerond in ongeveer driekwart jaar, en het team dat de broncode converteerde bestond uit slechts drie mensen, een fractie van de ontwikkelafdeling van dat bedrijf.
Er bestaan vele bedrijven opgemaakt uit schoolklassen vol met computerprogrammerende mensen waar je in het hele bedrijf geen drie zulke mensen tegen zult komen. Een hoop van die bedrijven zou zelfs niet eens in staat zijn zulke mensen te headhunten. Oftewel, heel mooi dat het jullie wel gelukt is, maar dat is een in het verleden behaald resultaat dat geen garantie is voor de toekomst, of zelfs maar zonder meer reproduceerbaar elders.
Je kan het allemaal zo groot en zo erg mogelijk maken en daar al je energie aan verspillen, maar ik denk dat het in de meeste gevallen gewoon goed te doen moet zijn.
Dat denk jij. Ik denk dat je daar iets te makkelijke aannames over doet.