Oral History of Guido van Rossum, part 1

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

Thanks for sharing , watching now.

👍︎︎ 3 👤︎︎ u/franchyze922 📅︎︎ Jul 26 2018 🗫︎ replies

this might sound rude, but is there a transscript of this so i can read only the parts about python?

👍︎︎ 3 👤︎︎ u/sai_ismyname 📅︎︎ Jul 27 2018 🗫︎ replies

I enjoy the oral history series, really feels more personal than reading a transcript.

My favourite was interviewing Avie Tevanian, one of the original Mach kernel developers who went to work at NeXT then Apple.

What are some other must watch in the series?

👍︎︎ 2 👤︎︎ u/ydna_eissua 📅︎︎ Jul 27 2018 🗫︎ replies
Captions
so we'll start at the beginning where and when were you born I was born in The Hague in the Netherlands in 1956 and tell us about your family your parents what were their occupations do you have any siblings I was the eldest of three my sister was born two and a half years after me my broader ten years later my parents my mom was trained as a schoolteacher once she got married she quit her job or maybe she was asked to quit her job my dad was an architect I would say they were both born in the Netherlands in 1931 the most intense experience in their lives was World War two and all through my childhood and young adulthood I I just remember always sort of hearing anecdotes and stories and details and and on sometimes just attitudes about what happened then and Germany and Germans so did they live through the occupation day we'll both lived through the German occupation from 1940 to 1945 and I've seen your family is Dutch goes back generations yeah that we don't have sort of we we just came from nowhere basically my I think my mother's family lived in the north of North Holland her dad was a small dairy farmer my dad grew up in a suburb north of Amsterdam where his dad has had an office job what sorts of values were you raised with did politics or religion or ethics play an important part in your family politically my parents leaned left my mother a bit more than my dad my mother was a pacifist and that influenced me a lot my dad was more like middle-of-the-road labor I think or the Dutch version of that at the time religiously they were unreligious I would say there were atheists but they raised us with respect for other people's religion ethically we yeah that sort of being moral doing the right thing was very important to them but I undoubtedly though some of those values were shaped by their experiences in the war correct absolutely yeah yeah I don't know how much to add there it's I think in in in the Netherlands from the 50s to the 70s that was just a very common story I mean the war was this big shadow over every aspect of society I mean people were divided in like who was was good during the war who was bad that was that simple meaning who had collaborated who had collaborated versus who was in the resistance and of course the majority of people did neither but it was sort of it was was considered as a very black-and-white you were either on this side or on that side and it drove Dutch politics you describe your childhood it was pretty uneventful a very sort of middle class my parents sort of started out relatively poor but with relatively good education they had both finished high school and done some follow-on education so my mother had trained to be a teacher my dad oh he might there's one detail I forgot my my dad refused to join the army and as a result he spent some time in prison and he spent some time in various war camps sort of making up for his his opinion on that in that area so your dad was also a pacifist he said that your mother was and he sort of yes yes he sort of I did I guess at the time the Dutch political spectrum was divided in all these different political parties where there was the sort of the labor in the middle and then to the left of it word ever smaller and more left-leaning parties one of which was sort of stated to be a pacifist party and so but but yeah in in sort of in the general sense my parents both were very much sick and tired of the violence of the war and and sort of took a stance yeah so where how old were you when when he went to prison I wasn't born yet that all happened before I was born then when I was born I think he was he was doing taking evening classes to become a sort of a licensed architect and he had a day job as a draftsperson at an architectural firm and so gradually we moved to a different city we moved from the first we moved to a different house in the hague which sort of when I was born there was this like they rented two rooms in a kind of a shabby neighborhood and then they moved to a flat in a newer neighborhood then they moved to a different city where my dad got a better job and an architectural firm then he had sort of got all his papers and he was quite good at his work and sort of things just gradually got better to finally they bought a house then they bought another house and I went to university my sister went to music school the conservatory my little brother went to art school so you guys did pretty well we eventually yeah not not like extravagantly well but we sort of we were we were sort of good middle-class people with no sort of real connections or that it was like it felt like weekly one generation before we came from the mud what was your neighborhood like or at least the various yeah it sort of that well it was pretty consistent it was all like either row houses or four-story apartment buildings that was sort of the de neige what the neighborhood where I grew up I think when I was in high school at some point we moved much closer downtown and we lived in an older neighborhood but it was still like all rowhouses that's that's sort of how most neighborhoods in the Netherlands are organized and to talk about our your hobbies and interests when you were a kid well the first thing I remember was when I was around ten I got an electronics kit I think for a birthday and I was super excited about that and all through high school I sort of was an electronics hobbyist and I was I was not very good at soldering actually but I was good at designing circuits so I sort of went in the direction of evermore complicated digital circuits that was my main hobby you know I I had a somewhat related hobby which was building mechanical models but the electronics I think I enjoyed more I didn't really do sports didn't do a whole lot of outdoor stuff although our parents always dragged us out to various parks for her walks and hikes on weekends and bike rides what sorts of literature or media did you consume we watched a moderate amount of TV my I think my parents were initially when we were small they were pretty against it and there were like two channels in the Netherlands eventually I think at at some point my dad God got really old TV that one of his colleagues was throwing out but it still it still worked but I only received one channel we read a lot of books Dutch literature foreign literature always in Dutch translation that and well we listen we listen to music on the radio yeah it's sort of I developed my musical tastes listening to - sort of I didn't know yet these days you would call it alternative rock or something on Dutch radio but again there were only a few radio channels and a lot of the music was was like horrible popular music I thought about it at the time a lot of lot of this sort of interesting music came from the United States were you into science fiction at all not really I remember reading very occasionally reading some science fiction stories but at the time it was not really a thing could you describe your experiences at school I was always I was good at learning all the material whether it was languages or arts or science or math all sort of was sort of they came easy I did my homework very quickly there was a always aced all the tests I didn't have a lot of friends and I mean it was very nerdy myself the only people who sort of wanted to hang out with me were the other nerdy kids not the other the other kids who were all also sort of at the top of the class somehow oh so so so meaning other kids that were into nerdy interests like you but not necessarily yeah over there I remember hanging out with a few as other kids who were electronics hobbyists and but I sort of socially I I didn't have a lot of friends did you have any favorite topics or teachers I really was I mean I think I loved my science teachers most and especially my physics teacher my math teacher was also very good I also loved Dutch literature any topics that you didn't like sadly I couldn't get along with history very well so I dropped out as a subject and I think of all the sciences chemistry interested me least because the way it was being taught was like memorizing large tables of apparently randomly chosen numbers and I sort of that was enough my skill my skills were always like given two basic rules I could derive everything else I needed to solve a problem from just just from from basics but the sort of the basics it the way that that works in chemistry sort of didn't work for me hmm so then you started at University in University of Amsterdam that's right in what year in 74 uh-huh and given what you just told me about being able to derive things it sounds like you were natural to go into mathematics yeah I think for for a few seconds I played with the idea of doing something completely different like studying Dutch literature I'm very glad I didn't do that I would probably be terrible at have been terrible at that I sort of I didn't know much about what it was to to study any particular subject at university in the Netherlands they make you choose a major when you sort of enter so it was like you could choose to go study chemistry or physics or math or there were five other sort of scientific branches so I chose math because I enjoyed the topic I think my physics teacher was a little disappointed in the end it turned out that the first year was was mostly a repetition of the math I had already sort of mostly understood during high school and and during high school had been working ahead so I had had done like every possible math topic that was taught in in my high school but after that first year it turned out that that their real math I wasn't particularly good at and I did I think there were some great teachers at that university and some super cool topics being taught and I couldn't keep up I remember something about a particular form of group theory and I knew other students who were like oh you gotta go dude graph theory of group theory and I was like it was went way too fast and I suddenly realized I didn't have the skills to sort of keep up with those topics but in the meantime starting almost from my my first month I entered the math department I had been learning to program because they they had like what I think one of the first year undergraduate courses was programming in Pascal and that was a math course at that it was sort of taught by one of the professors in the math department I believe but it was taught I think there were like 300 people or so oh so it wasn't exclusively for math majors it was for I don't think so yeah this is this is like really long ago and then sort of I've got to only go few memories but I I do remember that there was a programming course and Pascal was the language but I also remembered that there were other languages that were also accessible mainframe and I sort of I learned Algol 60 basically just by going to the library and borrowing the reference manual just sort of studying it there and so you mentioned that you know you would only had sporadic access to the mainframe prior to taking that first job so it was only in that that initial class and then maybe some other the way it was done was as each student was given an account and the account had a certain value and you would sort of you would use a card punch to write your program and you would combine that with a special card that identified your account and then your job you you gave you your deck of punch cards to the computer operator and they put it in a computer and it entered in something to some kind of cue you know at some point your job was run and then the printout with the errors came out and it was like a system of cubby holes and numbers where you would get your output and the Pascal compiler took like a fraction of a second to compile my little program and tell me what was wrong with it so that that that that student account was worth probably hundreds of little bad jobs like that so during a semester I I could experiment quite a bit and sort of learn learn a lot and sort of it was just completely up to me do I try to learn Pascal Algol Fortran and I sort of I hung out in in the basement where the sort of mainframe access was enough that I met other students who had similar interests including more sort of more senior students who had more experience and some people who had part-time jobs there I think that sort of prepared me for for that job I got myself in my third year okay so you were already hanging out in the in the basement yeah pewter Center even before you got the job sort of hang out with those people like yeah that nerdy crowd okay we were we were exchanging programming tips and and sort of we were always debating well Algol versus Pascal or Algol or Fortran which is better and all the physicists said Oh Fortran is much easier and the mathematicians amongst the programmers said no Algol 60 it's it's it's designed with block structure in it to her simple language debates like that and so you were part of the alcohol cypher yeah because you were from the math side I I naturally sort of sided with the alcohol people oh that that's interesting so um I don't know exactly where Dykstra was but did you ever meet him room yes I did not yeah I think by then he had moved to Eindhoven where he worked for a different University and I didn't actually know the names of any of the luminaries and I sort of I read the like the Algol 60 reference manual which was actually that was the original sort of language definition actually it was very formal very dry it had like I don't know twelve or twenty authors on the cover but I didn't recognize and of those names and also didn't none of them stood out the only language where I remember the name because it was like one or two people was the Pascal manual where the sort of the manual was much thicker book because it was actually an introduction to programming and an intern certif more explanatory rather than just a language definition and so from that I remember Kathleen Jensen and Niklaus Wirth and I assume that Kathleen Jensen was like the sort of the educational person and Werth was the sort of language design genius eventually I think in 89 I think I attended the talk given by Werth in Palo Alto at the time what you know what sort of attracted you to alcohol instead of Pascal which was what you had been taught first ah actually I think I have to revise what I said before a little bit I think maybe my first year I learned alcohol and my second year somehow suddenly the departmental staff were recommending students learn Pascal instead so I I can't say I prefer dalbello for Pascal I think it was more the other way around I mean I had never really sort of liked the Fortran side I mean it sort of had tried it a little bit but I sort of Algol 60 was much more sort of the language I initially chose but then once I discovered Pascal I sort of there were a number of little details in Pascal and maybe it had to do with sort of how the language was expressed on punched cards it was still mostly punched cards that just felt like oh this is much easier goes in Algol 60 you have to type begin end and every time you type begin at least in the version of the compiler we had you had to type double quotes around it and I think on an IBM card punch that's even assertive and somewhat awkward position so in Pascal they just did away with the quote source drops of I think they were called around the reserved the the keywords of the language and it was a compromise because it could it meant you couldn't have a variable name begin and the algo people were always very proud that they could have sort of that key words were not impinging on the variable names and function names and and so on that turns out that is absolutely not a problem and Pascal was just the first language where I sort of encountered that little language design detail so describe your university life well I think the first two years I actually lived at home and I commuted to university by train there was like a fifteen minute train ride Plaza I don't know ten minute bus ride on one side and a fifteen minute bike ride on the other or something I didn't have much of a university life except that during lunch break I I often hung out in the basement where the mainframe was or the access to the mainframe was the actual main wood frame was across town it was a sort of infamously ugly I don't know 15 story building in a fairly historic part of Amsterdam I think the staff of the math department didn't like their location very much but but for me I that was all I knew and Amsterdam was a big city and half two years my dad said oh you're old enough to live on your own and I moved to a dorm and after year I moved to a dorm that was in the center of town and that's where I stayed until I graduated so my I don't know I I had friends not lot I had some friends outside University I had joined joined a club that sort of popularizes study of nature like ornithology bird bird-watching identifying plants environmentalism I had a lot of friends in that deaf community and sort of every Sunday we would go on a bike ride and sort of spot the birds and look at the plans and then in summer they were like I think there were some summer camps but I remember from University well classrooms the best part was actually after I took that job I realized that there was a second University in Amsterdam where the computer science program was much better that I think the department was led by Andrew as Tanima and he had a bunch of other good teachers and he was raising his own crop of PhD students and it turns out that sort of the computer classes the programming classes I got at the University of Amsterdam in the math department were sort of a pretty haphazard collection of topics that didn't interest me I mean sometimes the topics interested me I mean their dirt I mean I remember one semester we were all learning algal 68 and the teacher was super excited but other times it was like numerical programming calculating what the error is after a certain set of matrix operations and I was not interested in anything involving floating-point numbers basically but Tenenbaum or his group taught topics like operating systems databases networks and languages I believe yeah Tannenbaum himself did a class where he taught like seven non-mainstream programming languages and that was all I just soaked that up and and somehow the two universities had an arrangement where students could just take classes at the other university for four points hmm and Tenenbaum is the person who created the ministry yes that's that Linux was eventually based on we're kind of the minik minik is is known from a major sort of spat between Tannenbaum and Linus Torvalds the two were actually independent and very differently oriented sort of descendants from UNIX and Tannenbaum had sort of had a particular philosophy about making everything small and elegant and Linus was just sort of hacking around with with without much particular sort of sense for what what is the right way of doing things and that yeah I think there's a very very famous or infamous debate that went on in the very early days of Linux but yeah 10x 10x develop MINIX that was actually he think he did that after I had graduated okay but I ended up eventually sort of working on a group that was collaborating with an Tenenbaums team oh okay so amoeba was yeah okay I was part of that so we'll go to that later did you have any important mentors and professors at university I say the the sort of not not that much I was was pretty sort of I was basically just studying whatever I I wanted there was there was one professor from M de Boas who sort of occasionally sort of encouraged me pushed me in certain directions I think that's the only name I really I really remember and was there what was the was there actually a formal computer science degree or did you there was not so you so you you still had a mathematics degree I yeah I ended up my my degree and I think they'd sort of customized it a little bit for my situation was in mathematics and computer science there was essentially a math degree yeah phenomena Boris sort of helped me sort of make sure that I graduated because then at some point that job and other programming things were much more fun than studying right let me go skip around a little so then let's talk a little bit more about that first job that you mentioned so you so that was in the university computer lab it was it was not really a computer lab it was actually sort of a service organization okay right there the the sort of I think in the past the computers had been being very sort of rare and there I think there was some trauma in the sort of attempts to develop their own computer and at some point the university decided that they needed a mainframe and it turned out that mainframes were so expensive that they actually sort of the two universities in Amsterdam plus a pray place that a research lab that was called mathematical center which did a lot of specific computer science and and sort of related math research the three of them got together and bought a control data mainframe I'm sure it took them years to actually decide which brand to buy especially to decide to not buy IBM I think the control data mainframe excelled in sort of numerical computations it had superior floating-point performance anyway so the sort of there was a separate entity that ran the mainframe and was supposed to sort of give everyone equal access and keep track of bookkeeping making sure that everybody sort of paid for the time they used on the computer and that was the entity that sort of employed me okay yeah the service center yeah it was at the time I was called Tsarist stifling academia reconsent from Amsterdam it's like the foundation for the a cadet compute compute Center you know I'm sure dad and their their physical location initially was with the Free University of Amsterdam which was like where Tannenbaum was also teaching so it says that you worked you worked on the operating systems that were on those mainframes you helped to develop them no no dad the sort of that it was pretty lowly sort of there were there was was things like installing new versions okay so like Simon type stuff well yeah so that we the the operating systems group I think was responsible for most of the sysadmin work that the actual the the operating system was produced by control data and I mean you you paid for the hardware and all the software was free so the compilers were also produced by control data CDC what we did do was write sort of additional software for example there was accounting software that was customized and there were integrations and we'd sort of we we were responsible for installing third-party software and keeping the compilers and the operating system up-to-date and I remember there was like this row of shelves was from here to the back wall of computer printout that was I think refreshed like weekly or monthly that was the complete source code for the operating system so that if something went wrong you could actually look up what what what had happened my my role was to sort of write small utility tools and help with sort of all tasks and that and eventually that included implementing a sort of simple simplified programming language that supported control flow in the the very arcane job control language that CDC used and throughout this period where you're exposed to hacker culture or a bit the sort of not at all to the extent that it existed in places like MIT at the time I was completely unaware of any of that but there was there was sort of there were a few other people including a few other part-time employed students at at that place who were just not just doing it for work but also passionate about the topic and we were sort of exchanging stories and learning together and there was a group of passionate users and sometimes there was an adversarial sort of relationship there were like users who were trying to break through the accounting system so they could could get free or unlimited access of the software and the system people then had to sort of plug the holes but it's at some point we did that the group of people was small enough in the computer wasn't really on any kind of network there was no truly anonymous access so at some point I remember the head of the accounting department just talking to to one of the persistent little hackers who was one of the very very bright students who was just sort of thought it was great fun to break into that system and crash it and the head of the accounting department was tired of that and just had a sort of I think he threatened with physical violence he didn't apply any but he said if you if you if you keep doing this if you if you do that particular trick again I will hurt you it's this sort of that that I wasn't there but that's the story I sort of I heard at the time so then did you you decided to continue with Graduate Studies not really I sort of the at least at the time University in the Netherlands was organized a little different then it is these days in the u.s. I didn't know how it was done in the US or how it is know in Holland but you sort of you you picked your topic and after a few years you had some kind of bachelor's degree and as long as you showed up for classes you you that's what you got and then the natural next step was something called doctorandus which means he who is to become a doctor which is very much not a doctor but it's it's a degree that's equivalent to a master's degree and you have to write a small thesis and do do sort of half year of research and I eventually did that and at that point I was truly done with academic sort of learning and I had no interest in PhD position and that was in 1982 that you got an 82 yeah yeah but so so then you you took your first permanent job was at CWI correct yeah and this this was that this had previously been the mathematical center I don't remember it might still have been called mathematical center when I first joined or they might have been in the middle of changing the name to CWI and I think that nobody at the time really understood why they were changing the name because it was a huge problem because the mathematical center at least in Europe European computer science circles had a very good reputation and sort of nobody knew what CWI was plus it that sort of it's a Dutch abbreviation and it trans it doesn't sort of the English equivalent doesn't have the same letters right so CWI stands for its its Center for mathematics and computer science and so that is centrum for visconde and informatica so in Computer Sciences is called informatics right so then the letters are different yeah translated and and you this job was after you finished that sort of master's equivalent degree or was a concurrent was was after it was out yeah yeah I sort of in fact I think I had to there was one final exam I had to take in sort of a subject of physics that I wasn't very good at and I failed the test the first time and I was I was like I was almost in tears because I couldn't start my job that month I had to sort of call them and say oh I'm gonna start another a month later or so and it turned out that that nobody cared it was fine but for me it was a big drama well what was it about this job that attracted to you that I think it was primarily lumber merchants because I had met him previously in the the I don't know exactly I I probably knew him two or three years before he employed me and the way we met was oh yeah this here's this pacifism coming in again I was a member of the Dutch pacifist society sorry political party and at some point I volunteered to help the party headquarters to move from the Stone Age to the Middle Ages in terms of information technology they were buying their first computer and they had to transfer all their sort of membership database to that computer and they were they wanted to do everything themselves because they were super afraid of that that their information about who was a member of the party would fall in the wrong hands and in the sort of death in the 70s that that was a serious concern anyway so the party formed a committee that that was to decide on the hardware and the software and then sort of they sought volunteers to help them with programming and I thought oh I know programming and even if I have to learn a different language it turned out that the computer they bought what could only be programmed in COBOL and I had never seen a line of COBOL in my life but I again I just I could learn any programming language from a reference manual so I'd learned how to do that and helped out and it turned out that long beer was one of the sort of party big at the time besides his career as a computer scientist at the mathematical Center it was also I think he ran for a seat in the Dutch parliament once and spent a summer holding political stump speeches throughout the country but I guess he wasn't elected but so that's where we met and he sort of recognized my my skills and somehow I sort of we got to talk and at some point after that that's sort of the project had already started sort of becoming a minor disaster and it was it was I think it was eventually finished without my further help then they they sort of changed directions a bit but by then Lum bear and I knew each other and at some point he said oh you're graduating soon right hmm I think I might have a job for you and that's what that was very welcome let me take a slice it back you mentioned you know being a member of the pacifist party so what was you know how affected you were you by the Cold War and the things that were going on at the time politically well I remembered that sort of politics was a big thing and and there was I mean in the Netherlands I felt pretty safe from actual Russian bombs and so I I was never really concerned about my safety but it on the other hand it felt like we were a lot closer to Russia than Americans are and I think during the 80s at some point there there was big movement in the Netherlands to kick out American weapons that were were sort of posted in the Netherlands and and throughout all your Western European countries as long as they were part of NATO because that sort of it wasn't always completely crystal clear that the Russians were the bad guys it sometimes felt more like well there are two sides and they're clearly disagreeing with each other but it's not clear who's right and so I I sort of I net I never felt comfortable sort of with the communist system but I sort of did feel sort of that that sort of a socialist system would was was better than than capitalism and and that that yeah that probably colored some of my my views on life in general so then you started this job and were you were you did you you know was your first sort of position there to work on to joining the ABC project yeah so the long bear had basically just spun up the ABC project I think he had pulled some strings with management and and gotten funding so he could hire or requisition programmers I think some some of the team members were had already been programmers at CWI before and other people were hired fresh the interesting thing was that ABC the language was basically designed when I joined the team there was also a project lead who was hired fresh guy named Steven Pemberton he was British he I think he had graduated on some kind of Pascal compiler and somehow that had impressed I mean he had I think he had sought out a job he didn't sort of get the job through connections he was a very interesting guy he was the project lead I was one of the younger programmers there were two other programmers and we had like Lum bear and not a guy named Leo Hertz i think l'm baron Leo had designed the language together and but I think Lum bear was the sort of the major push later I found out that lamb bear had also spent a lot of time with algal 68 because he's like that I think he ended up being on the cover page of the Algol 68 revised report as the editor even though that sort of I think he was a very junior person when when that language was actually sort of being designed by all the sort of the big shots in European language design community but sort of one of the the biggest big shots was from very hard who I think until until maybe a year before I joined had actually been the director of the mathematical Center hmm that's that's how I did I don't remember the exact chronology I I know that he still occasionally taught a class at the University of Amsterdam and I'd sort of caught a semester of that and it was all in all because they were here was he was this guy who had sort of invented the sort of grammar description mechanism used by Algol 68 and so you yeah so you joined CWI and 83 that's correct right I joined in December 82 I below December 2 okay pretty close yeah and yeah so here we were with with a freshly recruited group of programmers and we were to sort of implement ABC and it turned out that lamb bear on his own had already written what was called a prototype implementation which was like this huge big C program that took a few shortcuts and didn't always follow the exact language specification but it sort of it could run basically almost any ABC program but there were there were details of the language like it was supposed to have arbitrary precision arithmetic and it that wasn't implemented but we sort of I think Stephen settled on a strategy of sort of rewriting the prototype one component at a time so we would always have a sort of a working interpreter but he had he sort of we rebuilt all the fundamental data types we rebuilt the parser we rebuilt the sort of the interpreter whoever every part was eventually completely different from from the original prototype but the prototype was definitely it sort of was was more than just inspiration it was sort of the starting point for the implementation then we started adding things I remember working on a programming environment for ABC and I think we were not very inspired for that or we didn't have the right ideas we were we're trying to to build a syntax directed which and this this was like the early 80s there was some very advanced research where people were building sort of meta compilers for editors where you would somehow feed the grammar of the language into a complicated piece of machinery and it would generate an editor for you or maybe that would just sort of be an editor that knew about the syntax of language you were trying to edit but those things had not been sort of tried out on real users very much and some of the ideas didn't work or maybe we didn't understand some of the ideas we were not work we didn't have great great success with with doing that but we did sort of we we built something and and and I remember that sort of building editors was was one of my passions in addition to languages and so I I had I was familiar with a number of different editors there was like VI and Emacs and and a few other older ones and computers sort of come there was just enough control over where the text would appear on the screen that's that sort of we could make it a visual editor and I had I had some very specific opinions on how how that should integrate with the rest of the world I was probably wrong but that was sort of one of the things I try to design myself and what was the purpose of ABC why I designed this new language you should really interview along the air and then he will have a much more detailed story the way I understood it was that long bear and Leo had spent many years standing in front of a classroom teaching scientists how to program using Algol 60 and through there those years of teaching they had collected large lists of gripes about how arbitrary the design of programming languages in general were and sort of arbitrary limitations like the hardware that you that sort of Algol 60 was designed in the time where every computer had its own unique hardware almost or there were very few sort of similar computers and so there were all these vagueness vague abstractions like well there's an integer but we can't tell how many bits are in the integer but if you run it on a particular computer sure enough if if the number you're trying to represent doesn't fit in the 27 bits that that particular computer uses as its word size then you just get an arbitrary programming error because the compiler doesn't generate any range checks and if you do X plus y and the result doesn't fit it just sort of chops off some bits on the top and you get out of very large negative number maybe and things like running out of out of space recursion or just function called death limits everything that was a limit was sort of a problem for their programmers because their programmers were scientists they had sort of they weren't professional programmers they had scientific data processing problems that that were suitable to to in a computer and so l'm barrenly Oh sort of set out to design a language that that would be useful for researchers lab assistants professional users of computers who were not also professional programmers because if you're sort of if you're trained to be a programmer then you you know all those limitations and you know how to write code that doesn't suffer from overflow or whatever it is but if you're a scientist and you're quickly sort of once once a week or once a month you have a programming project it can be very frustrating to have to learn all that arcane stuff and you forget it and then the next time you have to read the manual again or you have to debug the same program again because you send a different data and it crashes in a different way and so they wanted the language that was easy to learn easy to use didn't have any sort of limitations it would always give you a nice error message when the data didn't fit or when the numbers didn't fit and they sort of I don't know them I'm sure they were inspired by other languages that I've never seen and some of their design was interactive where they've had sort of discussions and conversations and blackboard sessions with other well-known language designers and they came up with certain ideas for data types that would cover most of the needs of data types in traditional programs so the intention was to make a language easy for scientists who are non programmers ya know not necessarily not just scientists but scientists were were definitely a big part of the the sort of intended audience I don't necessarily know that they got a lot of scientists to use ABC because it sort of after we had built all of ABC we we'd sort of were fairly naive in how do we how do we get people to use it and we basically failed there were like I remember there was there was one mathematician who worked at CWI who was super in into ABC because he did things with primality tests and early crypto and he sort of ABC had as this sort of almost hidden feature that you could use it to do calculations with arbitrarily large numbers including fractions and it would all be precise and so for sort of numerical algebra that's great because if you have a number of 95 digits that's computed in a certain way you can actually just represent that without any work in any other programming language you would have to use a sort of bignum library which means that suddenly it's a tedious task of using api is in a b c that was just that the built-in one new number data type supported all that but we didn't we didn't get a lot of people sort of write a lot of real code in ABC so what what did you what did you how was the group trying to get people to use it well so there were there was no internet and they were there I there were there was a little bit of email I think there was there was a bit of Usenet but I remember and I think this was in 86 travelling to the United States on my personal vacation with a nine track tape in my luggage and the addresses and phone numbers of like three or four people I had met through email who were interested in trying out ABC on their UNIX system and it was pretty limited because that you also you had to sort of you had to have a certain type of of UNIX computer and it had to be a certain type of hardware and a certain version of the compiler and the operating system otherwise yet you'd have no chance of of running it I mean in theory was all written in portable C but in practice I don't think there was all that portable or at least it would require we didn't have a variety of hardware to try it out ourselves so for every new C compiler I mean again hardware vendors built their own C compilers every new C compiler probably had some bug that this this was a very large C program would probably tickle one compiler bug or a runtime issue or just some unanticipated hardware feature where things wouldn't work so right so portability was a portability was was was an issue and also just getting the word out because this sort of the way to get the word out for software was still yeah and unclear do you sort of you can publish a paper but it takes many months to get it published and then many more months for people to sort of maybe see it so that I don't know I wasn't in charge of that but I I know it was a real struggle for the team and at some point there was yeah oh yeah there was i think l'm baron Leo had written a book and they had found a publisher who wanted to publish it and all the hopes were on that because in in in the back of the book there would be some some instructions for how to get the implementation how to get the source code and it was all free because it was just like research work but publisher was dragging their feet and insertive the editor was taking a very long time to respond to our letters or emails I don't know and then suddenly word came that the publisher had been acquired by a different publisher and all contracts that hadn't been signed yet would never be signed or at least everything would be read revisited and the ABC book wasn't published so that was a big setback and at some point I don't know somewhere between 87 and 88 I believe CWI management decided to kill the project and you mentioned Enix so this see this was all being done on on UNIX machines yeah we I think CWI had had like a small fleet of large UNIX machines I remember we had a VAX and then we had maybe not her smaller VAX and then we had I think a Harrah's computer but everything ran UNIX CWI was also one of the first places that it would eventually be connected to the Internet but that that was hadn't quite happened yet so we were connected to Usenet and that was like a lifeline because there there were like things like news groups and so like once a day we would get a fresh batch of messages and responses and there was there were there there was some email too but there was all very primitive so then after that you moved on to the amoeba project yeah after after ABC was cancelled of course everyone who worked for that project had to sort of find a new home I think one of the programmers found a job outside CWI and I joined the amoeba project but was still part of CWA well so there were amoeba was Tenenbaums research project but so that was at the Free University but his first successful PhD student moved to CWI to set up his own research group that was SAP millander and so he sort of that basically at that point the the research for amoeba was divided in two halves and some of the more pragmatic work I think was being done at CWI and what was your part of that project I remembered that we we sort of we we tried to to productionize it in a sense and and not in a very commercial sense but where whereas in Tenenbaums group they were like building a microkernel and there was that once one student and they were building a file system there was another student and they were porting compilers that the Free University had its own set of compilers that was maybe another student and at CWI we were doing things like oh we had like a 10 or 12 micro vexes and we hooked him all together with Ethernet oh yeah I think there was some of the work we did was also porting amoeba to Ethernet because the original design was based on the different networking technology so I think we had to write Ethernet oh no I think it was it's not so important I think it was all based on Ethernet but we ported it to a different set of networking protocols on top of Ethernet I think that we we made it compatible with sort of modern internet style networking protocols whereas ameba originally had its own serve you just plugged a bunch of amoeba machines together and they could talk to each other but they can talk to anything else CW I had a whole ethernet system full of UNIX systems well I don't know there were small workstations in some places and the central computers in other places but there was even at in the building and we were sort of trying to make it so that the ameba systems could talk to the UNIX system and then it turned out we needed a suite of applications because you can just sort of connect the networks together and say well now let's let's do some networking you have to have like applications oh well yeah well let's write an email application that's the kind of thing that I worked on I remember at some point we had to write a login program because there there was had not been I mean there was all this theory about authentication but there was not a system that actually managed usernames and passwords so we had fun with with a lot of programming tasks like that and that's that's where the idea for Python came up where I thought well I'm writing all this code in C and it's it's it's getting kind of tedious like writing and sort of tape backup program or some other thing that sort of traverses the file system and looks for all your files and checks whether they've changed and I felt that that sort of death was a lot of work to write in C and I was very good at C at that point it's been like probably 10 15 years coding in C but it still felt like there were lots of bugs and it sort of it just was slow going and I was looked I was thinking hmmm if we had an ABC implementation here I would just write that whole login program in 15 minutes and then it would move on to the account management program or something and and and see it takes me a week each and so I thought well I I was I somehow started thinking about coming up with a way to to use some of ABC's features in the the amoeba environment yeah I'm sure I'm skipping a whole bunch of steps I I had sort of experiment I mean I was I was one of the people who was very sad that ABC was cancelled and that it was not successful also and I had sort of released some other pieces small pieces of software through the Usenet channels that sort of by 88-89 were a little better than in 86 when we were struggling with ABC and yeah the the story as I always tell it is that at some point I think self and volunteer when Melander went for a sabbatical to the u.s. west coast to learn things I think he spent a year at digital equipment digital equipments assistant research center and there I think Bob Taylor who had just split off from Xerox PARC so Sapa was I mean we were still in touch through email but that that he wasn't sort of keeping a very close watch on what the team was doing on a day to day basis and somehow I I thought that it was I I sort of it was I guess it was better to ask forgiveness than to ask for permission and there was no one to ask permission anyway and I was doing all the sort of scheduled work sufficiently fast that I had extra time and I also still didn't have a whole sort of very complicated social life so all my spare time I would sort of also work on this new language that it was was designing and it but but my goal was really to sort of not make this another project the size of ABC but to sort of spend a few months doing this on my own and then sort of make it part of the amoeba system programming toolkit and from then on everything would be would would be better that that was sort of my idea and I do remember that I forget when probably probably the summer of 1990 when when when Python was like a few months old really we did a project where we sort of ported Python to amoeba and we made sort of we made a Python extension module that supported all the amoeba system calls and and sort of or important library calls so you could run you could run a sort of a portable Python program on your amoeba system but you could also sort of write an amoeba specific program that that was sort of interacting directly with the amoeba file system which is a very different philosophy than the UNIX file system and and various things like that and you could sort of talk directly to the networking API zone amoeba and as far as I recall we we did make all that work so you first started on this project on your own in 89 sort of over the Christmas break yeah Christmas break 89 and I think the first thing I wrote was actually the lexical analyzer right I must have had a design in my head because I just that one day I said okay now I'm ready to start coding and the first thing I sort of was coding it bought him up the first thing I needed was a lexical analyzer because that's like the front end of the parser and so I had some I had seen a whole bunch of lexical analyzer as na I was aware of tools like lex and yak and i I had mixed feelings about about yak in the end I decided not to use it but he knew for sure that Lex was a piece of crap because if your input was too long it would always just crash on you because this degenerate Lex was a code generator but the generated C code was very naive and it sort of wouldn't check for invalid inputs very well so you would write a nice Lex rule for oh this is what a comment looks like and if you comment was 500 characters long and which is bomb so I wrote my I decided oh I know how to write lexical analyzers I'll write my own and I think the next thing I did was I had my own idea about how to do a compiler generate a parser generator and so I sort of built that out and then I designed a simple Python grammar and I had a lexer already so I hooked it all up and somehow I connected it to an interpreter and library functions and then that's I think the first three or four months of 1990 were spent with that and so the name Python famously comes from Monty Python's Flying Circus of which you were a fan correct and still AM how did you first get into my new Python I think one of the smaller Dutch TV channels aired a number of episodes and it was just like insanely fun was it translated or was it in English subtitles yeah so you you always sort of the Dutch TV is also titled except when it's for little children so yeah we we would always watch the that the shows in English and well I read by then I might maybe my English was okay but I still needed to subtitles and you're also known as a fan of The Hitchhiker's Guide to the galaxy yeah that's correct yeah that's uh I think there was one of the other guys on the ameba project who first introduced me to that yeah and we were sort of just like he had one copy of the book and he would read passages from it and then once once he was finished we we were all fighting over who got to read it next so how did you arrive at Python him being the name of every language I didn't think much about it I sort of I knew I needed a name I oh yeah I remember ABC had originally be named B and sort of choosing the the proper name for ABC was what had been a very traumatic experience because they're like like people do with branding exercises there was a list of a thousand potential names and they were like selected and everybody got to vote and nobody could agree and there was always a good reason why a name couldn't be used and then eventually they settled on ABC and I thought it was just a blandest name ever and then i traveled to to the united states and i noticed that that every no-name business calls itself the ABC of American business I felt vindicated in my sort of opinion that ABC was bad name and so I I know I was looking for something that that was maybe sort of attention-getting also not too long not too short naming of languages has always been sort of a fun game I I I kind of liked the idea of naming languages after sort of heroes like Pascal was named after a French philosopher but and and I was aware of a language named Eiffel named after the inventor of the Eiffel Tower and I thought that I wanted to sort of be more modern and I thought I wanted it to be a cultural reference but not in this sort of somewhat to Rye academic culture where everything is always named after Greek minor Greek gods or other mythological figures I then I mean a deck circus nem dafter mythological figures there was a whole lympus and here are in Hippocrates and I don't know I'm making those up but that's sort of that was another thing that I had seen enough of and I thought well popular culture has not been a great source of software names yet and we there were a few of us at the amoeba only amoeba team who had similar ideas but I mean similar sense of humor we watched the same crazy shows and we think we had named some other piece of software or at the system component after a TV show that we liked at the time I don't even remember what that was but so suddenly it occurred to me that pythons sort of it it it checked all the boxes it was six letters long it sort of was a familiar word but not so not a common word it sort of presents a certain attitude and that I thought okay let's go with that and I never looked back but why Python rather than Monty that's a good question I don't think I knew what Monty meant I still don't so mad and Monty Python in fullest was too long and I I guess I want I wanted it to be somewhat unobvious where the name came from although I've always resisted this sort of the the snake thing right so then yeah you've you've said that you know you you developed it partly because you were writing a lot of this code for amoeba so you said that it that it was supposed to be a bridge between UNIX shell scripting in and C was part of the way that that was my original sort of positioning like more more of a real language than then shell scripts I mean shell scripting developed from this sort of job control languages where like originally it wasn't a language it was just like a sequence of single commands that were executed sequentially just one after another and it was all just like the name of the program and then the name of the files you wanted to send to the program or something like that I really that that was like how I invoke invoke the Pascal compiler when I was still using punch cards Pascal input or something and then you didn't even have to say input and job control language is in Cell UNIX shell also evolved from the specific job control language for the UNIX system where mostly most of the time you just type a command and if you if you can do something by typing three commands you can also put those three commands in a file and say now I have a script and then the next thing you want to do is you want to have a script but you want to write a slightly more complicated script that say checks if the output already exists and then does something else then when the output doesn't doesn't exist yet or when a certain input doesn't exist it skips a certain step or just prints an error message and you want so you want to have some logic and so I imagine that the original unix shell started with sort of an if statement and if statement had to somehow fit into the existing structure of it's just a sequence of commands and you can still see that in the the syntax of the the modern shell the Bourne shell I'm sorry that sorry born again shell bash which came from the bourne shell which was a major improvement over the original unix v6 shell and who knows what they had before so there was programming in in shell scripts but there was like the syntax was was sort of ugly because they had to fit in in in this order it always had to be backward compatible and so that's why you end up with that I'm sure that's how they invented like dollar for variables because dollar was not a valid file name originally or maybe it was a very uncommon file name so certain tasks it's great to be able to do it in a shell script but then suddenly you want to do something ten times how do you do something ten times well if you're writing a real programming language you then you do for i from one to ten or something there's always a nice notation for that in shell scripting there's no way to do with something ten times you you can do it for every line in a file or for every argument on your argument list but you can't do it ten times at least they've sort of just adding two numbers in shell is very cumbersome and it's a little bit that bad in - but you still end up invoking a lot of funky characters on the keyboard just just because all the regular characters were already taken and then on the other the other side you have C which is like programming language you can do anything it can control the hardware very closely you can at least in the 80s you could sort of you had to decide whether to put a particular variable in a register or not was very close control over memory and and everything in the machine that was great if you needed that you could make things super efficient but it was also sort it could be a lot of work if you had to read all the full lines of file and then sort them you had to invent your own linked list data structure to hold on to all those lines and I knew how to do that but I thought it was too much work and there wasn't a lot of standard library so I wanted Python to be sort of a compromise between the super convenience of shell scripting which becomes harder the more programming you need and the super control of C which becomes tedious the less control you actually need and in Python you have more control than in shell scripts because every line is not a new process but you have less control than in C because you don't have to worry about where it bites go in memory and I had some ideas about what is sort of good syntax versus bad syntax and that goes all the way back to the debate between Algol 60 versus Fortran at the start of my career and and so that I think long bear had had sort of had helped me sort of think about what what is sort of elegant use of sort of mechanisms in programming language design and other languages I had learned and I had read about I mean as I mentioned that was in a habit of just reading learning a new language from the the sort of language specification and usually you get a fair bit of the philosophy of the language designers or the design committee or however it's done and so I sort of I had developed a fair amount of opinion on on that and I thought well there's a whole bunch of stuff that I could borrow from C there's also a whole bunch of stuff I can borrow from ABC and then there's things where I just have to invent my own syntax or mechanisms right so how many how what sorts of things were were borrowed from ABC and and but also how did Python and differ from ABC so yeah the the interesting thing was that over the few years when I worked for him the amoeba project I had been processing the sort of ABC's failure and developed my own opinion about that and so in my view there were a number of things in ABC that were great and I wanted to keep those examples are actually use of indentation for statement grouping data structures like lists and dictionaries the idea of immutable strings and numbers the idea that you don't have to declare the types of your variables because the language can figure it out from how you use them then again there were a whole bunch of things in ABC that I didn't think were very successful in ABC all the keywords are spelled in uppercase this is still sort of a relic from that original sort of elbow versus pascal idea where in Algol that the language reserved words the language special words have to be spelled in a in a different way too so that the parser is it can be stupid and can always tell this is a key word of the language and this is just a variable or functioning and so in ABC that that debate was still sort of reflected and and they had chosen what I thought was the wrong outcome which was that like statements and language keywords were all uppercase and functions and expressions and variables were all lowercase and I hated the whole look of all these uppercase keywords in the language that it felt like shouting and it felt also felt old-fashioned because this sort of typical representation of what you see on punched cards is all uppercase and UNIX in UNIX by default everything is lowercase so there was some some sort of UNIX versus mainframes that I also probably put into that I didn't like some details of the especially the list data structure in ABC for some reason ABC keeps its lists in sorted order always which is very handy when you're talking about say a set of colors not so great when you're talking about the lines in a file when you're writing say an editor so I wanted I was sort of interested in slightly different things than the abc's target audience I was not a scientist I was a programmer and I wanted to write tools for other programmers in Python so the another big thing where I thought ABC had failed was that ABC one had this philosophy that there is only one system it's ABC it's the language it's the environment it's your your persistent storage your file system so to speak it's your editor it's everything and again UNIX sort of counters that with a philosophy of small tools that do one thing well and work very well with other small tools that do different things well my big frustration with ABC was for example that in in practice a computer that was running ABC was also maybe there maybe there was a the word processor or a spreadsheet and that was like impossible to open a file in ABC and just read the data from the spreadsheet and do something with it so you you you needed a separate conversion tool between spreadsheet data and ABC's internal data structures and I thought in Python you if if that spreadsheet is stored on a file there's nothing that should stop you from just opening that file and reading it in and maybe you have to decode spreadsheets internal data formats but that's a separate problem you can code you you can code that out but if you can't even open a file you have no access to the spreadsheet and so I sort of ABC was this single monolithic implementation that did sort of everything and if ABC couldn't do it for you then you were stuck you were host and in Python I wanted the language to be extensible and I wanted to interact well with an environment and then not necessarily only a UNIX environment yeah so we're talking about extensibility the how you wanted to make Python more extensible than ABC yeah so another very frustrating experience we had one summer with ABC was we had a couple of interns on the project who were interested in building a sort of a graphing back-end for ABC basically you would sort of process numerical data in ABC and then you would what you would want to say turn that into a plot or a chart or something visual and originally ABC had been designed completely as like everything was text because that was the only thing that computers could do until I guess the late 70s or so and so they again they found that ABC actually had a big limitation which was that you you couldn't easily add a library with new functionality to ABC and there were a couple of sort of things that got in the way one was that there was no the sort of the the language implementation didn't have an import mechanism you would have to basically add new built-in functions or add new built-in statements or commands in order to add new library functionality there was there was a concept of namespaces but namespaces always sort of I think you could only use one namespace at a time and a namespace was just a collection of ABC code so you could have a bunch of functions but there was no further structuring so these poor students really I think they came up with some kind of hack but it was a really sort of pretty sad experience and it turned out even if you did want to add a new statement or a new built-in function to the language the the sort of the implementation also wasn't structured to make it easy to to sort of find oh here's the piece of code you have to change to add a new built-in function because it was all sort of it was spread over the parser and it sort of none of that made much sense to me because I was familiar with C itself which has a great way of sort of linking separate separately compiled pieces of code together and most other languages I was aware of had some mechanism for that too and I suppose we could have sort of added something to ABC but it was certainly not part of the original design and so the sort of ABCs recognize the number of data types like they were let's see what was there there were numbers there were strings there were tuples there were lists and there were dictionaries that was the data and all the code would just sort of if it had to do something with with data it would just sort of check well if it's a number we can do it if it's a string we don't do it yeah you did you sort of everything would only apply to one or two data types like there were some operations that could be applied both to lists and to dictionaries or tables I think they were called but it was like everything was hard-coded in the implementation implementation and there was like there was some some code reuse inside the implementation because lists and dictionaries were actually sharing an implement but much of their implementation but it would have been impossible to add a third data type that would also share that implementation sort of that that the code base just wasn't prepared for extensions along those lines and so I sort of I wanted to do things very differently in in Python I wanted sort of I wanted to have a module system I sort of my summer I think it was summer of 89 that I spent as an intern a deck Cirque or of a visitor yeah I wasn't technically it was an intern I spoke a lot to the people who were designing or had just finished the design of modular 3 and that the similar group who were working on modular 2 plus which was like modular threes more practical predecessor and dead language obviously had a module system and I didn't know where else I sort of saw these things but it was very clear to me that that Python needed to have extensibility and that modules were a way to extend it both with Python code but also with things that were not implemented in Python but could still be used from Python and that's where we're sort of the idea of built in or extension modules I think originally they were sort of term built in modules because that the original sort of implementation had all the concepts rights but sort of it wasn't that easy to hook it up to to third-party code you had you basically still had to recompile but you did sort of that yeah there was one one piece of source code but that that just linked the name of a built-in module with with a function that sort of initialized that module and returned all the necessary data structures so if you had an if you wanted to add a whole new piece of functionality to Python even in that very early version you wrote you would write a new functionality and you would hook it up to the rest of python with the same single line in that config file I think this sort of the grandchild of that config file still exists in the currency implementation so I sort of I I also somehow picked up the idea that extensibility is important it's even better to have multiple levels of extensibility and that's where I sort of where on the one hand writing extension modules in C and on the other hand sort of adding new code to the standard library or adding new code to the you a user's own workspace was where all things I cared about and so there's a number of other critical design choices that you made first of all one of the big things is you design Python for programmer productivity and so I guess a lot of other features fall into that so interactivity being an interpreted language more terse or more expressive code readability what you mentioned earlier use of indentation for statement grouping what was sort of your overall you know philosophy in in these designing Python if these choices that you made it's it's interesting pretty much everything in the list you just mentioned came from ABC ABC was interactive in fact it was only interactive ABC barely had a sort of a bachelor or scripting mode ABC had that sort of I don't I don't know if I would use the term tours but it had this this sort of compact way of expressing expressing quite complicated concepts pythons interactive command line prompt is even the same as ABC's because I figured they were ABC was not sufficiently popular that they had to sort of distinguish myself in by changing the problem there was no worry about confusion obviously I couldn't I couldn't make the problem be similar to the prompt in some other language like the shell prompt that I was careful to make it look different I forget it I think everything on your list actually the the philosophy came from ABC and one of the things that I think is you know python has has one of the big uses of Python has been in education and you know a lot of introductory classes and programming at heart and Python and and you said before that that came from ABC as well was ads or designs my my original positioning of Python was actually not as an educational language for for ABC I mean the the authors always objected when it was called an educational language because they they wanted to sort of have these dual properties almost of easy to learn and easy to use I had neither of those sort of directly in my goals but one of my goals was sort of borrow all the good stuff from ABC and with with all the other things I stole from ABC sort of it turned out that it it it was quite quite good to to teach him I hand anticipated that and I remember when I moved to Northern Virginia I got to sort of me to a whole bunch of new people and beaten my colleagues were eager to introduced me to other people they knew and so I met this guy and he said yeah I taught my kid Python this kid was like I don't know 9 or 11 or so and I was wondering if that was a good idea about that sort of the clearly clearly the guy was very very proud and it was also pretty had been very easy for the kid to sort of pick up Python and then sort of the story he told me was oh yeah but they're using Windows and we he couldn't figure out how to exit the Python interpreter but he had discovered some crazy thing that that would crash the interpreter there was like a but he had basically discovered a bug and whenever he wanted to leave the interpreter he would just type the line of code that would trigger the bug but that that was the I think the first time I realized that Python was also going to be effective for education and and sort of over the years people have started using it more and I've always said though that's that's great that's that sort of that was one of ABC's original goals to be easy to learn I want to talk about the indentation feature again because it's kind of a widely known thing you you feel very strongly about this feature and that it's it's a it's very beneficial that you've stated this in that's probably a little more strongly than I would say it now it's sort of I don't think it's a bad idea it's an idea however that no other successful language has copied with the sort of I think the only other language that I'm aware of nowadays that uses indentation is Haskell and they do it slightly different at the time I mean I I had spent afternoons debugging code myself where I mean I think a year ago or so there was an infamous Apple security bug by two statements that were both indented the way the programmer wanted the code to be grouped but of course there were no curly braces around the group so only the first of the two was actually being executed conditionally right and that sort of I had run into versions of exactly that bug myself and I was very sensitive to to the the sort of argument that that ABCs author's made for why an indentation is good for us it also sort of it began an end in in in languages that support began an end as keywords those are like more common than any other language keyword because you're constantly doing this and I I don't know curly braces I suppose are okay but there is argument there's endless style arguments about where do the curly braces go and you you sort of you waste space you waste vertical space variant which which is very precious on a computer screen still after all those years for the the closing curly brace so I'm I'm still very happy with the decision I sort of I still don't know if I were to design a new language today with all the same design goals as Python if I would use indentation just because it's different from every other language every other language has that that is sort of currently in in use at least in the crowd where I hang out whether it's Java or go or rust or C or C++ or C sharp it's all curly braces based and so tooling and people's brains are just sort of pre pre sort of greased for for dealing with that so in some ways they're pragmatist right you you you would design something that in some ways conforms to the syntax that people are familiar with in some ways like what I guess Python itself is is see like syntax and in many ways apart from the curly braces I borrowed a lot differently I bought a lot of other things from see like a choice of keywords expression operators and priorities format strings at least the first few generations of those definition of what constitutes an identifier calling notations and conventions oh yeah I hope this isn't too much of a detour but in Algol 60 and Algol 68 to call a function that has no parameters you don't write an empty parameter list in parenthesis you just write the function name and so that that gives visually sort of a 0 parameter function is very different from one or more parameter function it turns out that syntactically this is also a stumbling block and one of the things I remember from very hard and telling his students do that one semester deaths he taught a class that I attended he said sir if he was what I think one of his classes he was just sort of reminiscing about Algol 68 which had been quite a bit in the past by then and he said and all the all the complications we added to the grammar to get zero parameter of function calls works in tactically correctly and it that sort of the hours of debate it took to push that through the language design committee and all all the cost for compilers and and and users and then goddammit I I'm sure he didn't use bad strong language but then after he had finalised every we encountered the sea which was then a sort of an upstart language and we saw the day chest said you just write empty parentheses and he said we never believed that the programmers would accept that if we had thought that the programmers would be happy to write that empty pair of parentheses we would have happily done it that way because it was easier all around and yeah that's that so that's another thing I I just borrowed from see it's also sort of the pragmatic approach to design one of the things that you have said about the indentation feature is that it forces a consistency because there's only one way to do things absolutely that allows for readability and a maintainability of code yeah I mean I I still see that in my day job at Dropbox that people can read each other's code because it all looks roughly the same and yeah there is a lot more to coding style than indentation style obviously but it does help that there is never any debate possible about where the curly braces go or I mean people can even argue about whether to put curly braces about around a single statement or not a whole bunch bunch of sort of that the code becomes more readable because it's more familiar you sort of every you've once once you know Python you can read someone else's Python and sort of I guess the sort of the language that is the most different perhaps is Perl where everybody seems to have their own unique style and every package has its own conventions and the language proudly sort of declares its philosophy as there's more than one way to do it which is great when you want when you're sort of an extreme individualist and you want everything to do exactly the way you want to do it and you don't want anyone else to try and control that on the other hand it's bad when you develop software in sort of in a group as soon as you have a team of more than one person I think the uniformity of sort of indentation is is helpful so what features make Python good for rapid prototyping and development I would call out there the standard library and the lack of typing and the sort of the powerful data structures which are also part of the standard library but sort of there's so much more in the standard library where like you need to do some networking whereas a standard library module for that you need to do some web crawling there's a standard library module to do on top of the networking code to do that you need to read a spreadsheet there's a module for that too and so prototyping is often sort of an exercise in integration when you take existing components and you sort of try to quickly put them together to get something working and because there are so many ways to to work with other software from Python if it's easier to just fork off a sub process that does the work the rest of the work is written in a different language you can do it that way there's like so there they're there is the the large collection of things that that the language and nowadays also the collection of third-party modules sort of let you do there is also that sort of you don't have to write a lot of code to to do any of that you sort of all sort of if it if if what you want to do is three operations it's probably three or four lines of code there's no boilerplate or overhead you don't have to sort of prepare set up declare check exceptions are another example if in a prototype often you want to play loose and fast with sort of exception handling or error handling and you'll say okay we'll just sort of it will open the soccer then we'll bind it to a port then we'll write a few bytes to it and then we'll read some bytes from it and then we'll close it again or you don't even have to close it actually implicit is that if any of the operations fail you don't have to write error checking code and there's this that this particular example actually comes from from things I I remember doing enemy by where I was doing things with sockets in C code and because I was just writing a quick prototype I hadn't put in very careful error checking and so the right operation was silently failing because I hadn't put in the right argument or something and so the whole program didn't work but it didn't give me a very clear error message because the right operation just returned an error code and I wasn't checking for that error code in Python defaults to doing things the other way around you sort of if you expect an error you can catch it it's not like everything is a panic but if you expect things to go right and somehow you make a mistake the mistake will will sort of be it will broke be brought to your attention I remember a very early version of Python did not have thorough integer overflow checking and then I was writing a little program that was copying from a book and I couldn't get it to work and the reason was that unbeknownst to me the program was manipulating very large numbers like in the order of hundreds of digits and that very early version of Python didn't have have protection against that and so I was essentially having having the same problem you would have if I had sort of written it down in C and so that I think that afternoon once I had debunked my problem I decided Python we'll check on overflow on all arithmetic operations because we we don't want errors to sort of fail silently this eventually became sort of part of the Zen of Python you mentioned the weak typing dynamic typing so python is is an object-oriented language with a dynamic runtime dynamic typing and binding what what inspired this feature were you familiar with Lisp or small talk in fact I was not well I was I was I had spent probably a few afternoons playing with Lisp I had probably heard of small talk but never gotten my hands on a small talk system at that point and I had forgotten everything about Lisp by the time I was on pythons design it it actually came from sort of the implementation of ABC so ABC was technically it was strongly or statically typed but it it sort of like Python ABC also did not have type declarations but instead it had a type checker somewhat similar to what you find in has called these days much much more sort of constrained but basically it would say if you have an argument a and we see an operation where you say a plus 1 anywhere in your function then we conclude that a must be a number and ABC had cleverly spelled all the operations differently so you could always tell from the operation whether something was a string or a number or some other data type and one actually one of the the weakest parts of ABC's implementation was the type checker because that long bears prototype did not have a type checker and the runtime was actually sort of safe in a sense without relying on the type checker so in C++ if you managed to smuggle something past the compilers type checking you can probably also use that to crash your program in ABC at run time every object was tagged with its type so there were two notions of type the sort of the compiler that during this the type checking phase would sort of discover oh this variable is a number but quite separately in the the interpreter the implementation it would sort of it would essentially have objects and it would say this object is a number and that object is a tuple and if you it's sort of the interpreter once once you go past the type checker the interpreter would not actually care about the types in the program but it would care about the types of the objects and if you try to concatenate if you try to use the concatenate operation on an object that was not actually a string it would issue a runtime error and so I was quite familiar with that sort of implementation technique there was also there was sort of a a back door in ABC where if you if you had separate functions yeah if you use it interactively sometimes the the type checker wouldn't know about the types of a different function and then the dynamic type checking would sort of the runtime type checking would always take over so the the runtime checking in ABC was sort of thus thus the safety measure and the the static check checking in the compiler was was more for sort of for looks or to sort of find bugs early if you could so I didn't quite understand the algorithm that the static checker in ABC was using I didn't know if that had been implemented by someone else or if I had just sort of taken the description and implemented it without really understanding why it was the way it was it was probably someone else who did it so I never had much love for that particular aspect of ABC so it just left it out from Python again just to save myself time because it was like a skunkworks project that i had to do in my spare time and i wasn't planning to spend more than months on it and so every every shortcut I could take including well just leave out portions of the language that I didn't care much about anyway was was sort of saved me time but the run the run time checking was was sort of always important because I was I was really tired of courtrooms but I mean that puts you know Python in sort of this family of languages like Smalltalk Lisp Ruby and JavaScript yeah JavaScript that that that are known for runtime type checking and you know there's their arguments sort of going both ways about you know whether dynamic typing is you know makes somebody more product makes a programmer more productive in certain ways versus static typing makes certain bugs easier to find that's one of those arguments that keeps going around and and we're probably sort of studying history carefully will be useful for future generations I know that when I started with Python dynamic checking was in the doghouse I remember encountering many people who who had sort of had a computer science professor who was very influential and who had categorically stated like static type checking is good dynamic type checking or weak type checking as it was was often it was originally couched in this strong versus weak typing which is a slightly different dimension than static versus dynamic but sort of this static or strong typing is good and dynamic typing is checking is bad that sort of attitude was still very prevalent when I when I came up with Python and I noticed that often people who were sort of arguing for that couldn't actually expressing their express very clearly why that that was better they did it felt like they were just sort of repeating arguments they have heard somewhere else or they were using arguments that were sort of based in previous compiler culture because I'm sure that when when Fortran first introduced the distinction between integers and floating point numbers it was incredibly important because it could map the difference to different Hardware instructions and all languages since sort of have used the type system as a crutch to help the compiler generates sort of type-specific code and and see probably sort of represents a sort of a local local maximum in that attitude because in terms of type safety c is absolutely crap i mean that don't get me wrong it is actually one of my favorite languages but it's not very type safe even with sort of later standards editions the c compiler primarily needs the types so that it it knows what go to generate but sort of for a higher-level language like like python that's not that's not so important and it I mean it comes with a territory maybe of an interpreted language and an interpreted languages have always had sort of their niche and and often there's been a race towards making faster interpreters and for an interpreted language this sort of if you have a type system it's used for very different purposes and the type system should focus on what helps the user of the language and so things like the C type system which is full of declarations of how big the words are that are needed to store your variables like is it an int or a long or 64bit long or is it a float or a double that is all nonsense that is sort of from the users perspective that is most of the time just the distraction that's I mean it's a rare program where you have so much data that you really want to store your data in 16-bit words instead of 32-bit words usually you have bigger fish to fry so that's sort of where I went with Python and I sort of with with ABCs implementations example I sort of found my way to the dynamic typing and yeah was later that in in 95 or 96 or so Bob calm the the guy I was working for at the time in Northern Virginia took me apart and he said this is a great language you've made but did you know that you sort of have how much your language has in common with Lisp and it was almost offended because all I know about Lisp was like the lots of irritating silly parentheses part but the sort of the dynamic type checking part I I was the whole sort of runtime system that I I wasn't really aware that that was really where where Lisp was was big because there that there was no one around when I learned to program who was ever using Lisp I think maybe it was one of those languages that Tannenbaum used it sort of in his class of seven esoteric languages and it seems like dynamic languages have had sort of they were pretty popular or maybe five years ago or or so and in the meantime like a lot of the newer languages that have been designed that have come up like go and come and and Swift and things have been statically typed languages yeah it is it's that what do you think is the cars of this it's an interesting development that dynamically typed languages were sort of effective but sort of not very much respected in the 90s but sort of the internet was was sort of built by a variety of dynamic languages between Perl Python and JavaScript so much internet stuff was built in using dynamic languages because of the programmer productivity and sort of being able to quickly throw together prototypes or things that that sort of do a bunch of functionality without necessarily having to be super fast has been incredibly valuable and slowly dynamic language has gained more respect and Static that sort of that sort of in a sense there was a backlash against a backlash against static languages where people started saying oh well I can do it in Java and I have to type every every variable I have to type the the type of the variable three times before I can use it or I can write it in Python where I have none of that and so eventually sort of designers of newer static languages started thinking well what can we do about this argument that dynamic languages are better then or more productive than static languages and and what can we do to keep the type safety of the static language but combine it with this sort of the productivity or maybe perceive productivity or readability or conciseness of dynamic languages and you get like languages like go that do a lot of type inferencing so you don't have to be explicit so much about the types of variables and arguments or even C++ the auto keyword in the latest version of the language and so that that's that's been a very interesting discussion and it sort of it's it's being very exciting to me to see that the dynamic languages sort of have actually caused a response amongst designers of more traditionally compiled languages and every language is always scratching some particular itch I mean c-sharp scratch the itch of having a Microsoft corporate language I guess that was not basic Swift scratched the itch of having something that was a little better than objective-c for especially for iOS go I think the itch that it originally tried to scratch was just compiling faster than C++ and I think rust is all about memory safety which which has been a challenge for many other languages so yeah I'm I'm happy this is happening in the meantime there is also a sort of recent development in the Python world where we're now experimenting with optional static typing for Python we're actually using a similar model like the static type checking ABC but but sort of more extreme that type checker is actually a separate program that you don't have to to run it's it's it's sort of it's it's voluntary like a linter but we're experimenting with that and so we're the sort of what I've eventually learned is that the advantages of dynamic languages are more pronounced for small to mid-sized scales and for really large code bases static languages despite all their visual overhead and sort of compilation cycles and build tools have have have their their uses too I mean when very large teams build very large pieces of software the static types actually are not redundant that's that's what that brings up a really interesting point that I wanted to get into which is about sort of how Python is able to to scale I mean we you know you mentioned what you know pythons extensive use on the web you know Python is used for anything from small scripts and glue code all the way to large production web servers and web applications so what what makes it so versatile and and what makes it able to you know be robust enough to produce good and well engineered production code well production code is usually not all that well engineered that that's also not true but they're sort of production code is not necessarily well engineered and sometimes there sort of the engineering that goes into making production code production-ready is a very different kind of engineering that goes into writing code well it does there's a whole bunch of tooling around that you should you should interview Googlers about that topic though but I think pythons extensibility has been the key to to making it work well for such a sort of a large dynamic range of application areas like from very small to pretty large and across like web and data science and other forms of science extensions really have been key to that because if if your problem involves looping over matrix of a thousand by a thousand numbers or a million by a million numbers pythons for loop is not the fastest for loop in the universe but you don't actually have to write that as a Python for loop because you can use a numpy extension that has a for loop the whole algorithm that you want to run whether it's a matrix transform or a filter or dimensional reduction whatever there are libraries written in C C++ Fortran sometimes that have interfaces that make it very easy to use them from Python code and that is is really the secret for the sort of much of the the large-scale use of Python the sort of the like in in data science and and this started I think in the late 90s there were people at Lawrence Livermore National Labs across the bay who were using Python to replace a homegrown scripting language that was basically a glue language that glued together all their dusty Fortran and C++ decks but previously they had been either writing some dead-end homegrown scripting language or a C++ as the sort of the main deriving language and they switched sort of to linking everything to Python but using Python to drive the dusty decks and certify them just tells the dusty decks here's the file and this is the format and the this is the operation I want you to do and sort of it gave the scientists just the right toolkit and that sort of the scientists who were previously doing that in for in C++ would constantly struggle with the C++ compiler and syntax and one missed comma or a semicolon would sort of cause everything to go mysteriously wrong or they would bang their head against the wall so that trend has sort of twenty years or so of gluing numerical code together with Python and ironically that's that the numerical stuff is this stuff I know I've never liked in college I still don't understand it but there's a whole community of people who maintain and create libraries for use in Python so that scientists can sort of feed their data into these libraries without having to know C++ or Fortran and but sort of all the sort of performance critical code is actually written in C++ or Fortran they just don't have to write any new C++ or Fortran and on the web it's it's sort of a somewhat different story but again at don't point a web application probably just it's just an interface to a database that database is my sequel or some other sequel variation that's all written super optimized and it sort of does query optimization and you can certainly have teams of database administrators sometimes who can put the right indexes in the web application just sort of takes input from the web turns it into a query that it runs against the database and then turns the output does light processing on the output of the query and runs it through a templating engine templating engines are these days usually also written in C++ there's Python extensions to generate HTML or the modern way of doing that of course is you just send JSON data to the browser and there is javascript in the browser that renders it but again the the Python code sort of does not do the heavy lifting but it controls how all the the sort of heavy lifting components are are composed together and that that is in in some sense also that that UNIX philosophy of making tools that work together right so that sounds like I mean so that gets around sort of this you know perceived performance disadvantage that Python has of having a dynamic runtime that I've heard a similar argument about objective-c actually were like totally you know we're we're you know the the all the performance critical code and objective-c is actually straight C exactly but but it's not so straight that's right yeah yeah so yeah it sounds very similar you talk about more about how my Python has been so successful on the web it's it's still hard for me to get my head around that to be honest that sort of I I've never particularly pushed that I remember in 94 or 95 someone observed that there was this thing called CGI on the web I mean previously web servers had mostly been serving static HTML and it was sort of still a novelty to see images embedded in that HTML and then people came up with sort of dynamic web applications in the first generation of that was sort of you had this special part of your file system namespace where the web browser would say oh if it starts with CGI bin slash then give it to a script and the name of the script is the rest of the URL or something like that and someone said well there are all these people writing shell scripts and Perl scripts for their for their web servers I want to write a Python script and here is 35 lines of Python code will you please put this in the standard library because then everyone can write their own CGI scripts in Python easily and this is because this sort of there's like some detail you have to pull out the form form data out of your environment variables well nobody does it that way anymore and but that was sort of so began because it was a scripting language it was it was Python was one of the many scripting languages and among scripting languages Python was sort of known as having the sort of the most pleasant syntax if you sort of cared about syntax I think the Perl had cornered the market for sort of productivity in pure terms of if if you want to get thing a one-off job done quickly you right tickle TK had cornered the market for embed bility and for sort of actually graphics you eyes and python had cornered the market for somewhat embed ability but sort of if you if you actually were doing more programming in your scripting language then then you might or thought was good for you so Python just became a natural choice for a small group of people who were here in Silicon Valley and and all over the world sort of pushing web stuff and it worked and because this sort of the startups were all competing on who is first to market I remember that an early court dev in the Python community worked for a very early ecommerce platform it was this tiny tiny startup and because they did their whole implementation in Python they were they sort of had launched a product with sufficient features to be viable before any of their competitors at least in that particular subsection of the market and what they did was they realized they they couldn't actually sort of compete beyond that but they sold a platform to Microsoft and they were all sort of but that if they if they had chosen to do it in Java they had been too late and nobody would have been interested in acquiring their startup and that story sort of that at some point Python was like people wouldn't tell you that they were using Python because it was their secret weapon but eventually the obviously the word came out but sort of that is sort of where we're pythons productivity and and sort of all the things that that went into this from the large standard library to the active community to my sort of sense of keeping the the design coherent all sort of came together and contributed to the success earlier you mentioned the Zen of Python so that's sort of this list of 19 sort of aphorisms that classically it's a poem oh that's true the author says that it's a poem but yeah they're aphorisms so that sort of lay out the philosophy of Python so I'll just name off the first couple like beautiful is better than ugly explicit it's better than implicit simple as better than complex so how did this come about and how does this you know how does this reflect your view of Python and also the the values of the Python community so it was written by a guy named Tim Peters who I think first showed up in the Python community in the early 90s he was actually a compiler expert working for some unknown mainframe company and and he he somehow decided that he enjoyed working on Python and working with Python in his spare time and he started giving me advice he was the first to observe that I had done something stupid with integers and floating point numbers and he told me it very friendly but sort of full of authority way that I should change that and that sort of became the be I think that was one of the starting points of a very long lasting relationship where he's been just a great collaborator and in I think in 2000 we finally started working together in a startup that was was that there was a terrible thing that start up but it got Tim Peters sort of out to Northern Virginia to work with me and that was good and I think during those days he some I mean he had been sort of guiding many newbies and and others on the Python mailing lists giving excellent advice always answering questions he had this thing channeling Guido where he sort of he knew how I thought about language design and he could articulated well and explain it well to people who were asking questions and sort of he kept them from bugging me and so he he knew Python very well at the time I think he probably knew it better than anyone patent besides me and so somehow he the the way his brain worked he he came up with sort of I don't know how long he worked on it but he came he came up with all these sort of short slogans that that sort of described together describe pythons philosophy and it sort of it became underground hit in the community somehow yeah buted that the first one beautiful is better than ugly nobody can argue with that but explicit is better than implicit is sort of is is already positioning itself against Perl for example and I've never sort of been a fan of sort of the time of language debate where you say this language is better than that I guess I had enough of that in the Fortran versus Algol 60 days so I never wanted to come out myself and say I think python is better than Perl I would always couch it in well for this particular application Python has more tools or if you if you like sort of to read if you'd like to share your code it's easy more readable in Python other people would sort of turn this into sort of Python versus Perl Wars and I was trying to tell people don't don't be so direct about it there's room enough for all of us but yeah the Zen of Python somehow is still often quoted actually is probably only five or six of the the 19 that are referenced a lot exploit is about explicit is better and implicit is is one there's only one way to do it which is incredible exaggeration and that that one is the sort of the most directly opposing perl probably flat is better than nested that's something he just observed in sort of how I structured Python standard library so let's talk about the community and also open source so how did you get involved in in the open source community and and what led you to open source Python well so first that sort of chronologically Python was open source before the term open source had even been invented the reason that I sort of made Python available was not quite an accident somehow the amoeba team at CWI also did a bunch of stuff with x11 an early windowing system x11 was created by this collaboration between industry and academia and to save everyone trouble it was licensed under something that was essentially what is still known as the MIT license it's now a famous open-source license at the time it was just the lies there it was I think it was just the x11 license oh that's the only one that I knew when I released Python in I think February 91 I [Music] realized that there had to be a license on there I mean smaller bits of source code or bits of code that were written by sort of individuals in their spare time were often released as freeware and various other things including shareware where you sort of were asked to pay but not require to pay is a whole bunch of variations I had a day job I mean CWI paid me a salary so I didn't want to make money off Python and was also not very commercially interested so but but I felt there had to be a license and I had seen that x11 license as sort of a good example of a software license that was short enough that I could understand that and it looked like it was entirely unoffensive to people who would possibly want to use it and so I don't know the week before we were planning the release I went to some assistant I think of CWI's management who went over legal business and I said hey we're gonna release this piece of source code and we we don't want to make money off air there wasn't made for money it was sort of it's a byproduct of a bit of research that we're doing would you be okay if I used this particular license and she said ok I'll get back to you on that and I I didn't know I think that within a day or a few days she said sure yeah the management has signed off on that I have no idea if she just signed off on it herself or if she had to go to the director or how that worked but that was that was that and we released it with and I always sort of tried to make this Monty Python joke it was the MIT license with MIT crossed out and CWI written in crayon and so all through the 90s Python went out with that license and when I moved to the US and started working for seeing her I'd a sort of their lawyers were not so keen on that license but they realized that it being released under that license for a long time and they couldn't really change it at least not immediately they asked me to add one sort of innocent paragraph sort of recognizing that CNRI also had something to do with it and then I think maybe through Tim O'Reilly who was probably already publishing a Python book this was like the second half of the 90s I got in touch with a guy named Eric Raymond and oh I think that Eric Raymond had just been pushing the idea of the open source and the specific term open source had been very recently invented and I think that Tim O'Reilly invited me to come to the west coast for a few days for the very first open source summit where a sort of a bunch of people who had created or worked on big open source projects or wealth free software projects we're all getting together and sort of agreeing that they should use this term because it was it was was there was an issue of terminology there was also the Free Software Foundation Richard Stallman's organization the GNU project who were in sort of in my view their sort of their attitude is the more communist view of the world we want everything to be free and they were like in in contrast with Eric Raymond's side of the party which was more make it free so that everyone can benefit without sort of enforcing things on others and because python was essentially open-source because the license was just a copy of the MIT license and because somebody recognized that iPhone was was sort of an influential thing they invited me to that meeting I also remember that around the same time work probably just before that time someone else who was a little more tuned into that world another Python core developer was sort of asking me so from now on are we going to call Python open source instead of what would I didn't know what we used before me we just said Python is free software and at first I thought well why would why should we use this different terminology but I think after I had met Eric Raymond I was sold on the ideas yeah so I started by sort of I I always wanted my software to be shared anything I'd written I always wanted Auto to to other people to use and even when I was sort of down in the basement of the math department so releasing Python was never sort of a question I always wanted to release it and it was traditional I think on Usenet too to have news groups specific to various bits of technology we started actually right after the release we started with a mailing list and it was was very primitive thing because there was no mailing list management software there was just like a file containing email addresses that lived in my home directory and if you send email to a special to Python list at CWI Delta NL the mail server at CWI just peaked in my home directory and expanded the list terrible security problems but that's how it was and so when we had 700 people on the list in the summer of 94 or so or the spring of 94 some people said well there's really too many of us to do this as a mailing list we should have a Usenet newsgroup and there was already a sort of scan of naming scheme so people started saying we got to have calm thought Lang no Python and I was an avid reader Ofcom little angled everything but they didn't know how to create new ones and I knew that there was some kind of bureaucracy so I told I told my followers well if you want to if you want a newsgroup go figure out how to do it and then just do it and I'll start using it and so people did it and then people said well we want to have a physical get-together of Python users and someone said ok I'll try to organize that and we had the first Python workshop that's where I also got sort of got this job offer in the US because the workshop was in Northern Virginia actually now was the workshop was in Maryland and at NIST so the community just sort of grew itself there were more and more people who sort of thought this is a cool language GUI there was a nice person and he's responsive because that the one thing I cared about was sort of keeping people happy so if people sent me a cool idea then if if they send me code there was likely that I would just sort of merge that code into Python if they sent me an idea sometimes I would sort of implement the idea if I liked it if I mean if if they send me something I didn't like I would was sort of direct enough to say oh I don't like that or you can solve that problem much simpler without changing the language but there was sort of there was a lot of interactivity and I guess people sort of liked that style of online community and like so many other online communities started growing around the same times of course and so that first workshop we was with everybody who went to that workshop was super happy and proud and so someone volunteer to organize the second Python workshop and then someone organized the third Python workshop and before we knew it the way we had hundreds of people showing up and it was like an annual business instead of every six months and so it's it's always being the community has sort of grown itself and self organized and whenever there was that whenever there were things that that weren't working right somehow people started sort of asking for help or for direction or proposing changes and so we we sort of got our release versioning sorted out and we got a process for proposing changes to the language so that debates don't sort of go on forever or get restarted every six months and the worst we're still learning we're still growing and we always look for good ideas in other communities other languages other big software systems but sometimes we also sort of lead the way that sort of Python enhancement proposal system which we actually sort of borrowed from the IITs RFC system but we we tone it down are the RFC's are very sort of strict so we tweaked out a bit and then other languages started doing the same thing so then you it seems like in the beginning you you when you just had a mailing list that people would email you their contributions directly and you would just you would integrate them directly at what point was it was there a more formal contribution process where there was like source control and everything and a repository and things like that well so originally there was I had source control but it wasn't shared there was no server I have commits going back to I think August of 1990 so the first eight months or so are lost I mean it's just one one initial commit that has Python as it was in 1990 but after that everything was done through source control and we've used every single source control system that was invented since then I think but originally I did all the review and I merged everything into the repository and what there wasn't shared and whether the way that sort of things can't work came out was just like regular releases so I I did like I didn't know the first release as initially probably did it release every month or every few months or so and sometimes the word there would be that sort of if there was a screw-up that would be next another release a week later but not too often because I learned from the attitude sort of double-check the releases I think in the lay in the late 90s when I worked at CNRI a senior I hosted an internal CVS server and some of my colleagues who were also working on Python also had write access to that repository so that lightened the load a bit then when we left CNRI we switched to one of the first public source control servers which was what was it I think it was subversion hosted by SourceForge yeah and at the time SourceForge was a really cool thing now it's it's dis dis like I didn't know it's the bad neighborhood of source control but when it started that was really cool and we sort of in in 2000 when when the whole Python labs team left CNRI and that's when we we sort of also when Tim Peters joined us as a team member and we all worked for this horrible startup that collapsed in in within six months and after that we were rescued by a different startup that was much better home for Python but we innovated tremendously that year and so that's also when the the pepp system came up basically the whole suddenly we had five people the whole Python Labs team when we were doing nothing but Python so we were improving the interpreter and every aspect of the language but we were also working on the process and sort of community management and websites and fighting lawyers sometimes and and behind-the-scenes discussions with Stallman to make sure that it was both open-source and GPL compatible but yeah the the process sort of improved quite a bit the community also yet again reinvented the conference cycle into a completely self organized group called PyCon oh yeah we created the Python Software Foundation which is sort of technical the modern organization of pipe Baikal and also the all the intellectual properties owned by the PSF and that that was necessary so that we had clear legal status to keep by from open source forever for everyone and that existed separately from your actual employer yeah the PSF was was it was a nonprofit with me as a president and a few sort of Python luminaries as board members and there was one guy who knew a bit about legal stuff who had made sure that was properly registered and all that but yeah that's what that was that that was fortunately completely separate from from employment and from then on I've always managed to keep that clearly separated how did you become the benevolent dictator for life the designated yeah DFL yeah the benevolent dictator for life that was a joke title that was assigned during some meeting of a bunch of Python luminaries in the late 90s and I didn't know then an email that reports from that meeting I think his online I forget with all the other titles were they were like they were all funny and and all had very little to do with what people are actually doing there was there were there wasn't really an organization it was just a bunch of people interested in Python but so I was given the title benevolent dictator for life sort of reflecting the tension between being this sort of the lead designer and sort of having to balance my sense of what's right with what people actually want and what and and and deciding what to do if not everybody wants the same thing and that's that's still them I'm still stuck with that role yeah well that's also another Monty Python reference correct it it is not actually literally from Monty Python it I think that none of the terms we assigned at that time were direct Monty Python references but sort of each of them was sort of jocular in sort of in a way that was aligned with Monty Python sense of humor you you just spoke about that tension you know what how what do you open-source projects need like you know something like a benevolent dictator or at least a core group of maintainer x' who control the process and you know how does that you know how how do you manage that tension between control and you know democratic participation which you know was yeah it open source there there's no no one answer for that I think every open source project needs some kind of structure but depending on sort of the nature of the projects and the nature of the people involved many different structures work Linux I think is organized somewhat similar to Python at a larger scale where there's also sort of one strong guy at the top and there are lieutenants and sort of there's not really a democracy but the the guy the top tries to sort of listen to everyone to the extent that's that there's time that's that's what I try to do to I know the original Apache web server was created by collective of people none of which really wanted to sort of step forward and be the leader and so they they created them explicitly sort of not necessarily democratic structure but they created a structure where there was like a group of leadership where everyone had the same power I don't know if they still do it that way they're there but there there are many different sort of ways of organizing a project a lot of small projects just start with one guy or one woman at the top and often until the project is super successful that one person is really the only developer and some projects are incredibly successful with one developer and like everyone else is just a user some projects sort of quickly acquire other developers who are interested in contributing if the project is healthy then they they find a structure where it's clear sort of where the buck stops what sort of the ultimate responsibility is who gets credit it's sometimes possible for projects to sort of accidentally fall into success without having figured that out and that's when you you sort of get all kinds of unhealthy things where that could be infighting or just sort of disagreement on who gets credit for the project I just read up about a project named 0 mq where apparently at some point a number of the original developers just decided that they were tired of the project and they started it's sort of a clone enough of 0 mq under a different name usually those things don't don't end so well but yeah they're there all sorts of different structures possible I mean there is Perl where for the longest time Larry wall was sort of where the buck stops and then at some point I think the early 2000s Larry decided that he wanted to focus on developing Perl 6 and Perl 5 was left in sort of for I for a while I think there was a leadership vacuum where that sort of the people who had previously been Larry's lieutenants suddenly had to figure out how to decide without being able to fall back on Larry I think they're mostly figured it out although I heard that recently they're they're still there there have been some continued arguments I think maybe Perl 6 versus Perl 5 is is now again an issue now that Perl 6 has finally been released it's but sort of it's it's important to have have clarity about your structure so that the mean when when everything is is sort of clear sailing you don't have to worry about anything but when when things are sort of when some unexpected thing strikes you you need to to know what to do you need to have some kind of fallback mechanism you need you need to have a well where does the buck stop or what what do you do I mean that actually one one of the early threads that started the Python community was also what if guida were hit by a bus where people realized that they sort of there had to be some kind of contingency planning in case I will no longer personally be able to to run the community you've also been described as pythons chief evangelist so what what do you do in that informal role I didn't know that that that's interesting that I mean an evangelist is typically someone who goes out and spreads the word and I do actually very little of that I probably did more of that in the past but these days almost all my speaking engagements and I have very few of those there they're mostly internally focused they're like in the Python community I give talk at a conference for Python users and developers so I don't go out I don't go to general computer conferences and speak I don't write about Python at least not much I mean I have a blog but it sort of hardly write there anymore so the evangelism I do maybe more sort of implicit just through sort of being a good person and and sort of encouraging the community to behave in a certain way and sort of make their whole community be the evangelists to the outside world if there is such a thing how has the language change in the language reflected the growth of the community or change in the community well that sort of growth of the community and growth of the sort of the Python user base the the main effect of that has been to slow down developments that is not completely true because sometimes it feels like we've learnt were sort of we're changing the language more these days then maybe we did five years ago but most of the time I think most of the effect of growth has been to sort of become more conservative in language design like if in 92 you told me that a certain thing that Python had always done was completely ridiculous and should absolutely be changed and maybe you may be objectively death was it was the case that Python was doing the wrong thing like not allowing integers to be added to floating-point numbers in 92 it was easy to change I wasn't all that worried about what would happen to the user's code that was already written because I was aware that most of Python most of the world's Python code hadn't been written yet and the users were like early adopters and they were they were very sort of supportive of change as long as the change was for the better and now everybody always wants one new feature and they don't want anything else to change but that was a very forgiving group of users and like in early 2000s I remember being surprised at the Python conference where there was like a delegation of users came to me and I think they had even selected another senior person to sort of represent them so that they were sure that they were that I would hear them they came to me and they said Python is developed is releasing new versions to fast we can't up we can't keep up with upgrades sort of you got to paste the releases so ever since the early 2000s Python has sort of had a release schedule where with a few exceptions but the sort of the general rule is releases are eighteen to twenty four months apart farther than that it becomes awkward because you have to wait too long for for a new feature to actually land but shorter than a year and a half means that users are constantly struggling to keep up and so that is a real real change and I expect that in the next decade we'll sort of we'll have to revisit that the release cycle and and what we do with features versus bug fixes versus compatibilities we'll have to change that again yeah one one of the things we also have is there is now not only is the release cycle really slow but we're also incredibly conservative in sort of compatibility with the exception of Python 3 versus Python 2 in general new versions of Python must run older sort of programs that were written with older versions in mind now there there are definitely languages that are even stricter than that Java is stricter well Java also still has made way more users than Python C++ is even stricter again C++ probably has even more users C is probably well for C it doesn't matter because that language doesn't change any more so they don't have compatibility issues in that sense but it's sort of every decade sort of we we have to become more conservative and that also means that sort of the filter I have to apply or that sort of the core dev supply for deciding whether a new feature is worth including in the language when it's proposed becomes more and more strict again in in in the early 90s someone sent me a mega patch that introduced functions filter reduce and lambda notation and I hardly knew what the plan was with that and I had only a very rudimentary understanding of functional programming at the time but I could see some of the cool things you could do with that and the person who gave it to me sounded like they knew what they were talking they were obviously a very good programmer they sort of had studied Python source code very well to be able to construct that complicated patch and so I accepted it yeah I tweaked the layout of the C code bit maybe but essentially that a new feature of that magnitude would require a huge foray into the pet process that these days they would be treated completely differently and it probably wouldn't make it you'd have to argue that like a large number of Python users would benefit from this this language change and and and so the standard library is also very different I mean the old standard library had a lot of things that were really more demos than than useful utility modules or just things that that that I thought were fun to have and now the standard library is sort of like it's already huge but it's not growing at the same pace as the collection of third-party code that we have on the the package archives because the sort of the standard library is is beholden to this this gold standard of compatibility
Info
Channel: Computer History Museum
Views: 29,335
Rating: 4.954802 out of 5
Keywords: Python, ALGOL, Pascal, ABC, Amoeba, Modula, Unix, DEC SRC, CNRI, Lambert Meertens, Sape Mullender, Andrew Tanenbaum, University of Amsterdam, SARA, CWI, open source, Benevolent Dictator for Life, Eric Raymond, Tim O’Reilly, Monty Python, object-oriented programming, modular programming., Computer History Museum, Oral history
Id: Pzkdci2HDpU
Channel Id: undefined
Length: 191min 59sec (11519 seconds)
Published: Thu Jul 26 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.