microsoft/TypeAgent
Publicmirrored fromhttps://github.com/microsoft/TypeAgentAvailable
python/ta/testdata/PythonDocumentary.vtt
3037lines · modecode
| 1 | WEBVTT |
| 2 | Kind: captions |
| 3 | Language: en |
| 4 | |
| 5 | 00:00:00.800 --> 00:00:04.901 |
| 6 | Did you think Python was going to get |
| 7 | popular from the beginning or? |
| 8 | |
| 9 | 00:00:05.520 --> 00:00:08.956 |
| 10 | [Music] |
| 11 | |
| 12 | 00:00:14.533 --> 00:00:21.280 |
| 13 | Python has contributed to making critical thinking a |
| 14 | little more approachable by more people. |
| 15 | |
| 16 | 00:00:21.280 --> 00:00:23.478 |
| 17 | You can spend one to two hours, |
| 18 | |
| 19 | 00:00:23.478 --> 00:00:25.520 |
| 20 | learning programming fundamentals |
| 21 | |
| 22 | 00:00:25.520 --> 00:00:28.120 |
| 23 | and then you can write like |
| 24 | 10 to 20 line of code |
| 25 | |
| 26 | 00:00:28.120 --> 00:00:29.353 |
| 27 | that do something interesting. |
| 28 | |
| 29 | 00:00:29.353 --> 00:00:32.400 |
| 30 | The language, the community, the ecosystem, |
| 31 | |
| 32 | 00:00:32.400 --> 00:00:37.464 |
| 33 | the market, the whole thing has had such an |
| 34 | impact on humanity. |
| 35 | |
| 36 | 00:00:37.464 --> 00:00:40.575 |
| 37 | Today, I think it's safe to say that almost |
| 38 | anywhere there's a computer, |
| 39 | |
| 40 | 00:00:40.575 --> 00:00:42.200 |
| 41 | there's probably some Python. |
| 42 | |
| 43 | 00:00:42.200 --> 00:00:44.360 |
| 44 | It's literally on Mars. |
| 45 | |
| 46 | 00:00:45.306 --> 00:00:49.056 |
| 47 | The impact of AI, I think we're still |
| 48 | seeing what that's going to be. |
| 49 | |
| 50 | 00:00:49.056 --> 00:00:51.240 |
| 51 | Python is incredibly important for that. |
| 52 | |
| 53 | 00:00:52.147 --> 00:00:56.880 |
| 54 | To fully understand how Python got |
| 55 | so big, we have to go back in time. |
| 56 | |
| 57 | 00:01:00.000 --> 00:01:01.600 |
| 58 | Maybe not that far back. |
| 59 | |
| 60 | 00:01:02.746 --> 00:01:05.240 |
| 61 | Everything started back in Amsterdam in the 80s |
| 62 | |
| 63 | 00:01:05.240 --> 00:01:08.920 |
| 64 | during my time at CWI, a Dutch research facility. |
| 65 | |
| 66 | 00:01:11.440 --> 00:01:17.263 |
| 67 | The CWI had been behind a lot of major |
| 68 | programming language developments. |
| 69 | |
| 70 | 00:01:17.520 --> 00:01:20.503 |
| 71 | Algol 60 and Algol 68 for instance. |
| 72 | |
| 73 | 00:01:20.880 --> 00:01:25.748 |
| 74 | And Lambert Meertens had tried |
| 75 | teaching programming to artists |
| 76 | |
| 77 | 00:01:25.748 --> 00:01:28.240 |
| 78 | and discovered things about |
| 79 | |
| 80 | 00:01:28.240 --> 00:01:34.720 |
| 81 | programming that are easy, if you're a scientist |
| 82 | or a geek. But for somebody like an artist, |
| 83 | |
| 84 | 00:01:34.720 --> 00:01:39.732 |
| 85 | those things weren't obvious because you had to |
| 86 | know something about the computer. |
| 87 | |
| 88 | 00:01:39.732 --> 00:01:44.240 |
| 89 | The cause of the frustration was the low level |
| 90 | of the languages that were available. |
| 91 | |
| 92 | 00:01:44.240 --> 00:01:48.466 |
| 93 | The computers were immensely |
| 94 | expensive and compared with that |
| 95 | |
| 96 | 00:01:48.466 --> 00:01:51.361 |
| 97 | a programmer was really really cheap |
| 98 | |
| 99 | 00:01:51.361 --> 00:01:53.680 |
| 100 | and so programming languages |
| 101 | |
| 102 | 00:01:53.680 --> 00:01:57.223 |
| 103 | were designed with that |
| 104 | economic relationship in mind. |
| 105 | |
| 106 | 00:01:57.579 --> 00:02:00.168 |
| 107 | It didn't matter if it took a long time to |
| 108 | |
| 109 | 00:02:00.168 --> 00:02:06.880 |
| 110 | program as long as it didn't demand too much of |
| 111 | the computer because that's where the cost was. |
| 112 | |
| 113 | 00:02:06.880 --> 00:02:11.440 |
| 114 | We looked at each other and said, can't we do a |
| 115 | better job? Can't we design a language that is |
| 116 | |
| 117 | 00:02:11.440 --> 00:02:15.600 |
| 118 | easy to learn, easy to teach, |
| 119 | but also easy to use. |
| 120 | |
| 121 | 00:02:15.600 --> 00:02:18.400 |
| 122 | So that beginners could |
| 123 | understand how to program |
| 124 | |
| 125 | 00:02:18.400 --> 00:02:22.348 |
| 126 | without having to go into all |
| 127 | those messy hardware details. |
| 128 | |
| 129 | 00:02:22.348 --> 00:02:25.320 |
| 130 | And that's how the ABC project was born. |
| 131 | |
| 132 | 00:02:27.920 --> 00:02:31.652 |
| 133 | One of the members of the team |
| 134 | was Guido van Rossum. |
| 135 | |
| 136 | 00:02:31.652 --> 00:02:37.496 |
| 137 | [Music] |
| 138 | |
| 139 | 00:02:39.680 --> 00:02:46.320 |
| 140 | I was hired to work on ABC for which |
| 141 | there was a small prototype but every |
| 142 | |
| 143 | 00:02:46.320 --> 00:02:52.560 |
| 144 | part of the prototype had to be expanded |
| 145 | to fully working according to the spec. |
| 146 | |
| 147 | 00:02:54.160 --> 00:03:01.840 |
| 148 | In 1985, we made the release of ABC. And |
| 149 | then we hit the problem: how to make the |
| 150 | |
| 151 | 00:03:01.840 --> 00:03:05.120 |
| 152 | world know that there was ABC? |
| 153 | |
| 154 | 00:03:05.120 --> 00:03:11.080 |
| 155 | We did not have a good way of |
| 156 | reaching our intended audience. |
| 157 | |
| 158 | 00:03:11.080 --> 00:03:12.840 |
| 159 | The web did not exist. |
| 160 | |
| 161 | 00:03:12.840 --> 00:03:17.560 |
| 162 | Most people had never heard of |
| 163 | a computer or even seen one. |
| 164 | |
| 165 | 00:03:17.600 --> 00:03:23.182 |
| 166 | If anybody wanted a copy, they had to send us |
| 167 | a letter and we'd send them a floppy disc. |
| 168 | |
| 169 | 00:03:24.300 --> 00:03:30.640 |
| 170 | So I'm afraid ABC reached very few people and |
| 171 | at some point the directors for reason, that |
| 172 | |
| 173 | 00:03:30.640 --> 00:03:33.960 |
| 174 | I still don't understand, killed that project. |
| 175 | |
| 176 | 00:03:33.960 --> 00:03:38.720 |
| 177 | I had spent, well, 3 and 1/2 years of hard work |
| 178 | |
| 179 | 00:03:39.202 --> 00:03:44.481 |
| 180 | on this language and the implementation |
| 181 | to make it as as good as we could. |
| 182 | |
| 183 | 00:03:44.481 --> 00:03:45.812 |
| 184 | So it was disappointing. |
| 185 | |
| 186 | 00:03:46.320 --> 00:03:49.594 |
| 187 | [Music] |
| 188 | |
| 189 | 00:03:49.594 --> 00:03:55.280 |
| 190 | Guido was transferred to another |
| 191 | project on a distributed operating system, |
| 192 | |
| 193 | 00:03:55.280 --> 00:03:56.680 |
| 194 | the amoeba system. |
| 195 | |
| 196 | 00:03:58.763 --> 00:04:03.360 |
| 197 | One of my jobs at that project as |
| 198 | the programmer, not the researcher, |
| 199 | |
| 200 | 00:04:03.360 --> 00:04:09.569 |
| 201 | was to write, or help write, a large |
| 202 | number of user applications. |
| 203 | |
| 204 | 00:04:09.920 --> 00:04:12.169 |
| 205 | And I didn't actually think |
| 206 | |
| 207 | 00:04:12.169 --> 00:04:16.860 |
| 208 | that for many of those utilities C was a |
| 209 | very good language. |
| 210 | |
| 211 | 00:04:18.181 --> 00:04:19.992 |
| 212 | And I thought, well, |
| 213 | |
| 214 | 00:04:19.992 --> 00:04:27.120 |
| 215 | oh man, if we just could program ABC instead of |
| 216 | C, each of those utilities would be like half a |
| 217 | |
| 218 | 00:04:27.120 --> 00:04:32.960 |
| 219 | page of code and I could write the entire suite |
| 220 | of utilities in a couple of weeks instead of the |
| 221 | |
| 222 | 00:04:32.960 --> 00:04:35.800 |
| 223 | years that it looked like it |
| 224 | was going to take us. |
| 225 | |
| 226 | 00:04:35.800 --> 00:04:40.840 |
| 227 | Except that ABC was so high and abstract, |
| 228 | |
| 229 | 00:04:40.880 --> 00:04:49.120 |
| 230 | it wasn't a good language to talk to servers |
| 231 | and file systems and processes and it sort of |
| 232 | |
| 233 | 00:04:49.120 --> 00:04:56.080 |
| 234 | the whole operating system thing was abstracted |
| 235 | away from ABC. So I thought, well, there really |
| 236 | |
| 237 | 00:04:56.080 --> 00:05:03.040 |
| 238 | ought to be a language that sort of bridges the |
| 239 | gap between C and shell. And we looked at Perl and |
| 240 | |
| 241 | 00:05:03.040 --> 00:05:11.120 |
| 242 | we didn't think it was any good as a programming |
| 243 | language. It was about as bad as as Basic, |
| 244 | |
| 245 | 00:05:11.120 --> 00:05:18.880 |
| 246 | although in different ways. So, Python was also |
| 247 | in a part built as an alternative to Perl. That's |
| 248 | |
| 249 | 00:05:18.880 --> 00:05:24.120 |
| 250 | where I decided, oh well, I'm going to see if |
| 251 | I can make my own programming language. |
| 252 | |
| 253 | 00:05:24.120 --> 00:05:27.602 |
| 254 | [Music] |
| 255 | |
| 256 | 00:05:28.720 --> 00:05:34.800 |
| 257 | One Christmas holiday, I believe, he decided |
| 258 | to spend his time designing and building a |
| 259 | |
| 260 | 00:05:34.800 --> 00:05:39.360 |
| 261 | new programming language for the operating |
| 262 | system based on the principles that he'd |
| 263 | |
| 264 | 00:05:39.360 --> 00:05:40.808 |
| 265 | learned while on the ABC project. |
| 266 | |
| 267 | 00:05:41.773 --> 00:05:46.080 |
| 268 | It was logical that I would |
| 269 | start with ABC as an example. |
| 270 | |
| 271 | 00:05:46.080 --> 00:05:51.840 |
| 272 | The most prominent feature that |
| 273 | Python borrowed from ABC is actually the use |
| 274 | |
| 275 | 00:05:51.840 --> 00:05:59.040 |
| 276 | of indentation for statement grouping. But it |
| 277 | was also logical that I sort of dropped the |
| 278 | |
| 279 | 00:05:59.040 --> 00:06:04.632 |
| 280 | things from ABC that I didn't particularly |
| 281 | like. That's how we ended up with Python. |
| 282 | |
| 283 | 00:06:10.000 --> 00:06:18.720 |
| 284 | Okay. I finally was confident enough of |
| 285 | the interpreter was complete enough that |
| 286 | |
| 287 | 00:06:18.720 --> 00:06:24.800 |
| 288 | I showed it to Lambert. He showed me a |
| 289 | language he had developed stealthily, |
| 290 | |
| 291 | 00:06:24.800 --> 00:06:31.120 |
| 292 | which he called Python, named after Monty |
| 293 | Python. I said look what I made. It was |
| 294 | |
| 295 | 00:06:31.120 --> 00:06:36.320 |
| 296 | clear to me that it had some resemblance |
| 297 | to ABC. The command line prompt is even |
| 298 | |
| 299 | 00:06:36.320 --> 00:06:43.920 |
| 300 | the same. So Lambert watched me type a few |
| 301 | things and.. Guido was excited about it and he |
| 302 | |
| 303 | 00:06:43.920 --> 00:06:48.240 |
| 304 | apparently thought I would be excited as well. |
| 305 | At some point he had seen enough and he said, |
| 306 | |
| 307 | 00:06:48.240 --> 00:06:54.827 |
| 308 | "Can I try something?" And he types one very |
| 309 | short line of code and it crashes the interpreter. |
| 310 | |
| 311 | 00:06:56.960 --> 00:07:02.640 |
| 312 | And he knew that that it would. The point |
| 313 | escaped me. I didn't know why he thought |
| 314 | |
| 315 | 00:07:02.640 --> 00:07:08.400 |
| 316 | this was better than ABC and why he had |
| 317 | done this whole project. I went back and |
| 318 | |
| 319 | 00:07:08.400 --> 00:07:15.120 |
| 320 | the next day I had a fix for it. But it was |
| 321 | a pretty crushing experience to be honest. |
| 322 | |
| 323 | 00:07:28.480 --> 00:07:32.720 |
| 324 | It must have been at least half a year |
| 325 | later, that I first got acquainted with |
| 326 | |
| 327 | 00:07:32.720 --> 00:07:40.240 |
| 328 | Python. So this is the office where Guido |
| 329 | and I were holed up when he created Python. |
| 330 | |
| 331 | 00:07:40.240 --> 00:07:47.360 |
| 332 | There were two important users. Sjoerd was |
| 333 | one of them and the other was Jack Jansen. |
| 334 | |
| 335 | 00:07:47.360 --> 00:07:54.720 |
| 336 | Guido was sitting over there and I was sitting |
| 337 | over there. If you want to prototype a program, |
| 338 | |
| 339 | 00:07:54.720 --> 00:08:01.280 |
| 340 | you sort of write the outlines of the program, |
| 341 | but it doesn't actually work. When you do this |
| 342 | |
| 343 | 00:08:01.280 --> 00:08:07.920 |
| 344 | in Python, it actually works. It's readable. |
| 345 | It's very easy to program and the indentation |
| 346 | |
| 347 | 00:08:07.920 --> 00:08:13.680 |
| 348 | is totally natural as far as I'm concerned |
| 349 | anyway. Sjoerd and Jack were the most active |
| 350 | |
| 351 | 00:08:13.680 --> 00:08:18.960 |
| 352 | in using Python. You find bugs, you find the |
| 353 | things that you want to extend and then telling |
| 354 | |
| 355 | 00:08:18.960 --> 00:08:26.000 |
| 356 | me about it because all they had to do was say, |
| 357 | "Hey, Guido." It was the first real interactive |
| 358 | |
| 359 | 00:08:26.640 --> 00:08:30.960 |
| 360 | systems programming language. So, you could just |
| 361 | sit and write and run it immediately without any |
| 362 | |
| 363 | 00:08:30.960 --> 00:08:39.040 |
| 364 | compilation. So, it was much more fun to use |
| 365 | than the old programming languages, but slower. |
| 366 | |
| 367 | 00:08:39.040 --> 00:08:43.440 |
| 368 | I think it was mostly Jack's idea in |
| 369 | the end, while we all worked on it, |
| 370 | |
| 371 | 00:08:43.440 --> 00:08:50.880 |
| 372 | to make an open-source release. CWI allowed |
| 373 | Guido to distribute Python to the world as |
| 374 | |
| 375 | 00:08:50.880 --> 00:08:55.760 |
| 376 | long as its copyright notice was there. They |
| 377 | would have held back if they had known it |
| 378 | |
| 379 | 00:08:55.760 --> 00:09:00.560 |
| 380 | would be such an incredible success, which |
| 381 | is good that they didn't know. Nobody knew. |
| 382 | |
| 383 | 00:09:00.560 --> 00:09:07.200 |
| 384 | I didn't either. Because if they had held back, |
| 385 | it would never have become an incredible success. |
| 386 | |
| 387 | 00:09:08.720 --> 00:09:13.200 |
| 388 | Then we had to actually physically do |
| 389 | the release which turned out to be an |
| 390 | |
| 391 | 00:09:13.200 --> 00:09:22.640 |
| 392 | incredible pain because Usenet was |
| 393 | the only thing we had to release it. |
| 394 | |
| 395 | 00:09:22.640 --> 00:09:30.400 |
| 396 | Usenet was a network of, you could say, bulletin |
| 397 | boards. People would write messages. They would |
| 398 | |
| 399 | 00:09:30.400 --> 00:09:35.600 |
| 400 | get distributed over the world and then there |
| 401 | were the groups for all the different computer |
| 402 | |
| 403 | 00:09:35.600 --> 00:09:44.800 |
| 404 | languages. Usenet had a very strict limit on |
| 405 | the size of a single post. First put your entire |
| 406 | |
| 407 | 00:09:44.800 --> 00:09:52.080 |
| 408 | source tree in a tarball. Then compress it and you |
| 409 | have to do another step where you turn the binary |
| 410 | |
| 411 | 00:09:52.080 --> 00:10:01.360 |
| 412 | data into ASCII encoding. So you have this huge |
| 413 | file with gobblygook, but it's at least printable |
| 414 | |
| 415 | 00:10:01.360 --> 00:10:09.040 |
| 416 | gobblygook. And then you apply another tool that |
| 417 | snips it into pieces. Then there is a script where |
| 418 | |
| 419 | 00:10:09.040 --> 00:10:16.400 |
| 420 | if you have downloaded all 21 parts, you can |
| 421 | undo all those operations in reverse. That was |
| 422 | |
| 423 | 00:10:16.400 --> 00:10:22.400 |
| 424 | what people put up with. So we did all the work on |
| 425 | our side and plenty of people did all the work on |
| 426 | |
| 427 | 00:10:22.400 --> 00:10:31.920 |
| 428 | their side to unpack this because I had apparently |
| 429 | written a very good teaser about what this was. |
| 430 | |
| 431 | 00:10:34.920 --> 00:10:42.240 |
| 432 | [Music] Very quickly I started getting feedback |
| 433 | via email or Usenet from people who had done |
| 434 | |
| 435 | 00:10:42.240 --> 00:10:50.960 |
| 436 | something exciting with it or who had |
| 437 | found a bug and that just kept coming. |
| 438 | |
| 439 | 00:10:50.960 --> 00:10:57.760 |
| 440 | We worked at Johnson Space Center. So our interest |
| 441 | was putting together flight simulations and tools |
| 442 | |
| 443 | 00:10:57.760 --> 00:11:05.680 |
| 444 | for the design engineers that would be used |
| 445 | for the shuttle program at the time. I remember |
| 446 | |
| 447 | 00:11:05.680 --> 00:11:14.960 |
| 448 | needing a scripting language to control a C++ |
| 449 | library project we were working on at the time. |
| 450 | |
| 451 | 00:11:14.960 --> 00:11:21.760 |
| 452 | Not too long into that search, I found Guido's |
| 453 | Python distribution at CWI. I was able to FTP |
| 454 | |
| 455 | 00:11:21.760 --> 00:11:33.840 |
| 456 | that down, unpack it, compile it, and run it in |
| 457 | a matter of 10 minutes or so. That was my first |
| 458 | |
| 459 | 00:11:33.840 --> 00:11:41.120 |
| 460 | impressive experience with Python. 20 years ago, a |
| 461 | computer that cost a million dollars and filled an |
| 462 | |
| 463 | 00:11:41.120 --> 00:11:48.240 |
| 464 | entire room had less capability than an 11 pounds |
| 465 | desktop computer today. With costs going down and |
| 466 | |
| 467 | 00:11:48.240 --> 00:11:53.600 |
| 468 | capabilities going up, the computer has entered |
| 469 | our lives quickly and unobtrusively. There were |
| 470 | |
| 471 | 00:11:53.600 --> 00:11:59.520 |
| 472 | lots of things changing in a major way that made |
| 473 | computing particularly exciting to be in. At that |
| 474 | |
| 475 | 00:11:59.520 --> 00:12:04.720 |
| 476 | time, computers suddenly were coming out of the |
| 477 | machine room and landing up on your desk. And |
| 478 | |
| 479 | 00:12:04.720 --> 00:12:10.480 |
| 480 | then of course the web happened. Then it all |
| 481 | exploded. After the internet came to Europe, |
| 482 | |
| 483 | 00:12:10.480 --> 00:12:17.920 |
| 484 | it was much easier for software to be distributed. |
| 485 | Python very slowly took off. Then there was |
| 486 | |
| 487 | 00:12:17.920 --> 00:12:30.240 |
| 488 | a growing Python community which was very |
| 489 | supportive like a big family you could almost say. |
| 490 | |
| 491 | 00:12:30.240 --> 00:12:37.520 |
| 492 | Part of the benefit of this is that I don't.. |
| 493 | I'm like, there's no strain on my body at all. |
| 494 | |
| 495 | 00:12:37.520 --> 00:12:45.920 |
| 496 | I was working on developing a kind of distributed |
| 497 | equipment database and a colleague at the lab, |
| 498 | |
| 499 | 00:12:45.920 --> 00:12:51.440 |
| 500 | Michael McLay, knew that I was looking for |
| 501 | what was called a scripting language that was |
| 502 | |
| 503 | 00:12:51.440 --> 00:12:57.200 |
| 504 | also sophisticated that would enable you to build |
| 505 | substantial things and not get bogged down in the |
| 506 | |
| 507 | 00:12:57.200 --> 00:13:04.240 |
| 508 | ragged edges. Scripting languages were designed |
| 509 | to glue things together, to connect things that |
| 510 | |
| 511 | 00:13:04.240 --> 00:13:10.320 |
| 512 | already worked, that already existed. Immediately |
| 513 | on trying it, I was just amazed and thought this |
| 514 | |
| 515 | 00:13:10.320 --> 00:13:18.960 |
| 516 | can't be as good as it is. And it was. Mike was |
| 517 | interested in bringing Guido over and Guido was |
| 518 | |
| 519 | 00:13:18.960 --> 00:13:26.320 |
| 520 | interested in coming over. 99% of the people that |
| 521 | I got in touch with were in the United States. |
| 522 | |
| 523 | 00:13:26.320 --> 00:13:33.600 |
| 524 | So Guido ended up coming and then Mike and Guido |
| 525 | and I wanted to arrange a workshop so people who |
| 526 | |
| 527 | 00:13:33.600 --> 00:13:38.800 |
| 528 | were interested in Python could gather and talk |
| 529 | about what they were working on and what they |
| 530 | |
| 531 | 00:13:38.800 --> 00:13:47.280 |
| 532 | felt was needed. This is the t-shirt for the first |
| 533 | conference. And so this yeah that that was just |
| 534 | |
| 535 | 00:13:47.280 --> 00:13:55.920 |
| 536 | sort of flowy writing and on the on the back it |
| 537 | gave the date of the conference. Spam, spam, spam, |
| 538 | |
| 539 | 00:13:55.920 --> 00:14:02.880 |
| 540 | spam. It's such a fantastic song. That workshop |
| 541 | really is for me the beginning of the Python |
| 542 | |
| 543 | 00:14:02.880 --> 00:14:09.280 |
| 544 | community. November 1994, Gaithersburg, Maryland |
| 545 | in this windowless government office building at |
| 546 | |
| 547 | 00:14:09.280 --> 00:14:15.200 |
| 548 | NIST. That was a great experience. It was about |
| 549 | two days. We had 20 people. I still have the |
| 550 | |
| 551 | 00:14:15.200 --> 00:14:20.960 |
| 552 | t-shirt from that workshop. There was just kind |
| 553 | of this feel of, hey, there's something happening. |
| 554 | |
| 555 | 00:14:20.960 --> 00:14:26.480 |
| 556 | This will be fun to hang out with the people |
| 557 | that I chat with online, to actually see Guido |
| 558 | |
| 559 | 00:14:26.480 --> 00:14:31.840 |
| 560 | in person and actually make decisions. And we knew |
| 561 | that if you impressed him with the feature and it |
| 562 | |
| 563 | 00:14:31.840 --> 00:14:35.840 |
| 564 | was an easy thing to install, he would add it to |
| 565 | the language right there so that we can at least |
| 566 | |
| 567 | 00:14:35.840 --> 00:14:39.840 |
| 568 | try it out in beta form. There was like a whole |
| 569 | room of people who knew what you were talking |
| 570 | |
| 571 | 00:14:39.840 --> 00:14:51.680 |
| 572 | about because they had all studied Python deeply |
| 573 | or almost all. One of the people was Barry Warsaw. |
| 574 | |
| 575 | 00:14:51.680 --> 00:15:01.840 |
| 576 | [Music] Around 1994, I joined a company, CNRI, |
| 577 | Corporation for National Research Initiatives, |
| 578 | |
| 579 | 00:15:01.840 --> 00:15:07.840 |
| 580 | and we were building these software agents, |
| 581 | little programs that can move around to |
| 582 | |
| 583 | 00:15:07.840 --> 00:15:12.400 |
| 584 | different computers on a network, and they pickle |
| 585 | themselves up and move around to another place and |
| 586 | |
| 587 | 00:15:12.400 --> 00:15:18.960 |
| 588 | reconstitute themselves and do some more work. |
| 589 | A friend of mine from NIST sent me an email and |
| 590 | |
| 591 | 00:15:18.960 --> 00:15:22.880 |
| 592 | said, "Hey, we've got this guy coming over from |
| 593 | the Netherlands and he's going to talk about his |
| 594 | |
| 595 | 00:15:22.880 --> 00:15:28.320 |
| 596 | language. Do you want to come?" And so we went |
| 597 | to the workshop and just absolutely fell in love |
| 598 | |
| 599 | 00:15:28.320 --> 00:15:36.400 |
| 600 | with of course Python and of course Guido. Even |
| 601 | then, it had the feeling that there was a there |
| 602 | |
| 603 | 00:15:36.400 --> 00:15:42.080 |
| 604 | there was something that was going to happen |
| 605 | that there was potential. I remember coming |
| 606 | |
| 607 | 00:15:42.080 --> 00:15:48.080 |
| 608 | back to CNRI saying, "Oh, this is great. we're |
| 609 | going to use Python for sure in our project. And |
| 610 | |
| 611 | 00:15:48.080 --> 00:16:04.480 |
| 612 | one of our colleagues at CNRI said, "Well, what |
| 613 | do you think? Why don't we just hire Guido?" |
| 614 | |
| 615 | 00:16:04.480 --> 00:16:11.040 |
| 616 | CNRI was set up to sort of promote information |
| 617 | infrastructure and foster research, help build |
| 618 | |
| 619 | 00:16:11.040 --> 00:16:16.800 |
| 620 | pilot projects, take the results and put |
| 621 | them out into the public so that others |
| 622 | |
| 623 | 00:16:16.800 --> 00:16:22.160 |
| 624 | could then leverage it. Part of CNRI's mission |
| 625 | was to cultivate internet based things. That's |
| 626 | |
| 627 | 00:16:22.160 --> 00:16:30.560 |
| 628 | why our name Corporation for National Research |
| 629 | Initiatives has the word "initiatives" in there. |
| 630 | |
| 631 | 00:16:32.720 --> 00:16:40.880 |
| 632 | We had a need for a language that would be easier |
| 633 | for people to deal with than any other traditional |
| 634 | |
| 635 | 00:16:40.880 --> 00:16:46.960 |
| 636 | languages that were around at the time. I ran |
| 637 | across a photograph. There was a party at CNRI, |
| 638 | |
| 639 | 00:16:46.960 --> 00:16:56.640 |
| 640 | years ago. It was probably I think 1996. |
| 641 | And it's it's a Guido. Yeah. I used to say |
| 642 | |
| 643 | 00:16:56.640 --> 00:17:02.560 |
| 644 | Guido. Many people say Guido, but I said Guido |
| 645 | and I'm sure I don't pronounce it right. Oh, |
| 646 | |
| 647 | 00:17:02.560 --> 00:17:07.840 |
| 648 | he was a very stylish person and he was a very |
| 649 | strong fellow. Got introduced to him and it just |
| 650 | |
| 651 | 00:17:07.840 --> 00:17:13.760 |
| 652 | seemed like it was a good fit and so I made the |
| 653 | job offer. For me, it was fantastic. There is no |
| 654 | |
| 655 | 00:17:13.760 --> 00:17:18.800 |
| 656 | doubt about that. One of the things he insists on |
| 657 | if you want to get him to work for you is that he |
| 658 | |
| 659 | 00:17:18.800 --> 00:17:25.360 |
| 660 | has some fraction of his time, preferably as much |
| 661 | as halftime if not more, to work on the language |
| 662 | |
| 663 | 00:17:25.360 --> 00:17:31.600 |
| 664 | itself. the fact that they could work full-time |
| 665 | on Python because it turned out that the Knowbots |
| 666 | |
| 667 | 00:17:31.600 --> 00:17:38.880 |
| 668 | project was almost more an excuse to to hire |
| 669 | me than I did much for that. I kind of feel |
| 670 | |
| 671 | 00:17:38.880 --> 00:17:44.880 |
| 672 | like our work on Python was a little subversive. |
| 673 | You know, we tended to spend a lot more time on |
| 674 | |
| 675 | 00:17:44.880 --> 00:17:50.640 |
| 676 | Python than maybe we should have. I went to |
| 677 | CNRI and since I had been a systems person, |
| 678 | |
| 679 | 00:17:50.640 --> 00:17:56.800 |
| 680 | I was responsible for setting up python.org. We |
| 681 | should have also grabbed python.com even though |
| 682 | |
| 683 | 00:17:56.800 --> 00:18:01.760 |
| 684 | we didn't think of Python as a commercial |
| 685 | enterprise because someone else got it and |
| 686 | |
| 687 | 00:18:01.760 --> 00:18:13.680 |
| 688 | uh used it to host a stupid porn site. For years |
| 689 | we had to warn people go to python.org, not .com. |
| 690 | |
| 691 | 00:18:13.680 --> 00:18:18.960 |
| 692 | It really was the perfect home, I think, for doing |
| 693 | all of that early Python development - and develop |
| 694 | |
| 695 | 00:18:18.960 --> 00:18:24.320 |
| 696 | a lot of the infrastructure around Python. We |
| 697 | had a meeting discussing making some kind of user |
| 698 | |
| 699 | 00:18:24.320 --> 00:18:30.640 |
| 700 | group or software organization where the Python |
| 701 | software activity was proposed. We need a little |
| 702 | |
| 703 | 00:18:30.640 --> 00:18:35.360 |
| 704 | bit of governance, a little bit of organization, |
| 705 | but we don't want too much because I don't think |
| 706 | |
| 707 | 00:18:35.360 --> 00:18:40.880 |
| 708 | any of us really liked bureaucracy. And then the |
| 709 | question came up about what we should call Guido |
| 710 | |
| 711 | 00:18:40.880 --> 00:18:48.400 |
| 712 | as part of that. I think it was me who suggested |
| 713 | that Guido be called the Benevolent Dictator and |
| 714 | |
| 715 | 00:18:48.400 --> 00:18:55.600 |
| 716 | then Barry suggested Benevolent Dictator for Life |
| 717 | and that became an internet meme or actually a |
| 718 | |
| 719 | 00:18:55.600 --> 00:19:05.440 |
| 720 | software meme. Benevolent Dictator for Life was.. |
| 721 | you can find it on Wikipedia. Ultimately, you |
| 722 | |
| 723 | 00:19:05.440 --> 00:19:11.440 |
| 724 | know, Guido was the inventor of the language and |
| 725 | the final decider about yes, this is going to make |
| 726 | |
| 727 | 00:19:11.440 --> 00:19:19.360 |
| 728 | it in or this is not going to make it in. I think |
| 729 | I developed my own style during those first years. |
| 730 | |
| 731 | 00:19:19.360 --> 00:19:27.520 |
| 732 | All ideas are welcome, but I will choose which |
| 733 | ideas I believe are right to add to the language. |
| 734 | |
| 735 | 00:19:27.520 --> 00:19:36.960 |
| 736 | There's dozens and dozens of aspects of |
| 737 | Python today where somebody had a vision for, |
| 738 | |
| 739 | 00:19:36.960 --> 00:19:45.160 |
| 740 | if you just add this to Python, look at |
| 741 | all these amazing things that I can do. |
| 742 | |
| 743 | 00:19:45.160 --> 00:19:48.560 |
| 744 | [Music] |
| 745 | |
| 746 | 00:19:48.560 --> 00:19:53.040 |
| 747 | I'm one of the many people that came to Python, |
| 748 | not as a programmer, but as a scientist. Python |
| 749 | |
| 750 | 00:19:53.040 --> 00:19:57.920 |
| 751 | wasn't the first language I used for science. I |
| 752 | was doing satellite data processing and I used |
| 753 | |
| 754 | 00:19:57.920 --> 00:20:01.600 |
| 755 | Perl to do it and then a year later I would come |
| 756 | back and try to figure out what I'd done and I |
| 757 | |
| 758 | 00:20:01.600 --> 00:20:07.840 |
| 759 | had no idea. Python had the opposite experience. I |
| 760 | first started using Python in 1997. I just used it |
| 761 | |
| 762 | 00:20:07.840 --> 00:20:12.480 |
| 763 | to do some scripting, do some data processing with |
| 764 | some medical imaging data and I was like this is |
| 765 | |
| 766 | 00:20:12.480 --> 00:20:18.480 |
| 767 | nice. This is pretty cool. A year later, so 1998, |
| 768 | I came back to look at the code I'd written and I |
| 769 | |
| 770 | 00:20:18.480 --> 00:20:23.040 |
| 771 | could read it. I understood what I did. And that |
| 772 | was kind of for me the convincing data that said, |
| 773 | |
| 774 | 00:20:23.040 --> 00:20:28.240 |
| 775 | "Oh, I need to dig in on this language." |
| 776 | And there were a few really key people at |
| 777 | |
| 778 | 00:20:28.240 --> 00:20:32.640 |
| 779 | that time who were publishing or talking about |
| 780 | how to use Python for science. Not very many, |
| 781 | |
| 782 | 00:20:32.640 --> 00:20:38.640 |
| 783 | but a few. Konrad Hinsen was one of them, I |
| 784 | remember, and David Ascher and Jim Hugunin. |
| 785 | |
| 786 | 00:20:38.640 --> 00:20:45.840 |
| 787 | There's been a number of stages in the life |
| 788 | cycle of Python, when it just grew from a a core |
| 789 | |
| 790 | 00:20:45.840 --> 00:20:52.080 |
| 791 | language capability to a platform with a number of |
| 792 | different specialty modules and packages that made |
| 793 | |
| 794 | 00:20:52.080 --> 00:20:59.120 |
| 795 | it very very useful for certain user communities. |
| 796 | The first one was probably the numeric community, |
| 797 | |
| 798 | 00:20:59.120 --> 00:21:04.320 |
| 799 | the science and engineering folks that wanted |
| 800 | high performance matrix operations to be done. |
| 801 | |
| 802 | 00:21:04.320 --> 00:21:09.040 |
| 803 | Even though Guido wasn't a scientist himself, |
| 804 | wasn't necessarily deeply concerned with the |
| 805 | |
| 806 | 00:21:09.040 --> 00:21:16.480 |
| 807 | same things that we were concerned with as |
| 808 | scientists, he was open to the suggestions. |
| 809 | |
| 810 | 00:21:16.480 --> 00:21:19.840 |
| 811 | I think one of the things that people don't |
| 812 | appreciate about the Python language as much |
| 813 | |
| 814 | 00:21:19.840 --> 00:21:25.360 |
| 815 | now that it's so popular and mainstream |
| 816 | is how important it was that Guido was |
| 817 | |
| 818 | 00:21:25.360 --> 00:21:31.840 |
| 819 | open to new ideas and open to the needs of |
| 820 | people who are not traditional programmers. |
| 821 | |
| 822 | 00:21:32.640 --> 00:21:41.120 |
| 823 | I think he had a very clear-eyed quiet focus |
| 824 | on understanding some things about the future |
| 825 | |
| 826 | 00:21:41.120 --> 00:21:46.560 |
| 827 | that he built into the language. It was uniquely |
| 828 | suited to its environment. One of the reasons I |
| 829 | |
| 830 | 00:21:46.560 --> 00:21:50.640 |
| 831 | used Python and I think a lot of people used |
| 832 | Python at the time is that in the early 2000s, |
| 833 | |
| 834 | 00:21:50.640 --> 00:21:55.360 |
| 835 | the world was almost divided into here's an |
| 836 | open source ecosystem or you can go and use |
| 837 | |
| 838 | 00:21:55.360 --> 00:22:00.000 |
| 839 | Java which is actually a paid thing. I |
| 840 | was using MATLAB. I really didn't like |
| 841 | |
| 842 | 00:22:00.000 --> 00:22:02.880 |
| 843 | the fact that when I wrote code and I |
| 844 | wanted to share that code with others, |
| 845 | |
| 846 | 00:22:02.880 --> 00:22:07.440 |
| 847 | I was essentially telling people they had to go |
| 848 | buy a license for a software package before they |
| 849 | |
| 850 | 00:22:07.440 --> 00:22:10.320 |
| 851 | could even look at my or use my code. You |
| 852 | know, these are the days where you have to |
| 853 | |
| 854 | 00:22:10.320 --> 00:22:16.720 |
| 855 | like buy the developer tools or spend a couple |
| 856 | hundred bucks to get Visual Studio 6.0 and then |
| 857 | |
| 858 | 00:22:16.720 --> 00:22:21.120 |
| 859 | Python and then all of these libraries were open |
| 860 | source and then could be adapted, could be used |
| 861 | |
| 862 | 00:22:21.120 --> 00:22:27.120 |
| 863 | in a commercial project. I was sort of early |
| 864 | on convinced by community members that Python |
| 865 | |
| 866 | 00:22:27.120 --> 00:22:33.440 |
| 867 | being open- source and the particular way it was |
| 868 | open source was very important so that people |
| 869 | |
| 870 | 00:22:33.440 --> 00:22:48.000 |
| 871 | would feel comfortable using Python to make great |
| 872 | things that they would then be able to to sell. |
| 873 | |
| 874 | 00:22:51.320 --> 00:22:58.080 |
| 875 | [Music] In 1998, Blender was published on |
| 876 | the internet. The software was free and |
| 877 | |
| 878 | 00:22:58.080 --> 00:23:04.080 |
| 879 | then you could buy some things around it. |
| 880 | We were restricted to use open source. So, |
| 881 | |
| 882 | 00:23:04.080 --> 00:23:10.880 |
| 883 | you didn't have a lot of options. We were doing a |
| 884 | call on our website like what is the most popular |
| 885 | |
| 886 | 00:23:10.880 --> 00:23:18.400 |
| 887 | scripting language that we should add in Blender? |
| 888 | Perl was really big and Python was upcoming and |
| 889 | |
| 890 | 00:23:18.400 --> 00:23:24.640 |
| 891 | there were some others. And it was interesting |
| 892 | to see that everybody who was advising us to |
| 893 | |
| 894 | 00:23:24.640 --> 00:23:32.960 |
| 895 | use Perl as scripting language but they only |
| 896 | advertised how great Perl is. And the people |
| 897 | |
| 898 | 00:23:32.960 --> 00:23:38.880 |
| 899 | who came more from the Python background who |
| 900 | said well I think Python is a better choice. |
| 901 | |
| 902 | 00:23:38.880 --> 00:23:43.280 |
| 903 | They came with a balanced opinion. And they |
| 904 | said okay Perl will give you this and this |
| 905 | |
| 906 | 00:23:43.280 --> 00:23:49.760 |
| 907 | and this and Python will give you other things |
| 908 | and balancing all of it I would recommend you to |
| 909 | |
| 910 | 00:23:49.760 --> 00:24:04.320 |
| 911 | do Python and only for that reason I picked |
| 912 | Python just because the people were nicer. |
| 913 | |
| 914 | 00:24:04.320 --> 00:24:09.360 |
| 915 | It was honestly just a lot of enthusiasts. It was |
| 916 | a lot of people who just enjoyed the language, |
| 917 | |
| 918 | 00:24:09.360 --> 00:24:12.560 |
| 919 | enjoyed the people involved with the |
| 920 | language and it would just happen |
| 921 | |
| 922 | 00:24:12.560 --> 00:24:16.000 |
| 923 | to be typically motivating enough for |
| 924 | people to want to help out. Ultimately, |
| 925 | |
| 926 | 00:24:16.000 --> 00:24:21.680 |
| 927 | there's a sense of fun that comes across |
| 928 | and Guido coded that into the name of the |
| 929 | |
| 930 | 00:24:21.680 --> 00:24:30.640 |
| 931 | language influenced by Monty Python. It creates |
| 932 | a sense of community to have your little jokes. |
| 933 | |
| 934 | 00:24:30.640 --> 00:24:37.600 |
| 935 | Tim Peters is a famous early example of blending |
| 936 | both like the aesthetics of Python and humor. Tim |
| 937 | |
| 938 | 00:24:37.600 --> 00:24:45.360 |
| 939 | Peters was this mythical feature.. creature in |
| 940 | the world of Python, and no one had met him. He |
| 941 | |
| 942 | 00:24:45.360 --> 00:24:51.760 |
| 943 | was out there in the ether as a wise one to give |
| 944 | us advice on what to do with numerical processing. |
| 945 | |
| 946 | 00:24:51.760 --> 00:24:58.400 |
| 947 | Steve Majewski sent me some email telling me about |
| 948 | Python. So I started a email correspondence with |
| 949 | |
| 950 | 00:24:58.400 --> 00:25:03.120 |
| 951 | Guido about the language and about the design |
| 952 | and I got some of the pre-release code and played |
| 953 | |
| 954 | 00:25:03.120 --> 00:25:10.880 |
| 955 | with it and talked to him about design decisions |
| 956 | and liked it very much. Tim Peters was a Python |
| 957 | |
| 958 | 00:25:10.880 --> 00:25:18.560 |
| 959 | contributor and community member and mentor |
| 960 | to me from very early on. Tim was a channeler |
| 961 | |
| 962 | 00:25:18.560 --> 00:25:24.560 |
| 963 | of Guido. He had a really unique way of saying: I |
| 964 | think Guido's going to like this or I don't think |
| 965 | |
| 966 | 00:25:24.560 --> 00:25:30.240 |
| 967 | Guido is going to like that. There's a poem called |
| 968 | the Zen of Python which is a partially humorous, |
| 969 | |
| 970 | 00:25:30.240 --> 00:25:39.600 |
| 971 | partially serious poem about the the aesthetics of |
| 972 | of Python. I'm actually looking at the Usenet post |
| 973 | |
| 974 | 00:25:39.600 --> 00:25:47.840 |
| 975 | where Tim posted his first version of the Zen of |
| 976 | Python, although he called it the Way of Python. |
| 977 | |
| 978 | 00:25:47.840 --> 00:25:54.160 |
| 979 | And it was in response to some discussion |
| 980 | where people were complaining that they |
| 981 | |
| 982 | 00:25:54.160 --> 00:25:59.680 |
| 983 | didn't understand what was Python's philosophy. |
| 984 | They couldn't figure me out. And Tim had figured |
| 985 | |
| 986 | 00:25:59.680 --> 00:26:09.280 |
| 987 | me out and he put it basically in poetry. Here |
| 988 | is the Way of Python by Tim Peters from 1999. |
| 989 | |
| 990 | 00:26:09.280 --> 00:26:15.920 |
| 991 | Beautiful is better than ugly. Duh. Explicit |
| 992 | is better than implicit. Simple is better than |
| 993 | |
| 994 | 00:26:15.920 --> 00:26:23.280 |
| 995 | complex. Complex is better than complicated. And I |
| 996 | love that distinction. Flat is better than nested. |
| 997 | |
| 998 | 00:26:23.280 --> 00:26:29.920 |
| 999 | Sparse is better than dense. Readability counts. I |
| 1000 | will say it counts for a lot. Special cases aren't |
| 1001 | |
| 1002 | 00:26:29.920 --> 00:26:36.400 |
| 1003 | special enough to break the rules. Although |
| 1004 | practicality beats purity. Errors should never |
| 1005 | |
| 1006 | 00:26:36.400 --> 00:26:43.760 |
| 1007 | pass silently unless explicitly silenced. In the |
| 1008 | face of ambiguity, refuse the temptation to guess. |
| 1009 | |
| 1010 | 00:26:43.760 --> 00:26:51.520 |
| 1011 | I did not follow that in a very key piece of NumPy |
| 1012 | and it's still a mess. There should be one and |
| 1013 | |
| 1014 | 00:26:51.520 --> 00:26:59.280 |
| 1015 | preferably only one obvious way to do it. That's |
| 1016 | a direct reference to Perl's motto of there's |
| 1017 | |
| 1018 | 00:26:59.280 --> 00:27:03.680 |
| 1019 | more than one way to do it by the way. Although |
| 1020 | that may not be obvious at first, unless you're |
| 1021 | |
| 1022 | 00:27:03.680 --> 00:27:09.760 |
| 1023 | Dutch. Now is better than never. Although never is |
| 1024 | often better than right now. If the implementation |
| 1025 | |
| 1026 | 00:27:09.760 --> 00:27:15.520 |
| 1027 | is hard to explain, it's a bad idea. That's a |
| 1028 | really good one. If the implementation is easy |
| 1029 | |
| 1030 | 00:27:15.520 --> 00:27:21.840 |
| 1031 | to explain, it may be a good idea. Name spaces |
| 1032 | are one honking great idea. Let's do more of |
| 1033 | |
| 1034 | 00:27:21.840 --> 00:27:31.360 |
| 1035 | those. This is so Tim. Normally 'import this', |
| 1036 | imports some useful library, which is very serious |
| 1037 | |
| 1038 | 00:27:31.360 --> 00:27:38.000 |
| 1039 | business. Having an 'import this' that was just |
| 1040 | a joke was a bit of lightness that we liked to |
| 1041 | |
| 1042 | 00:27:38.000 --> 00:27:43.120 |
| 1043 | add. This is from a small hobbyist community, |
| 1044 | right? Because if you're a corporate behemoth |
| 1045 | |
| 1046 | 00:27:43.120 --> 00:27:47.120 |
| 1047 | making a a programming language, like someone's |
| 1048 | probably going to tell you that you can't put a |
| 1049 | |
| 1050 | 00:27:47.120 --> 00:27:52.720 |
| 1051 | silly poem in your in your programming language, |
| 1052 | but Python's just made by dogs on the internet, |
| 1053 | |
| 1054 | 00:27:52.720 --> 00:28:00.240 |
| 1055 | so they can put poems in their software. [Music] |
| 1056 | The different ways to make money on the internet |
| 1057 | |
| 1058 | 00:28:00.240 --> 00:28:05.440 |
| 1059 | are just beginning to emerge. Entrepreneurs are |
| 1060 | putting their faith in a new medium to deliver |
| 1061 | |
| 1062 | 00:28:05.440 --> 00:28:11.200 |
| 1063 | the big payoff. It's the dot-com bubble, all |
| 1064 | this money pumping into Silicon Valley software |
| 1065 | |
| 1066 | 00:28:11.200 --> 00:28:19.600 |
| 1067 | and internet stuff. Early 2000, I decided to |
| 1068 | leave CNRI and with a few co-workers joined |
| 1069 | |
| 1070 | 00:28:19.600 --> 00:28:27.120 |
| 1071 | little startup named BeOpen. While CNRI, I think, |
| 1072 | was an amazing home for Python in the early days, |
| 1073 | |
| 1074 | 00:28:27.120 --> 00:28:31.760 |
| 1075 | everything changes and everything evolves and |
| 1076 | thinking, well if we're going to strike out on our |
| 1077 | |
| 1078 | 00:28:31.760 --> 00:28:38.480 |
| 1079 | own this is probably the right time to do that. |
| 1080 | That didn't work out. I'd say within maybe a year |
| 1081 | |
| 1082 | 00:28:38.480 --> 00:28:45.200 |
| 1083 | or something. BeOpen was completely incompetent. |
| 1084 | We spent the summer in blissful ignorance working |
| 1085 | |
| 1086 | 00:28:45.200 --> 00:28:53.120 |
| 1087 | full-time on Python. We built and released Python |
| 1088 | 2 and within 5 months it was over. We were paid |
| 1089 | |
| 1090 | 00:28:53.120 --> 00:29:02.400 |
| 1091 | our salaries every 2 weeks, and then suddenly in |
| 1092 | late October we weren't. [Music] It was a moment |
| 1093 | |
| 1094 | 00:29:02.400 --> 00:29:08.400 |
| 1095 | where the [ __ ] could have hit the fan. If all |
| 1096 | the Python guys went their separate ways... Python |
| 1097 | |
| 1098 | 00:29:08.400 --> 00:29:14.880 |
| 1099 | wasn't big enough to survive that at the time. |
| 1100 | That was when I had a company Digital Creations |
| 1101 | |
| 1102 | 00:29:14.880 --> 00:29:19.840 |
| 1103 | that later became Zope, which is an application |
| 1104 | server, database server, index server, web server, |
| 1105 | |
| 1106 | 00:29:19.840 --> 00:29:26.240 |
| 1107 | etc. Very large scale commercial quality |
| 1108 | application written in Python. And if Python died, |
| 1109 | |
| 1110 | 00:29:26.240 --> 00:29:32.560 |
| 1111 | you know who else would die? We'd die. The whole |
| 1112 | platform was built on Python. So they were Python |
| 1113 | |
| 1114 | 00:29:32.560 --> 00:29:40.560 |
| 1115 | experts. We need to go and make sure that Python |
| 1116 | is secure for the future and that the team stays |
| 1117 | |
| 1118 | 00:29:40.560 --> 00:29:49.520 |
| 1119 | together. So we negotiated an agreement with them |
| 1120 | to join my company. That was an incredibly lucky |
| 1121 | |
| 1122 | 00:29:49.520 --> 00:29:53.760 |
| 1123 | rescue. We felt like we really trusted them |
| 1124 | and we believed in what they were doing and |
| 1125 | |
| 1126 | 00:29:53.760 --> 00:30:00.320 |
| 1127 | what they wanted to do with Python and for Python. |
| 1128 | This is a place that I'm proud of. In hindsight, |
| 1129 | |
| 1130 | 00:30:00.320 --> 00:30:06.160 |
| 1131 | it was a really critical point in Python's life. |
| 1132 | I think if we had chosen wrong or tried to say, |
| 1133 | |
| 1134 | 00:30:06.160 --> 00:30:11.040 |
| 1135 | "Oh, well, we'll just strike out on our |
| 1136 | own anyway." You never know. But I'm not |
| 1137 | |
| 1138 | 00:30:11.040 --> 00:30:33.913 |
| 1139 | so sure that Python would have survived |
| 1140 | that juncture in its life. Yeah. [Music] |
| 1141 | |
| 1142 | 00:30:33.913 --> 00:30:33.920 |
| 1143 | [Music] |
| 1144 | |
| 1145 | 00:30:33.920 --> 00:30:40.000 |
| 1146 | Python just kept sort of growing and |
| 1147 | the community kept self-organizing. |
| 1148 | |
| 1149 | 00:30:40.000 --> 00:30:48.400 |
| 1150 | One of the I think underlying themes of Python, |
| 1151 | if you take it in its totality, is this sense of |
| 1152 | |
| 1153 | 00:30:48.400 --> 00:30:56.720 |
| 1154 | grassroots movements. Things grow from the bottom |
| 1155 | up and evolve to the point where everybody sort of |
| 1156 | |
| 1157 | 00:30:56.720 --> 00:31:02.880 |
| 1158 | realizes, oh, we need a little bit more structure. |
| 1159 | Oh, the Python Software Foundation. In my opinion, |
| 1160 | |
| 1161 | 00:31:02.880 --> 00:31:10.000 |
| 1162 | the PSF, that damn thing was a success from day |
| 1163 | one. That came out of one of the concerns we had |
| 1164 | |
| 1165 | 00:31:10.000 --> 00:31:19.280 |
| 1166 | had with BeOpen actually. So CNRI had written |
| 1167 | a license for Python and put its name on it and |
| 1168 | |
| 1169 | 00:31:19.280 --> 00:31:26.000 |
| 1170 | BeOpen had copied a version of that license |
| 1171 | and put the BeOpen name on it. There was a |
| 1172 | |
| 1173 | 00:31:26.000 --> 00:31:32.400 |
| 1174 | concern that at some point I might accidentally |
| 1175 | end up working for a company that tried to grab |
| 1176 | |
| 1177 | 00:31:32.400 --> 00:31:39.040 |
| 1178 | ownership of Python. We realized that we really |
| 1179 | need an organization that will be independent, |
| 1180 | |
| 1181 | 00:31:39.040 --> 00:31:47.760 |
| 1182 | will not be beholden to any company and their |
| 1183 | whims and their lawyers and will really keep |
| 1184 | |
| 1185 | 00:31:47.760 --> 00:31:59.840 |
| 1186 | Python users as their first and foremost customer, |
| 1187 | so to speak, in mind. [Music] And then the magic |
| 1188 | |
| 1189 | 00:31:59.840 --> 00:32:17.920 |
| 1190 | happened when we got into PyCon, which is maybe |
| 1191 | the third stool of the miracle of Python. [Music] |
| 1192 | |
| 1193 | 00:32:17.920 --> 00:32:24.160 |
| 1194 | What has been your take away from PyCon US this |
| 1195 | year? It feels like people are still willing to |
| 1196 | |
| 1197 | 00:32:24.160 --> 00:32:29.440 |
| 1198 | go do hard things, work on things together, you |
| 1199 | know. Wow. They still do have the passion to be |
| 1200 | |
| 1201 | 00:32:29.440 --> 00:32:35.280 |
| 1202 | honest. So, what was it for you? Uh, for me most |
| 1203 | definitely like meeting people I haven't met in |
| 1204 | |
| 1205 | 00:32:35.280 --> 00:32:40.640 |
| 1206 | a while. That's cool. Yeah. And just pretty |
| 1207 | much hanging out with them. You try to walk, |
| 1208 | |
| 1209 | 00:32:40.640 --> 00:32:45.040 |
| 1210 | Yeah, to the other side. There's like 10 |
| 1211 | people that you want to see in between like |
| 1212 | |
| 1213 | 00:32:45.040 --> 00:32:52.080 |
| 1214 | stop. I want to talk to you. Oh, I know. Pablo |
| 1215 | and Yuri presented as bananas and then Lukasz |
| 1216 | |
| 1217 | 00:32:52.080 --> 00:32:56.480 |
| 1218 | asked the question dressed as a banana. |
| 1219 | And then Guido came in just as a banana |
| 1220 | |
| 1221 | 00:32:56.480 --> 00:33:01.760 |
| 1222 | as well. Thank you for what you do for the |
| 1223 | PSF. Please don't step down. Just keep doing |
| 1224 | |
| 1225 | 00:33:01.760 --> 00:33:08.080 |
| 1226 | it forever. Raise your hand if you love the |
| 1227 | web. Just raise your hand. Raise your hand |
| 1228 | |
| 1229 | 00:33:08.080 --> 00:33:17.360 |
| 1230 | if you have done React front-ends. Raise your |
| 1231 | hand if you would like to come back. To React? |
| 1232 | |
| 1233 | 00:33:17.360 --> 00:33:24.320 |
| 1234 | No, come back to Python. All right. Good. For |
| 1235 | the record, 100%. I begged my mother to take |
| 1236 | |
| 1237 | 00:33:24.320 --> 00:33:33.280 |
| 1238 | me to PyCon and I met all my online heroes. He |
| 1239 | was this distant Benevolent Dictator for life |
| 1240 | |
| 1241 | 00:33:33.280 --> 00:33:38.240 |
| 1242 | who I'd been talking to over the internet, but |
| 1243 | here he was in person and so I was thrilled to |
| 1244 | |
| 1245 | 00:33:38.240 --> 00:33:43.040 |
| 1246 | be able to finally meet him. Then I |
| 1247 | think everyone was aware that he was |
| 1248 | |
| 1249 | 00:33:43.040 --> 00:33:49.520 |
| 1250 | a 15-year-old kid on the other end of the |
| 1251 | terminal. When PyCon was held in Montreal, |
| 1252 | |
| 1253 | 00:33:49.520 --> 00:33:55.680 |
| 1254 | the organizer asked me if I'd be willing to |
| 1255 | give an opening address to the conference. Well, |
| 1256 | |
| 1257 | 00:33:55.680 --> 00:34:02.160 |
| 1258 | I'm a slightly fast talker and I had some spare |
| 1259 | time and I just used it as an opportunity to say |
| 1260 | |
| 1261 | 00:34:02.160 --> 00:34:06.160 |
| 1262 | thank you. "I like to think of it as I came for |
| 1263 | the language, but I stayed for the community. So, |
| 1264 | |
| 1265 | 00:34:06.160 --> 00:34:10.480 |
| 1266 | I want to personally thank all of you for |
| 1267 | making this such a wonderful place to be |
| 1268 | |
| 1269 | 00:34:10.480 --> 00:34:15.120 |
| 1270 | and such a wonderful group of people to be |
| 1271 | around. So, thank you". Luckily, it came |
| 1272 | |
| 1273 | 00:34:15.120 --> 00:34:21.520 |
| 1274 | off well because people still quote it. I think |
| 1275 | it kind of speaks to the core ethos of Python. |
| 1276 | |
| 1277 | 00:34:21.520 --> 00:34:28.880 |
| 1278 | We try to develop this tool that people can use |
| 1279 | for their needs to get their work done. But the |
| 1280 | |
| 1281 | 00:34:28.880 --> 00:34:36.520 |
| 1282 | community is the true strength of Python. It's |
| 1283 | not just the language, right? It's the people. |
| 1284 | |
| 1285 | 00:34:36.520 --> 00:34:43.840 |
| 1286 | [Music] It was steadily growing every single |
| 1287 | year. It was getting more and more downloads, |
| 1288 | |
| 1289 | 00:34:43.840 --> 00:34:50.160 |
| 1290 | more and more people making use of it. It |
| 1291 | became a more sophisticated language that was |
| 1292 | |
| 1293 | 00:34:50.160 --> 00:34:57.760 |
| 1294 | fit for purpose for this new emerging programming |
| 1295 | paradigm where the the web itself is the platform. |
| 1296 | |
| 1297 | 00:34:57.760 --> 00:35:04.640 |
| 1298 | He told me an interesting number that that made me |
| 1299 | realize that the Python user community was already |
| 1300 | |
| 1301 | 00:35:04.640 --> 00:35:10.960 |
| 1302 | much bigger than I had estimated because |
| 1303 | he said, "Guido, you don't know the sales |
| 1304 | |
| 1305 | 00:35:10.960 --> 00:35:17.600 |
| 1306 | numbers for Python books, but I am Tim O'Reilly. |
| 1307 | I published the two most important ones and I do |
| 1308 | |
| 1309 | 00:35:17.600 --> 00:35:23.920 |
| 1310 | know the sales numbers and they are fantastic." |
| 1311 | I don't know if he had that much enthusiasm in |
| 1312 | |
| 1313 | 00:35:23.920 --> 00:35:30.880 |
| 1314 | his voice then, but he was sharing this new |
| 1315 | to me important fact which made me realize, |
| 1316 | |
| 1317 | 00:35:30.880 --> 00:35:38.720 |
| 1318 | oh my gosh! Python tends to get spikes when |
| 1319 | certain specialties, I guess you could say, |
| 1320 | |
| 1321 | 00:35:38.720 --> 00:35:44.080 |
| 1322 | pick the language up and decide that this is |
| 1323 | a thing that they want to use in their area. |
| 1324 | |
| 1325 | 00:35:44.080 --> 00:35:49.600 |
| 1326 | Everybody wanted to to do things with the |
| 1327 | worldwide web and Python actually became |
| 1328 | |
| 1329 | 00:35:49.600 --> 00:35:57.200 |
| 1330 | a really powerful platform for for doing not |
| 1331 | just web pages but web servers and services and |
| 1332 | |
| 1333 | 00:35:57.200 --> 00:36:07.680 |
| 1334 | suddenly we had an increase of people coming in |
| 1335 | from the web world. [Music] I think Dropbox was |
| 1336 | |
| 1337 | 00:36:07.680 --> 00:36:12.960 |
| 1338 | one of the early companies to start building |
| 1339 | in Python and reaching millions of users. |
| 1340 | |
| 1341 | 00:36:14.080 --> 00:36:18.480 |
| 1342 | My name's Drew and I'll be showing you a quick |
| 1343 | tour of Dropbox, which is a new way to store and |
| 1344 | |
| 1345 | 00:36:18.480 --> 00:36:24.000 |
| 1346 | share files online. Python had been largely viewed |
| 1347 | as scripting language you run on the back end or |
| 1348 | |
| 1349 | 00:36:24.000 --> 00:36:29.040 |
| 1350 | maybe in an academic setting or in a scientific |
| 1351 | setting, but not really for like production |
| 1352 | |
| 1353 | 00:36:29.040 --> 00:36:33.760 |
| 1354 | desktop software that you ship to millions of |
| 1355 | people. But I just started writing in Python |
| 1356 | |
| 1357 | 00:36:33.760 --> 00:36:38.000 |
| 1358 | and hoping that none of the roadblocks would |
| 1359 | completely blow me up. You can develop programs |
| 1360 | |
| 1361 | 00:36:38.000 --> 00:36:43.520 |
| 1362 | much faster in Python because it's a higher level |
| 1363 | language and it's a very clean easy language and |
| 1364 | |
| 1365 | 00:36:43.520 --> 00:36:48.960 |
| 1366 | so we could we could be a lot more competitive |
| 1367 | than other companies who were writing with Java |
| 1368 | |
| 1369 | 00:36:48.960 --> 00:36:54.960 |
| 1370 | or C++ or Perl. Even back then we were competing |
| 1371 | against the Google's and Microsofts of the world |
| 1372 | |
| 1373 | 00:36:54.960 --> 00:37:00.720 |
| 1374 | and you know our odds didn't seem very good. So |
| 1375 | we needed all the help we can get. Google had this |
| 1376 | |
| 1377 | 00:37:00.720 --> 00:37:06.400 |
| 1378 | big team like a hundred people, C++ programmers, |
| 1379 | trying to do a video hosting site and they could |
| 1380 | |
| 1381 | 00:37:06.400 --> 00:37:10.880 |
| 1382 | never keep up with this little thing over there |
| 1383 | called YouTube and they went and looked and it was |
| 1384 | |
| 1385 | 00:37:10.880 --> 00:37:16.480 |
| 1386 | just a couple of people writing Python. Python |
| 1387 | ended up being a big force multiplier on our |
| 1388 | |
| 1389 | 00:37:16.480 --> 00:37:25.200 |
| 1390 | effort and no other language that we considered |
| 1391 | had anything close to that kind of capability. |
| 1392 | |
| 1393 | 00:37:27.160 --> 00:37:28.160 |
| 1394 | [Music] |
| 1395 | |
| 1396 | 00:37:28.160 --> 00:37:32.080 |
| 1397 | The fact that data science suddenly |
| 1398 | became a thing that you had to do, |
| 1399 | |
| 1400 | 00:37:32.080 --> 00:37:39.200 |
| 1401 | combined with the fact that Python was sort |
| 1402 | of well positioned to do data science stuff |
| 1403 | |
| 1404 | 00:37:39.200 --> 00:37:50.080 |
| 1405 | meant a huge amount of new Python users flowed in. |
| 1406 | |
| 1407 | 00:37:50.080 --> 00:37:56.800 |
| 1408 | What was starting to happen in the 2009-2010 |
| 1409 | time frame, we were seeing more and more of |
| 1410 | |
| 1411 | 00:37:56.800 --> 00:38:03.360 |
| 1412 | our consulting deals tied to using Python not as |
| 1413 | really a replacement for MATLAB or engineering |
| 1414 | |
| 1415 | 00:38:03.360 --> 00:38:09.680 |
| 1416 | type things, but using Python for doing data |
| 1417 | processing. We didn't call it data science at the |
| 1418 | |
| 1419 | 00:38:09.680 --> 00:38:13.360 |
| 1420 | time, but it was that kind of work, right? It was |
| 1421 | modeling, predictive analytics, things like that. |
| 1422 | |
| 1423 | 00:38:13.360 --> 00:38:18.320 |
| 1424 | This is the time of Hadoop, the time of big data, |
| 1425 | the time of Spark, and people were doing Java at |
| 1426 | |
| 1427 | 00:38:18.320 --> 00:38:24.160 |
| 1428 | scale. We were starting to do much more consulting |
| 1429 | work in the financial industry and we'd walk into |
| 1430 | |
| 1431 | 00:38:24.160 --> 00:38:28.880 |
| 1432 | these large very well-capitalized firms and they |
| 1433 | were using Python to do business data processing. |
| 1434 | |
| 1435 | 00:38:28.880 --> 00:38:33.200 |
| 1436 | I realized okay if it's a research group over |
| 1437 | here doing some science research and they don't |
| 1438 | |
| 1439 | 00:38:33.200 --> 00:38:38.640 |
| 1440 | have money and they use an open source thing |
| 1441 | I get it but if you have JP Morgan right which |
| 1442 | |
| 1443 | 00:38:38.640 --> 00:38:43.120 |
| 1444 | has a lot of money and they're picking up and |
| 1445 | using these scientific tools and they're loving |
| 1446 | |
| 1447 | 00:38:43.120 --> 00:38:48.800 |
| 1448 | it. I realized that we didn't just have a cheap |
| 1449 | free alternative. We actually had something that |
| 1450 | |
| 1451 | 00:38:48.800 --> 00:38:54.480 |
| 1452 | was innovative and that was doing something fairly |
| 1453 | unique. Peter and I ended up leaving Enthought and |
| 1454 | |
| 1455 | 00:38:55.120 --> 00:39:02.160 |
| 1456 | starting another company. We started as Continuum |
| 1457 | Analytics actually and its vision was to scale |
| 1458 | |
| 1459 | 00:39:02.160 --> 00:39:08.640 |
| 1460 | NumPy and Pandas to large data sets and large |
| 1461 | clusters. We quickly ran into a simple problem, |
| 1462 | |
| 1463 | 00:39:08.640 --> 00:39:12.880 |
| 1464 | very quickly in, but a very annoying problem. |
| 1465 | Yes. people just couldn't even install the |
| 1466 | |
| 1467 | 00:39:12.880 --> 00:39:19.200 |
| 1468 | software needed to run all this Python stuff. The |
| 1469 | thing about the Python scientific and data stack |
| 1470 | |
| 1471 | 00:39:19.200 --> 00:39:23.680 |
| 1472 | is that all of these different libraries, they're |
| 1473 | very different than the web development libraries |
| 1474 | |
| 1475 | 00:39:23.680 --> 00:39:28.320 |
| 1476 | because these data libraries are often backed |
| 1477 | by a very large amount of complex C++, Fortran, |
| 1478 | |
| 1479 | 00:39:28.320 --> 00:39:34.000 |
| 1480 | other kinds of software modules. And to build |
| 1481 | those correctly takes some work. To build them |
| 1482 | |
| 1483 | 00:39:34.000 --> 00:39:38.880 |
| 1484 | correctly on every operating system takes even |
| 1485 | more work. And then to build them so that they |
| 1486 | |
| 1487 | 00:39:38.880 --> 00:39:44.640 |
| 1488 | can actually be connected together, that requires |
| 1489 | you to have this entire build system rationalized. |
| 1490 | |
| 1491 | 00:39:44.640 --> 00:39:48.640 |
| 1492 | And so the very first thing we did was like make |
| 1493 | a distribution of Python to make it easy to get |
| 1494 | |
| 1495 | 00:39:48.640 --> 00:39:52.800 |
| 1496 | that installed. A lot of the data science Python |
| 1497 | people, they didn't even use normal Python. They |
| 1498 | |
| 1499 | 00:39:52.800 --> 00:39:56.720 |
| 1500 | used this Anaconda Python distribution. Sort of |
| 1501 | a dumb joke that I came up with at one point. |
| 1502 | |
| 1503 | 00:39:56.720 --> 00:40:03.360 |
| 1504 | It was basically Python for big data. So it's a |
| 1505 | big snake. So Anaconda. After like a few years, |
| 1506 | |
| 1507 | 00:40:03.360 --> 00:40:07.520 |
| 1508 | we kept going to conferences and going |
| 1509 | to places and people wouldn't know who we |
| 1510 | |
| 1511 | 00:40:07.520 --> 00:40:11.200 |
| 1512 | were. But the instant that we mentioned that |
| 1513 | we make Anaconda, they would say, "Oh, yeah, |
| 1514 | |
| 1515 | 00:40:11.200 --> 00:40:14.880 |
| 1516 | of course. I love Anaconda. I use it all the |
| 1517 | time." Right? So, after that happened like the |
| 1518 | |
| 1519 | 00:40:14.880 --> 00:40:19.280 |
| 1520 | thousandth time, we said, "Okay, maybe we should |
| 1521 | rename the company Anaconda." Data engineering |
| 1522 | |
| 1523 | 00:40:19.280 --> 00:40:26.560 |
| 1524 | became a discipline where Python was incredibly |
| 1525 | entrenched. It was Python and R. And over time, |
| 1526 | |
| 1527 | 00:40:26.560 --> 00:40:31.200 |
| 1528 | Python's data analysis libraries caught up and |
| 1529 | plotting libraries and stuff started to catch up |
| 1530 | |
| 1531 | 00:40:31.200 --> 00:40:36.720 |
| 1532 | to what R had. And then people realized, oh well, |
| 1533 | with Python, I can work end to end with my data |
| 1534 | |
| 1535 | 00:40:36.720 --> 00:40:42.240 |
| 1536 | versus R being very good at data analysis, but |
| 1537 | not necessarily like the data collection stage |
| 1538 | |
| 1539 | 00:40:42.240 --> 00:40:46.960 |
| 1540 | and various other stages. I remember going to |
| 1541 | a Python conference at one point. I was like, |
| 1542 | |
| 1543 | 00:40:46.960 --> 00:40:52.160 |
| 1544 | there's so many sciency people here like where |
| 1545 | are all the web developers? This is all data data |
| 1546 | |
| 1547 | 00:40:52.160 --> 00:40:55.440 |
| 1548 | pipelines and stuff. I don't want to be immodest |
| 1549 | about this because it was a collective effort for |
| 1550 | |
| 1551 | 00:40:55.440 --> 00:40:59.840 |
| 1552 | the whole community, but I think that what we |
| 1553 | did at Anaconda, not only making the software |
| 1554 | |
| 1555 | 00:40:59.840 --> 00:41:04.640 |
| 1556 | installer that made it one click for people to |
| 1557 | just run, but also shephering the conferences |
| 1558 | |
| 1559 | 00:41:04.640 --> 00:41:09.680 |
| 1560 | and building that community and and whatnot |
| 1561 | was really critical. They were incredibly |
| 1562 | |
| 1563 | 00:41:09.680 --> 00:41:20.120 |
| 1564 | important contributions. I think we actually made |
| 1565 | Python super popular. I I think we did. [Music] |
| 1566 | |
| 1567 | 00:41:24.480 --> 00:41:28.960 |
| 1568 | Well, I remember hearing from a friend of |
| 1569 | mine that Guido van Rossum was just working |
| 1570 | |
| 1571 | 00:41:28.960 --> 00:41:34.560 |
| 1572 | at Google. And that when I thought about |
| 1573 | it, I'm like, wait, yeah, Guido, I guess, |
| 1574 | |
| 1575 | 00:41:34.560 --> 00:41:41.120 |
| 1576 | works at a normal company and I can't remember |
| 1577 | the exact circumstances, but I think either |
| 1578 | |
| 1579 | 00:41:41.120 --> 00:41:45.920 |
| 1580 | I got an introduction to him or I just maybe I |
| 1581 | think maybe just send him an email saying, "Hey, |
| 1582 | |
| 1583 | 00:41:45.920 --> 00:41:52.720 |
| 1584 | um, big fan of your work." you know, it's like fan |
| 1585 | mail basically. And he responded and we got lunch. |
| 1586 | |
| 1587 | 00:41:52.720 --> 00:41:58.400 |
| 1588 | I mean, he's a hero of mine and he was totally |
| 1589 | friendly and approachable. And at that talk, |
| 1590 | |
| 1591 | 00:41:58.400 --> 00:42:04.480 |
| 1592 | it was revealed that Dropbox was entirely written |
| 1593 | in Python, both the client and the server, |
| 1594 | |
| 1595 | 00:42:04.480 --> 00:42:08.640 |
| 1596 | and that was exciting. He was interested in |
| 1597 | what we were doing with Python. And I think |
| 1598 | |
| 1599 | 00:42:08.640 --> 00:42:15.040 |
| 1600 | we were stretching the language and the runtime in |
| 1601 | interesting ways. He approached me again and said, |
| 1602 | |
| 1603 | 00:42:15.040 --> 00:42:21.520 |
| 1604 | "Hey, we would really like you to work for us." |
| 1605 | And then to my surprise and delight, he ended up |
| 1606 | |
| 1607 | 00:42:21.520 --> 00:42:28.400 |
| 1608 | joining the Dropbox team, which was super exciting |
| 1609 | for all of us. I stayed there for 7 years. We did |
| 1610 | |
| 1611 | 00:42:28.400 --> 00:42:35.280 |
| 1612 | more important stuff for Python than I did during |
| 1613 | 7 years at Google I think. I think he had a big |
| 1614 | |
| 1615 | 00:42:35.280 --> 00:42:39.680 |
| 1616 | impact on the rest of the team. You know, here's |
| 1617 | someone who's one of the icons of computing, |
| 1618 | |
| 1619 | 00:42:39.680 --> 00:42:45.360 |
| 1620 | but you would never know it just from his, you |
| 1621 | know, how he badges in to the office every day |
| 1622 | |
| 1623 | 00:42:45.360 --> 00:42:52.720 |
| 1624 | and I think set a really great example in terms |
| 1625 | of being super humble and curious and friendly. |
| 1626 | |
| 1627 | 00:42:52.720 --> 00:43:00.320 |
| 1628 | You know, it's hard for me to think of someone |
| 1629 | who has had more impact with lower ego. Uh, |
| 1630 | |
| 1631 | 00:43:00.320 --> 00:43:08.400 |
| 1632 | let's start with the first Python license |
| 1633 | plate. Sorry, that was my car when we lived in |
| 1634 | |
| 1635 | 00:43:08.400 --> 00:43:17.040 |
| 1636 | Virginia. And there was a box on the application |
| 1637 | - sorry, just grabbing the other one, too - uh, |
| 1638 | |
| 1639 | 00:43:17.040 --> 00:43:23.040 |
| 1640 | do you want a custom license plate? So, I managed |
| 1641 | to get Python in Virginia and in California, |
| 1642 | |
| 1643 | 00:43:23.040 --> 00:43:30.800 |
| 1644 | Python was long taken. Like someone in Silicon |
| 1645 | Valley probably has a Python license plate |
| 1646 | |
| 1647 | 00:43:30.800 --> 00:43:40.160 |
| 1648 | somewhere. So, the best I could get was PY3K, |
| 1649 | which I thought was pretty pretty cute anyway. |
| 1650 | |
| 1651 | 00:43:40.160 --> 00:43:46.320 |
| 1652 | It became ever more popular and people |
| 1653 | started thinking about flaws in the |
| 1654 | |
| 1655 | 00:43:46.320 --> 00:43:51.360 |
| 1656 | language. There were a lot of ideas floating |
| 1657 | around the core development community, |
| 1658 | |
| 1659 | 00:43:51.360 --> 00:43:54.640 |
| 1660 | changes you could make to the language that |
| 1661 | people thought would be major improvements. |
| 1662 | |
| 1663 | 00:43:54.640 --> 00:44:00.160 |
| 1664 | The only problem with them was that they would |
| 1665 | break old Python code that currently existed. |
| 1666 | |
| 1667 | 00:44:00.160 --> 00:44:06.560 |
| 1668 | Some of that probably got away |
| 1669 | from us a little bit in hindsight. |
| 1670 | |
| 1671 | 00:44:06.560 --> 00:44:15.200 |
| 1672 | We released Python 3.0 in December of |
| 1673 | 2007. I remember because I was actually |
| 1674 | |
| 1675 | 00:44:15.200 --> 00:44:20.640 |
| 1676 | interning under Guido at the time. We were |
| 1677 | giving people roughly 5 years, I think, |
| 1678 | |
| 1679 | 00:44:20.640 --> 00:44:25.280 |
| 1680 | to do the transition. And everyone thought |
| 1681 | that was just extraordinarily generous. The |
| 1682 | |
| 1683 | 00:44:25.280 --> 00:44:30.560 |
| 1684 | world would totally be on Python 3 in just a few |
| 1685 | years. This is best for the language long term. |
| 1686 | |
| 1687 | 00:44:30.560 --> 00:44:33.600 |
| 1688 | We're going to make these changes. The community |
| 1689 | has always come along with us. We think they'll |
| 1690 | |
| 1691 | 00:44:33.600 --> 00:44:43.280 |
| 1692 | come along this journey as well. We were very |
| 1693 | naive about that and they they made us know it. |
| 1694 | |
| 1695 | 00:44:43.280 --> 00:44:47.200 |
| 1696 | The community said, "No, not worth |
| 1697 | it. Kill it. Don't do it. It's not |
| 1698 | |
| 1699 | 00:44:47.200 --> 00:44:55.440 |
| 1700 | going to work." This included some very |
| 1701 | notable individuals in the community. |
| 1702 | |
| 1703 | 00:45:03.680 --> 00:45:09.280 |
| 1704 | So, please welcome our next speaker. |
| 1705 | |
| 1706 | 00:45:09.280 --> 00:45:14.400 |
| 1707 | Hi, my name is Armin. You might be familiar with |
| 1708 | some of the Python libraries that I wrote and |
| 1709 | |
| 1710 | 00:45:14.400 --> 00:45:19.520 |
| 1711 | you might even maybe use some of them. The |
| 1712 | Python 2 to Python 3 transition. Initially, |
| 1713 | |
| 1714 | 00:45:19.520 --> 00:45:24.000 |
| 1715 | it happened very gradually over many years. There |
| 1716 | was the version that everybody used and there was |
| 1717 | |
| 1718 | 00:45:24.000 --> 00:45:27.920 |
| 1719 | sort of the version on the side that was built |
| 1720 | that nobody used. People didn't want to put in the |
| 1721 | |
| 1722 | 00:45:27.920 --> 00:45:37.760 |
| 1723 | effort because their code worked, you know, why |
| 1724 | rewrite it. It's very hard to mix Python 2 and 3. |
| 1725 | |
| 1726 | 00:45:37.760 --> 00:45:41.760 |
| 1727 | It's uh it's a it's a headache. |
| 1728 | So I just didn't move and a lot |
| 1729 | |
| 1730 | 00:45:41.760 --> 00:45:46.400 |
| 1731 | of people didn't move. It felt there's a |
| 1732 | likelihood that it will not go anywhere. |
| 1733 | |
| 1734 | 00:45:46.400 --> 00:45:53.360 |
| 1735 | It felt much more like a top-down decision than |
| 1736 | any of the things in the past. And that top- down |
| 1737 | |
| 1738 | 00:45:53.360 --> 00:46:00.800 |
| 1739 | decision, I think for some people felt like it |
| 1740 | was not inclusive of the real pains of people who |
| 1741 | |
| 1742 | 00:46:00.800 --> 00:46:08.800 |
| 1743 | had a long tale of use cases. I think I severely |
| 1744 | underestimated how successful Python already was. |
| 1745 | |
| 1746 | 00:46:08.800 --> 00:46:16.720 |
| 1747 | How many people had written so much code in |
| 1748 | Python 2 that it would be hard for them to |
| 1749 | |
| 1750 | 00:46:16.720 --> 00:46:23.120 |
| 1751 | sort of put the effort into translate to Python |
| 1752 | 3. I thought the most controversial thing by far |
| 1753 | |
| 1754 | 00:46:23.120 --> 00:46:28.160 |
| 1755 | was that we wanted to change the way Unicode |
| 1756 | was handled. A way to say these things are |
| 1757 | |
| 1758 | 00:46:28.160 --> 00:46:32.800 |
| 1759 | strings and they're human consumable. They're |
| 1760 | words that people want to read and write and |
| 1761 | |
| 1762 | 00:46:32.800 --> 00:46:37.360 |
| 1763 | these things are bytes. These are things |
| 1764 | that computers want to read and write. |
| 1765 | |
| 1766 | 00:46:39.360 --> 00:46:46.080 |
| 1767 | We basically made all strings Unicode and we made |
| 1768 | you use a new prefix 'b' for bytes. And this was |
| 1769 | |
| 1770 | 00:46:46.080 --> 00:46:50.640 |
| 1771 | incredibly disturbing. I was implementing |
| 1772 | a WSGI library at the time and one of the |
| 1773 | |
| 1774 | 00:46:50.640 --> 00:46:54.800 |
| 1775 | things that you do when you implement WSGI, |
| 1776 | is that you have to parse HTTP data. You have |
| 1777 | |
| 1778 | 00:46:54.800 --> 00:46:59.680 |
| 1779 | to parse cookie data. And there there was |
| 1780 | always a mixture of bytes and Unicode. And |
| 1781 | |
| 1782 | 00:46:59.680 --> 00:47:04.400 |
| 1783 | it was very easy to work with on Python 2. And |
| 1784 | it was incredibly annoying to work on Python 3, |
| 1785 | |
| 1786 | 00:47:04.400 --> 00:47:10.320 |
| 1787 | at least initially. There really wasn't |
| 1788 | a way to convert your Python 2 code to |
| 1789 | |
| 1790 | 00:47:10.320 --> 00:47:14.880 |
| 1791 | Python 3. The tools didn't exist. I |
| 1792 | started writing blog posts about it. |
| 1793 | |
| 1794 | 00:47:14.880 --> 00:47:31.600 |
| 1795 | Why I think that in the way which Python 3 |
| 1796 | works right now, I just cannot see the move. |
| 1797 | |
| 1798 | 00:47:31.600 --> 00:47:37.280 |
| 1799 | He was a valued community member. And at |
| 1800 | the time I was actually quite surprised |
| 1801 | |
| 1802 | 00:47:37.280 --> 00:47:45.040 |
| 1803 | that he was so viciously attacking Python |
| 1804 | 3. I was probably even more negative on it |
| 1805 | |
| 1806 | 00:47:45.040 --> 00:47:50.080 |
| 1807 | than appropriate. But Python had such a good |
| 1808 | run and I put so much energy into it. I was |
| 1809 | |
| 1810 | 00:47:50.080 --> 00:47:54.160 |
| 1811 | part of like building out web frameworks |
| 1812 | and and all these libraries. I felt like: |
| 1813 | |
| 1814 | 00:47:54.160 --> 00:47:59.200 |
| 1815 | why are we ruining all of this with this move |
| 1816 | that didn't even have that many benefits. |
| 1817 | |
| 1818 | 00:47:59.200 --> 00:48:06.560 |
| 1819 | I had not appreciated how many people already |
| 1820 | had enormous code bases or were on their way |
| 1821 | |
| 1822 | 00:48:06.560 --> 00:48:13.760 |
| 1823 | to building up enormous code bases. The payback |
| 1824 | for that was that I had to initiate the project |
| 1825 | |
| 1826 | 00:48:13.760 --> 00:48:22.640 |
| 1827 | at Dropbox. We had a pretty long road to migrate |
| 1828 | many millions of lines of Python 2 code. 5 million |
| 1829 | |
| 1830 | 00:48:22.640 --> 00:48:28.640 |
| 1831 | lines of code in the server alone and another |
| 1832 | million for the client. That is a very large |
| 1833 | |
| 1834 | 00:48:28.640 --> 00:48:48.400 |
| 1835 | pile of code to transform. And so we had to |
| 1836 | invent ways of sort of doing it in in pieces. |
| 1837 | |
| 1838 | 00:48:55.080 --> 00:48:56.080 |
| 1839 | [Laughter] |
| 1840 | |
| 1841 | 00:48:56.080 --> 00:49:01.280 |
| 1842 | A funny sticker I found in my pocket. |
| 1843 | There's a built tool called Bazel. |
| 1844 | |
| 1845 | 00:49:01.280 --> 00:49:07.040 |
| 1846 | It's sort of a frozen version of |
| 1847 | Python 2. So here the sticker says |
| 1848 | |
| 1849 | 00:49:07.040 --> 00:49:12.880 |
| 1850 | after re-education enemy of the people |
| 1851 | Python denounced their bourgeois class, |
| 1852 | |
| 1853 | 00:49:12.880 --> 00:49:18.160 |
| 1854 | renounced formalist notions like Turing |
| 1855 | incompleteness and began a new life as |
| 1856 | |
| 1857 | 00:49:18.160 --> 00:49:26.000 |
| 1858 | citizen Starlark. This is especially an |
| 1859 | example of Benjamin Peterson's humor. |
| 1860 | |
| 1861 | 00:49:27.280 --> 00:49:33.760 |
| 1862 | I had the fortune or the misfortune depending how |
| 1863 | you see it to be the uh Python 2.7 release manager |
| 1864 | |
| 1865 | 00:49:33.760 --> 00:49:41.920 |
| 1866 | for an entire decade. We had to adjust our plans |
| 1867 | for Python 3 and for Python 2 so that there was |
| 1868 | |
| 1869 | 00:49:41.920 --> 00:49:48.720 |
| 1870 | a longer series of releases where there were both |
| 1871 | new Python 2 versions and new Python 3 versions. |
| 1872 | |
| 1873 | 00:49:48.720 --> 00:49:53.680 |
| 1874 | What ended up happening is then the community was |
| 1875 | like maintaining 2 and 3 and that created a lot |
| 1876 | |
| 1877 | 00:49:53.680 --> 00:49:59.120 |
| 1878 | of burden. And so this was happening all during |
| 1879 | the growth of NumPy. We made it work for Python |
| 1880 | |
| 1881 | 00:49:59.120 --> 00:50:11.200 |
| 1882 | 2 and then I think Python 3.1 I think or 3.2, |
| 1883 | we also made it work there but saw no adoption. |
| 1884 | |
| 1885 | 00:50:11.200 --> 00:50:17.600 |
| 1886 | We knew it was going to take a long time. |
| 1887 | Uh we knew it was going to be painful but |
| 1888 | |
| 1889 | 00:50:17.600 --> 00:50:22.640 |
| 1890 | there is light at the end of the tunnel. The |
| 1891 | community contributed stuff like lib2to3 and |
| 1892 | |
| 1893 | 00:50:22.640 --> 00:50:29.360 |
| 1894 | other migration tools came out. Benjamin Peterson |
| 1895 | wrote Six that really helped that transition. The |
| 1896 | |
| 1897 | 00:50:29.360 --> 00:50:34.960 |
| 1898 | language itself became a little more backwards |
| 1899 | compatible. I eventually advocated to bring |
| 1900 | |
| 1901 | 00:50:34.960 --> 00:50:39.360 |
| 1902 | back the 'u' prefix on the strings and that |
| 1903 | actually made it easier to write unified code |
| 1904 | |
| 1905 | 00:50:39.360 --> 00:50:43.120 |
| 1906 | bases that target both Python 2 and Python |
| 1907 | 3. There was a point in time where we made |
| 1908 | |
| 1909 | 00:50:43.120 --> 00:50:53.360 |
| 1910 | a very strong declaration, there will never |
| 1911 | be a Python 2.8 and Python 3 is the future. |
| 1912 | |
| 1913 | 00:50:53.360 --> 00:51:00.640 |
| 1914 | Python 3 just is a better language and it |
| 1915 | is getting better over time. Python 2 on |
| 1916 | |
| 1917 | 00:51:00.640 --> 00:51:06.960 |
| 1918 | the other hand is a fine language and it will |
| 1919 | remain exactly what it is. For a long time, |
| 1920 | |
| 1921 | 00:51:06.960 --> 00:51:11.360 |
| 1922 | there was a lot of measurement of how much |
| 1923 | Python 2 usage is there, how much Python 3 |
| 1924 | |
| 1925 | 00:51:11.360 --> 00:51:16.080 |
| 1926 | usage is there. I think it was when Python was in |
| 1927 | Portland, was roughly when we started to see like |
| 1928 | |
| 1929 | 00:51:16.080 --> 00:51:22.720 |
| 1930 | 50/50. Once 3.4 came out, it actually added some |
| 1931 | features that were interesting to people like, oh, |
| 1932 | |
| 1933 | 00:51:22.720 --> 00:51:30.320 |
| 1934 | I want that capability. So, to me, Python 3.4 was |
| 1935 | really Python 3.0. And then 3.5 was an even bigger |
| 1936 | |
| 1937 | 00:51:30.320 --> 00:51:36.560 |
| 1938 | milestone. That was the one that got widespread |
| 1939 | adoption of Python 3. And by the time Python 3.5 |
| 1940 | |
| 1941 | 00:51:36.560 --> 00:51:40.880 |
| 1942 | came out, then it was clear that Python 3 would |
| 1943 | work. And then you started to have companies come |
| 1944 | |
| 1945 | 00:51:40.880 --> 00:51:48.640 |
| 1946 | out and give talks like Instagram's talk, which |
| 1947 | I believe is also at Portland, was a big deal. |
| 1948 | |
| 1949 | 00:51:48.640 --> 00:51:54.960 |
| 1950 | Yes, you heard it right. Instagram has been |
| 1951 | running fully on Python 3 for a few months. |
| 1952 | |
| 1953 | 00:51:54.960 --> 00:52:00.000 |
| 1954 | The whole process took I would say about 9 to |
| 1955 | 10 months. And I think Instagram was the largest |
| 1956 | |
| 1957 | 00:52:00.000 --> 00:52:06.960 |
| 1958 | production deployment for Python at the time. She |
| 1959 | gave a very good, very thorough talk explaining |
| 1960 | |
| 1961 | 00:52:06.960 --> 00:52:12.080 |
| 1962 | why they did it. Two main things: typing and |
| 1963 | asyncio. How they did it. We cleaned out all |
| 1964 | |
| 1965 | 00:52:12.080 --> 00:52:17.200 |
| 1966 | the libraries that are not making the migration |
| 1967 | from Python 2 to 3. How you should do it. Unit |
| 1968 | |
| 1969 | 00:52:17.200 --> 00:52:22.880 |
| 1970 | test. What they had learned during the process. We |
| 1971 | had actually some good performance gains as well, |
| 1972 | |
| 1973 | 00:52:22.880 --> 00:52:30.560 |
| 1974 | after our migration. It felt as vindication |
| 1975 | that at least there were large companies that |
| 1976 | |
| 1977 | 00:52:30.560 --> 00:52:36.560 |
| 1978 | took the time to do it right and to convert all |
| 1979 | their code to Python 3 and were able to do it |
| 1980 | |
| 1981 | 00:52:36.560 --> 00:52:41.840 |
| 1982 | successfully. It was definitely well received. |
| 1983 | We got a lot of people saying: we really wanted |
| 1984 | |
| 1985 | 00:52:41.840 --> 00:52:47.920 |
| 1986 | to migrate as well, but we weren't getting the |
| 1987 | kind of support that my team or my company was |
| 1988 | |
| 1989 | 00:52:47.920 --> 00:52:52.800 |
| 1990 | giving us. And now I can bring this back to |
| 1991 | my management. And that really gave people |
| 1992 | |
| 1993 | 00:52:52.800 --> 00:52:59.760 |
| 1994 | the confidence in migrating to Python 3. It became |
| 1995 | like a look, Instagram can do it. Why don't you |
| 1996 | |
| 1997 | 00:52:59.760 --> 00:53:12.000 |
| 1998 | do it? Instagram's getting benefits, new features, |
| 1999 | faster code. Why don't you also want that benefit? |
| 2000 | |
| 2001 | 00:53:12.000 --> 00:53:18.160 |
| 2002 | [Music] |
| 2003 | |
| 2004 | 00:53:18.160 --> 00:53:23.920 |
| 2005 | Projects undergo things like this. And Python |
| 2006 | learned a lot from it and it did actually |
| 2007 | |
| 2008 | 00:53:23.920 --> 00:53:29.200 |
| 2009 | eventually end up with Python 3 being in a pretty |
| 2010 | good spot again that it was safe to use. And safe |
| 2011 | |
| 2012 | 00:53:29.200 --> 00:53:34.400 |
| 2013 | to use sounds weird but like where I felt like I |
| 2014 | can actually start new projects on Python 3 now |
| 2015 | |
| 2016 | 00:53:34.400 --> 00:53:40.000 |
| 2017 | because we're back to a stable situation where |
| 2018 | you're about as productive as I felt like I was |
| 2019 | |
| 2020 | 00:53:40.000 --> 00:53:44.480 |
| 2021 | with Python 2. Hi, Anna, nice to meet you. I |
| 2022 | really liked your talk. But it was basically |
| 2023 | |
| 2024 | 00:53:44.480 --> 00:53:50.800 |
| 2025 | time that healed it. When Python 2.7 was declared |
| 2026 | that there wouldn't be any more security fixes, |
| 2027 | |
| 2028 | 00:53:50.800 --> 00:53:56.400 |
| 2029 | it became a security concern. That was sort |
| 2030 | of the final push. People who donated their |
| 2031 | |
| 2032 | 00:53:56.400 --> 00:54:01.760 |
| 2033 | work to do this migration in the wider Python |
| 2034 | world and community eventually got the world |
| 2035 | |
| 2036 | 00:54:01.760 --> 00:54:06.240 |
| 2037 | running on Python 3, but as I said like it |
| 2038 | was a decade long process. And I don't think |
| 2039 | |
| 2040 | 00:54:06.240 --> 00:54:11.440 |
| 2041 | anybody anticipated how much work it would be |
| 2042 | to move to Python 3. I think Python's probably |
| 2043 | |
| 2044 | 00:54:11.440 --> 00:54:19.120 |
| 2045 | too big to ever go through a transition like that |
| 2046 | today. The community was maybe a little too big, |
| 2047 | |
| 2048 | 00:54:19.120 --> 00:54:24.880 |
| 2049 | but not too big. I even still get angry |
| 2050 | messages sometimes from people who are like, |
| 2051 | |
| 2052 | 00:54:24.880 --> 00:54:31.840 |
| 2053 | "My code needs Python 2.7. You need to |
| 2054 | provide it." And I tell them, "No." I |
| 2055 | |
| 2056 | 00:54:31.840 --> 00:54:37.840 |
| 2057 | never wavered in my commitment to Python 3. It |
| 2058 | was a lesson learned for sure. For a long time, |
| 2059 | |
| 2060 | 00:54:37.840 --> 00:54:43.920 |
| 2061 | I regularly joked there would be a Python 4, but |
| 2062 | the transition would be handled much better than |
| 2063 | |
| 2064 | 00:54:43.920 --> 00:54:50.640 |
| 2065 | the transition to Python 3. I felt I owed that |
| 2066 | to the community. And now, the mantra has changed |
| 2067 | |
| 2068 | 00:54:50.640 --> 00:54:56.240 |
| 2069 | to there will never be even a Python 4. To be |
| 2070 | honest, I don't know how many people in Python |
| 2071 | |
| 2072 | 00:54:56.240 --> 00:55:04.240 |
| 2073 | even know about the whole transition because |
| 2074 | that all ended in 2020. At least it's behind us. |
| 2075 | |
| 2076 | 00:55:17.000 --> 00:55:18.000 |
| 2077 | [Music] |
| 2078 | |
| 2079 | 00:55:18.000 --> 00:55:28.240 |
| 2080 | Okay, so now we get in the closet. So there's |
| 2081 | the frisbee. This is the most unique merch I've |
| 2082 | |
| 2083 | 00:55:28.240 --> 00:55:35.600 |
| 2084 | ever seen related to Python. Now, here's |
| 2085 | a significant t-shirt. It says, "Python is |
| 2086 | |
| 2087 | 00:55:35.600 --> 00:55:45.600 |
| 2088 | for girls." I received this anonymously |
| 2089 | in the mail at Google. And to this day, |
| 2090 | |
| 2091 | 00:55:45.600 --> 00:55:50.720 |
| 2092 | I don't know exactly what the intention of the |
| 2093 | sender was. They never revealed themselves, |
| 2094 | |
| 2095 | 00:55:50.720 --> 00:55:55.760 |
| 2096 | at least not to me. And I don't know if |
| 2097 | there was an intention even.. But I sort |
| 2098 | |
| 2099 | 00:55:55.760 --> 00:56:04.560 |
| 2100 | of realized at that point that there wasn't a |
| 2101 | whole lot of women in the the Python community |
| 2102 | |
| 2103 | 00:56:04.560 --> 00:56:14.400 |
| 2104 | and the community also discovered that |
| 2105 | and fixed it for the Python conference. |
| 2106 | |
| 2107 | 00:56:14.400 --> 00:56:20.000 |
| 2108 | This idea of being a place where people from |
| 2109 | a wide range of backgrounds can learn how to |
| 2110 | |
| 2111 | 00:56:20.000 --> 00:56:26.240 |
| 2112 | program, benefit from programming, find community. |
| 2113 | There really was some snowballing adoption of |
| 2114 | |
| 2115 | 00:56:26.240 --> 00:56:34.560 |
| 2116 | these ideas across languages at the time. Jessica |
| 2117 | McKellar looks at the speakers at PyCon and says, |
| 2118 | |
| 2119 | 00:56:34.560 --> 00:56:40.320 |
| 2120 | "There's only 3% that are women. What can we |
| 2121 | do about this?" She was co-organizer of the |
| 2122 | |
| 2123 | 00:56:40.320 --> 00:56:45.200 |
| 2124 | biggest Python meetup in the world in Boston. |
| 2125 | She knew what she was talking about. It's not |
| 2126 | |
| 2127 | 00:56:45.200 --> 00:56:49.840 |
| 2128 | rocket science. It's like, ask people if they're |
| 2129 | interested in speaking and we just.. providing |
| 2130 | |
| 2131 | 00:56:49.840 --> 00:57:01.520 |
| 2132 | like a little bit of support drove a huge shift in |
| 2133 | the volume and demographics of the talks that were |
| 2134 | |
| 2135 | 00:57:01.520 --> 00:57:08.240 |
| 2136 | submitted. And then 3 years later, like 35% of |
| 2137 | the speakers are women. I forget what the number |
| 2138 | |
| 2139 | 00:57:08.240 --> 00:57:15.120 |
| 2140 | was but I think it was almost even with male |
| 2141 | speakers. PyCon... I had an old tweet about this, |
| 2142 | |
| 2143 | 00:57:15.120 --> 00:57:19.920 |
| 2144 | so I just pulled this up. Says, "Hello from your |
| 2145 | PyCon Diversity Chair." So, the percentage of |
| 2146 | |
| 2147 | 00:57:19.920 --> 00:57:31.760 |
| 2148 | PyCon talks by women: 2011 was 1%, 2012, it was |
| 2149 | 7%, 2013, 15%, 2014 and 2015, 33%. And in 2016, |
| 2150 | |
| 2151 | 00:57:31.760 --> 00:57:38.560 |
| 2152 | 40%. Problems have solutions. That was a very |
| 2153 | inspiring story to me also. Something that was |
| 2154 | |
| 2155 | 00:57:38.560 --> 00:57:45.280 |
| 2156 | less inspiring to me was that at the language |
| 2157 | summit there wasn't a single woman in the room, |
| 2158 | |
| 2159 | 00:57:45.280 --> 00:57:54.560 |
| 2160 | and I don't believe we have a single female |
| 2161 | committer to core Python. There wasn't ever |
| 2162 | |
| 2163 | 00:57:54.560 --> 00:57:59.760 |
| 2164 | ill intent but unfortunately we fell into |
| 2165 | the trap of not doing enough diversity |
| 2166 | |
| 2167 | 00:57:59.760 --> 00:58:04.160 |
| 2168 | reach out to try to get more people to |
| 2169 | come in. To be honest it was a lot of |
| 2170 | |
| 2171 | 00:58:04.160 --> 00:58:12.480 |
| 2172 | white men. So Guido wanted to change that. |
| 2173 | I want at least two female core Python devs |
| 2174 | |
| 2175 | 00:58:12.480 --> 00:58:18.240 |
| 2176 | in the next year and I will try to train |
| 2177 | them myself if that's what it takes. So |
| 2178 | |
| 2179 | 00:58:18.240 --> 00:58:30.440 |
| 2180 | come talk to me. I believe one of the first |
| 2181 | people who took up that call was Mariatta. |
| 2182 | |
| 2183 | 00:58:30.440 --> 00:58:41.040 |
| 2184 | [Music] Even though I've always been |
| 2185 | passionate about technology and programming, |
| 2186 | |
| 2187 | 00:58:41.040 --> 00:58:49.840 |
| 2188 | I also felt it wasn't a welcoming environment for |
| 2189 | women. My schoolmates who took computer science |
| 2190 | |
| 2191 | 00:58:49.840 --> 00:58:56.720 |
| 2192 | are mostly men. Most of the professors were men |
| 2193 | and at work most of my co-workers were men and I |
| 2194 | |
| 2195 | 00:58:56.720 --> 00:59:04.720 |
| 2196 | just didn't really have examples or role models |
| 2197 | of women being successful in the tech industry. |
| 2198 | |
| 2199 | 00:59:06.960 --> 00:59:12.560 |
| 2200 | One of my co-workers went to PyCon. He |
| 2201 | saw that at that conference there is |
| 2202 | |
| 2203 | 00:59:12.560 --> 00:59:32.960 |
| 2204 | this community called PyLadies and |
| 2205 | I felt like.. I want to meet them. |
| 2206 | |
| 2207 | 00:59:32.960 --> 00:59:33.120 |
| 2208 | [Music] |
| 2209 | |
| 2210 | 00:59:33.120 --> 00:59:40.080 |
| 2211 | So in 2015, that's when I decided I |
| 2212 | want to go to PyCon. At this conference, |
| 2213 | |
| 2214 | 00:59:40.080 --> 00:59:48.240 |
| 2215 | I got to see a lot of women speaking and |
| 2216 | presenting. At my previous tech conference, |
| 2217 | |
| 2218 | 00:59:48.240 --> 00:59:55.680 |
| 2219 | all speakers were men, all the keynote speakers |
| 2220 | were men. So this was really different. |
| 2221 | |
| 2222 | 00:59:55.680 --> 01:00:00.320 |
| 2223 | One of the keynote speakers at that same |
| 2224 | conference was Guido van Rossum. Hello |
| 2225 | |
| 2226 | 01:00:00.320 --> 01:00:06.640 |
| 2227 | everybody. Glad to see you all. I want to meet |
| 2228 | and see the creator of the Python programming |
| 2229 | |
| 2230 | 01:00:06.640 --> 01:00:10.880 |
| 2231 | language. "And I will try to train them |
| 2232 | myself if that's what it takes". I heard |
| 2233 | |
| 2234 | 01:00:10.880 --> 01:00:16.880 |
| 2235 | this speech. However, at that time, I |
| 2236 | just didn't think that it's something |
| 2237 | |
| 2238 | 01:00:16.880 --> 01:00:22.240 |
| 2239 | I could do. I wasn't even contributing to |
| 2240 | the Python community. I didn't contribute |
| 2241 | |
| 2242 | 01:00:22.240 --> 01:00:30.320 |
| 2243 | to open source at all. I just thought |
| 2244 | I'm sure they will find women next year. |
| 2245 | |
| 2246 | 01:00:35.200 --> 01:00:41.920 |
| 2247 | The year after I went back to PyCon US and Guido |
| 2248 | van Rossum gave another keynote. We still don't |
| 2249 | |
| 2250 | 01:00:41.920 --> 01:00:47.440 |
| 2251 | have two female core developers. I think at |
| 2252 | that time that's something really clicked in me, |
| 2253 | |
| 2254 | 01:00:47.440 --> 01:00:52.640 |
| 2255 | like I realized that there's something |
| 2256 | within me that says: if nobody's doing it, |
| 2257 | |
| 2258 | 01:00:52.640 --> 01:00:59.680 |
| 2259 | I will do it. I wrote to Guido van |
| 2260 | Rossum and I asked him for help. |
| 2261 | |
| 2262 | 01:01:00.320 --> 01:01:07.920 |
| 2263 | Somehow I felt really scared. I just didn't |
| 2264 | feel like I deserved mentorship from Guido |
| 2265 | |
| 2266 | 01:01:07.920 --> 01:01:15.440 |
| 2267 | van Rossum. So I really hesitated to send this |
| 2268 | email to him. But in the end, I realized that I |
| 2269 | |
| 2270 | 01:01:15.440 --> 01:01:27.280 |
| 2271 | want to try. Like I felt like this was a great |
| 2272 | opportunity for me. I pressed the send button. |
| 2273 | |
| 2274 | 01:01:27.280 --> 01:01:33.840 |
| 2275 | I got a reply. He was very friendly. He started |
| 2276 | sharing resources about, you know, how to get |
| 2277 | |
| 2278 | 01:01:33.840 --> 01:01:40.320 |
| 2279 | started contributing to Python. He offered to |
| 2280 | do video chats. It's been really helpful to have |
| 2281 | |
| 2282 | 01:01:40.320 --> 01:01:47.200 |
| 2283 | his moral support. We had a pretty sort of deep |
| 2284 | mentorship relationship for a few years. Mariatta |
| 2285 | |
| 2286 | 01:01:47.200 --> 01:01:52.480 |
| 2287 | learned the process from Guido and continued to |
| 2288 | contribute more and more very much around tooling, |
| 2289 | |
| 2290 | 01:01:52.480 --> 01:01:57.840 |
| 2291 | like she really found her niche in terms of trying |
| 2292 | to help make our development process easier. |
| 2293 | |
| 2294 | 01:01:58.480 --> 01:02:05.840 |
| 2295 | It was scary at first, like I just didn't feel |
| 2296 | comfortable sharing my questions in public. I |
| 2297 | |
| 2298 | 01:02:05.840 --> 01:02:11.280 |
| 2299 | didn't want people to know that I don't |
| 2300 | know how to do certain things, you know, |
| 2301 | |
| 2302 | 01:02:11.280 --> 01:02:18.880 |
| 2303 | like I didn't want people to see that I'm actually |
| 2304 | not that good. But this is how it it works in open |
| 2305 | |
| 2306 | 01:02:18.880 --> 01:02:27.920 |
| 2307 | source. And the community has always been kind |
| 2308 | and helped me with my questions without saying |
| 2309 | |
| 2310 | 01:02:27.920 --> 01:02:41.200 |
| 2311 | that you're stupid. Like I never felt like I was |
| 2312 | being judged. I think it does start with Guido. |
| 2313 | |
| 2314 | 01:02:41.200 --> 01:02:48.160 |
| 2315 | The fact that Guido was very active in bringing |
| 2316 | more voices into Python absolutely made Python |
| 2317 | |
| 2318 | 01:02:48.160 --> 01:02:53.920 |
| 2319 | better and stronger. Just the way the whole |
| 2320 | community works and what we stand for, |
| 2321 | |
| 2322 | 01:02:53.920 --> 01:03:06.000 |
| 2323 | thanks to Guido's leadership, is where I want to |
| 2324 | be. And I think that's true for a lot of people. |
| 2325 | |
| 2326 | 01:03:10.640 --> 01:03:15.600 |
| 2327 | About six, seven months after I |
| 2328 | started reaching out to Guido, |
| 2329 | |
| 2330 | 01:03:15.600 --> 01:03:21.920 |
| 2331 | I was recommended to become a Python |
| 2332 | core developer. It really wasn't until |
| 2333 | |
| 2334 | 01:03:21.920 --> 01:03:31.840 |
| 2335 | 4 months ago that for the first |
| 2336 | time ever. There's a woman... |
| 2337 | |
| 2338 | 01:03:31.840 --> 01:03:38.640 |
| 2339 | There's a woman who became a Python core developer |
| 2340 | and earned that commit privilege. The first woman |
| 2341 | |
| 2342 | 01:03:38.640 --> 01:03:43.920 |
| 2343 | ever to join our team and has continued to be |
| 2344 | there and participate and try to help us and |
| 2345 | |
| 2346 | 01:03:43.920 --> 01:03:52.320 |
| 2347 | always a very good advocate to try to improve |
| 2348 | our diversity. Now that I've seen the camera, |
| 2349 | |
| 2350 | 01:03:52.320 --> 01:03:59.840 |
| 2351 | I can't do it. My life really changed after |
| 2352 | that. A lot of opportunities opened up just |
| 2353 | |
| 2354 | 01:03:59.840 --> 01:04:10.320 |
| 2355 | because I'm a Python core developer. Hi, how are |
| 2356 | you? [Music] Mariatta went on to give her own set |
| 2357 | |
| 2358 | 01:04:10.320 --> 01:04:19.760 |
| 2359 | of talks about how important mentorship is. When |
| 2360 | you don't have role models who you can relate to, |
| 2361 | |
| 2362 | 01:04:19.760 --> 01:04:28.720 |
| 2363 | you start believing that you cannot do it. Thank |
| 2364 | you. Hi everybody. Uh my name is Mariatta. I'm |
| 2365 | |
| 2366 | 01:04:28.720 --> 01:04:37.200 |
| 2367 | a PyLady. I run PyLadies Vancouver. I also |
| 2368 | help with the PyLadies con. 10 years ago, |
| 2369 | |
| 2370 | 01:04:37.200 --> 01:04:41.840 |
| 2371 | I was also in this room for the |
| 2372 | Pyladies luncheon at PyCon US 2015. |
| 2373 | |
| 2374 | 01:04:41.840 --> 01:04:49.120 |
| 2375 | It was a life-changing event for me. It was at |
| 2376 | that event that I felt for the first time in |
| 2377 | |
| 2378 | 01:04:49.120 --> 01:04:58.880 |
| 2379 | my life as a developer, I felt like I belong in |
| 2380 | tech because I see 100 women in the room with me. |
| 2381 | |
| 2382 | 01:04:58.880 --> 01:05:09.040 |
| 2383 | I just want other women to have role models. |
| 2384 | I hope I can help inspire them and help them. |
| 2385 | |
| 2386 | 01:05:09.040 --> 01:05:15.360 |
| 2387 | These opportunities belong to you, too. You're |
| 2388 | all the reason I do this because I know there's |
| 2389 | |
| 2390 | 01:05:15.360 --> 01:05:23.600 |
| 2391 | still a lot to do and I know together we can |
| 2392 | help each other and support each other. Okay, |
| 2393 | |
| 2394 | 01:05:23.600 --> 01:05:33.760 |
| 2395 | I think that's it. Thank you so much everybody. |
| 2396 | [Applause] I have been so consistently impressed |
| 2397 | |
| 2398 | 01:05:33.760 --> 01:05:41.760 |
| 2399 | by the Python community's ability to have |
| 2400 | respectful and and real reflection and |
| 2401 | |
| 2402 | 01:05:41.760 --> 01:05:51.440 |
| 2403 | dialogue about how to steward itself and how to |
| 2404 | move it forward in a way that I find so inspiring |
| 2405 | |
| 2406 | 01:05:51.440 --> 01:05:56.480 |
| 2407 | and a vision of what is possible in other |
| 2408 | communities. And I mean that really sincerely. |
| 2409 | |
| 2410 | 01:06:06.720 --> 01:06:13.680 |
| 2411 | There were an ever growing number of sort of |
| 2412 | scientific disciplines where all the code was |
| 2413 | |
| 2414 | 01:06:13.680 --> 01:06:21.280 |
| 2415 | written in Python or a lot of it was prototyped |
| 2416 | in Python at least. And then the next step was |
| 2417 | |
| 2418 | 01:06:21.280 --> 01:06:28.480 |
| 2419 | machine learning packages which started with |
| 2420 | TensorFlow and was later followed by PyTorch. |
| 2421 | |
| 2422 | 01:06:28.480 --> 01:06:35.120 |
| 2423 | For a long time, Python was seen sort of as |
| 2424 | a scripting language that you would just do |
| 2425 | |
| 2426 | 01:06:35.120 --> 01:06:41.280 |
| 2427 | small things that you need to automate and not |
| 2428 | production ready code and so it wasn't given a |
| 2429 | |
| 2430 | 01:06:41.280 --> 01:06:48.400 |
| 2431 | ton of attention. And then now AI/ML has sort of |
| 2432 | changed things where it is now a business driver. |
| 2433 | |
| 2434 | 01:06:48.400 --> 01:06:57.440 |
| 2435 | It appeals to people who are not professional |
| 2436 | programmers but need software to do a task. |
| 2437 | |
| 2438 | 01:06:57.440 --> 01:07:03.600 |
| 2439 | There are some other languages like Rm you can do |
| 2440 | some interesting stuff in but Python is really it |
| 2441 | |
| 2442 | 01:07:03.600 --> 01:07:09.920 |
| 2443 | for a AI/ML these days. Python has probably |
| 2444 | like centuries of engineering time that has |
| 2445 | |
| 2446 | 01:07:09.920 --> 01:07:15.040 |
| 2447 | gone into code in the ecosystem specifically |
| 2448 | on those topics. So if you're using Python, |
| 2449 | |
| 2450 | 01:07:15.040 --> 01:07:22.160 |
| 2451 | you're able to instantly tap into those libraries. |
| 2452 | Meta has PyTorch, which has a amazing Python API |
| 2453 | |
| 2454 | 01:07:22.160 --> 01:07:28.560 |
| 2455 | and front-end people can interact with. There's |
| 2456 | also SciPy, NumPy, Numba, Pandas. There's a |
| 2457 | |
| 2458 | 01:07:28.560 --> 01:07:35.200 |
| 2459 | whole suite of really extensive tools. Trying to |
| 2460 | build a language and a language ecosystem that |
| 2461 | |
| 2462 | 01:07:35.200 --> 01:07:39.840 |
| 2463 | is amendable to all of that is non-trivial. |
| 2464 | That actually took real design, real thought, |
| 2465 | |
| 2466 | 01:07:39.840 --> 01:07:46.240 |
| 2467 | and real ecosystem collective innovation over the |
| 2468 | course of decades. The back-end of those tools are |
| 2469 | |
| 2470 | 01:07:46.240 --> 01:07:54.800 |
| 2471 | usually C or Fortran or some other native language |
| 2472 | that's much faster, but would be difficult for |
| 2473 | |
| 2474 | 01:07:54.800 --> 01:08:03.760 |
| 2475 | someone with an AI background to program in. And |
| 2476 | it continues to be used for all that by all the |
| 2477 | |
| 2478 | 01:08:03.760 --> 01:08:07.920 |
| 2479 | AI scientists, developing the models, and |
| 2480 | the people training the models, people |
| 2481 | |
| 2482 | 01:08:07.920 --> 01:08:17.320 |
| 2483 | using the models. And that brings yet another |
| 2484 | increment of of growth to the Python community. |
| 2485 | |
| 2486 | 01:08:17.320 --> 01:08:24.400 |
| 2487 | [Music] Python's a fantastic language |
| 2488 | even if you're not a scientist. I just |
| 2489 | |
| 2490 | 01:08:24.400 --> 01:08:29.600 |
| 2491 | don't think it would have risen to the level |
| 2492 | of dramatic usage without the science first |
| 2493 | |
| 2494 | 01:08:29.600 --> 01:08:33.760 |
| 2495 | data science and machine learning story. We |
| 2496 | had a massive impact in the world. You know, |
| 2497 | |
| 2498 | 01:08:33.760 --> 01:08:39.120 |
| 2499 | I think one testament to the future of Python |
| 2500 | is, if you prompt any of the LLMs to do code |
| 2501 | |
| 2502 | 01:08:39.120 --> 01:08:44.640 |
| 2503 | generation today. If it's front-end, it's going |
| 2504 | to be JavaScript. If it's back-end data analysis, |
| 2505 | |
| 2506 | 01:08:44.640 --> 01:08:49.440 |
| 2507 | it's going to be Python. That's |
| 2508 | the future. And Python is a part |
| 2509 | |
| 2510 | 01:08:49.440 --> 01:08:58.560 |
| 2511 | of that future. Lucky me that I that I chose |
| 2512 | that language and not not a different one. |
| 2513 | |
| 2514 | 01:08:58.560 --> 01:09:05.680 |
| 2515 | Hey, Jacob. Oh, hello, morning. Hope you don't |
| 2516 | mind being filmed. Yeah. Ah, okay. Ida's following |
| 2517 | |
| 2518 | 01:09:05.680 --> 01:09:11.840 |
| 2519 | me. All right. Yeah, she's shooting some b-roll |
| 2520 | for the documentary, I think. Ah, nice. I first |
| 2521 | |
| 2522 | 01:09:11.840 --> 01:09:21.760 |
| 2523 | used Python in 1997 or something like that. |
| 2524 | Wow, that's really early days. So, it's got |
| 2525 | |
| 2526 | 01:09:21.760 --> 01:09:26.960 |
| 2527 | 30 frames of animation. Oh, wow. I told everyone |
| 2528 | that he would hate getting the DSA, but they did |
| 2529 | |
| 2530 | 01:09:26.960 --> 01:09:32.480 |
| 2531 | it anyway. Yeah. Sorry, the DSA? Distinguished |
| 2532 | Service Award. I labeled him in the annual report |
| 2533 | |
| 2534 | 01:09:32.480 --> 01:09:37.920 |
| 2535 | as like a leader in the Python community once and |
| 2536 | he made me take it out. Yeah, we can see that. But |
| 2537 | |
| 2538 | 01:09:37.920 --> 01:09:43.920 |
| 2539 | nevertheless, he was on the steering council for |
| 2540 | five years. Uhhuh. And he was a leader. I got a |
| 2541 | |
| 2542 | 01:09:43.920 --> 01:09:49.520 |
| 2543 | job from a Python conference back in 2017. I grew |
| 2544 | up in India. I moved to Germany, changed my life. |
| 2545 | |
| 2546 | 01:09:49.520 --> 01:09:54.560 |
| 2547 | So I think Python changed a lot of things for me |
| 2548 | and I just wanted to say thanks to you for for |
| 2549 | |
| 2550 | 01:09:54.560 --> 01:10:00.560 |
| 2551 | making this language. That's very sweet. Yeah. Do |
| 2552 | you mind if I uh take a picture with you or that |
| 2553 | |
| 2554 | 01:10:00.560 --> 01:10:06.640 |
| 2555 | you don't like it? I'm so sorry. I really don't |
| 2556 | like it and especially not in busy places. Okay, |
| 2557 | |
| 2558 | 01:10:06.640 --> 01:10:13.200 |
| 2559 | no problem. I get it. Okay. Find me in a dark |
| 2560 | alley and I'll do it. Okay. Okay. I get it. |
| 2561 | |
| 2562 | 01:10:14.480 --> 01:10:20.800 |
| 2563 | Ah, I always kind of looked at myself as the |
| 2564 | bass player of Python, which is great. You know, |
| 2565 | |
| 2566 | 01:10:20.800 --> 01:10:26.320 |
| 2567 | you can do a lot, you can have fun, and the |
| 2568 | spotlight's not on you. And I love that. I can't |
| 2569 | |
| 2570 | 01:10:26.320 --> 01:10:32.560 |
| 2571 | imagine having that kind of spotlight on you, |
| 2572 | you know, for so many years. I heard a story from |
| 2573 | |
| 2574 | 01:10:32.560 --> 01:10:38.480 |
| 2575 | an Apple VP of engineering, that Steve Jobs had |
| 2576 | turned down their hire of Guido because he said, |
| 2577 | |
| 2578 | 01:10:38.480 --> 01:10:48.960 |
| 2579 | he has his own following and we don't |
| 2580 | want to have that kind of distraction. |
| 2581 | |
| 2582 | 01:10:48.960 --> 01:10:54.320 |
| 2583 | Python has always been a language that changed. |
| 2584 | We've never been one of those languages that says |
| 2585 | |
| 2586 | 01:10:54.320 --> 01:10:59.840 |
| 2587 | if you write code against this version of Python, |
| 2588 | it will run forever with any new version of the |
| 2589 | |
| 2590 | 01:10:59.840 --> 01:11:08.800 |
| 2591 | language. We just simply have never been those |
| 2592 | people. A PEP is an acronym for Python Enhancement |
| 2593 | |
| 2594 | 01:11:08.800 --> 01:11:14.480 |
| 2595 | Proposal. That's a document that's written |
| 2596 | by someone who wants to make a significant |
| 2597 | |
| 2598 | 01:11:14.480 --> 01:11:19.440 |
| 2599 | change to Python. Basically, you're trying to |
| 2600 | convince people that this is a good idea. It |
| 2601 | |
| 2602 | 01:11:19.440 --> 01:11:24.960 |
| 2603 | would be sent for discussion for a mailing |
| 2604 | list and then eventually Guido as the BDFL, |
| 2605 | |
| 2606 | 01:11:24.960 --> 01:11:31.760 |
| 2607 | the Benevolent Dictator for Life, would decide |
| 2608 | whether your change was going in or not. But |
| 2609 | |
| 2610 | 01:11:31.760 --> 01:11:40.640 |
| 2611 | people always have worried that the next change |
| 2612 | is going to be the one that changes the feel of |
| 2613 | |
| 2614 | 01:11:40.640 --> 01:11:47.360 |
| 2615 | the language. It won't fit my brain anymore or it |
| 2616 | won't be accessible anymore. I've actually seen |
| 2617 | |
| 2618 | 01:11:47.360 --> 01:11:52.640 |
| 2619 | people storm out of rooms saying, "You're ruining |
| 2620 | this language." Some people take it very, very |
| 2621 | |
| 2622 | 01:11:52.640 --> 01:12:00.640 |
| 2623 | personally and seriously. And the Walrus operator |
| 2624 | was no different. Yeah so, PEP 572, I don't know |
| 2625 | |
| 2626 | 01:12:00.640 --> 01:12:04.560 |
| 2627 | who coined the term the Walrus Operator, but |
| 2628 | if you kind of turn your head, it looks like |
| 2629 | |
| 2630 | 01:12:04.560 --> 01:12:13.360 |
| 2631 | a little walrus. It was a new feature that was |
| 2632 | proposed, but it was also a syntax change. The |
| 2633 | |
| 2634 | 01:12:13.360 --> 01:12:19.520 |
| 2635 | Walrus operator lets you do assignments, meaning |
| 2636 | put values into variables in places that you |
| 2637 | |
| 2638 | 01:12:19.520 --> 01:12:26.000 |
| 2639 | previously could not. That was probably the most |
| 2640 | contentious language change, oddly enough, because |
| 2641 | |
| 2642 | 01:12:26.000 --> 01:12:31.120 |
| 2643 | it's kind of a minor thing, but it it there was so |
| 2644 | much passionate feeling about whether that should |
| 2645 | |
| 2646 | 01:12:31.120 --> 01:12:37.760 |
| 2647 | be added or not that it created kind of a bit of a |
| 2648 | of a ruckus. When I first saw the Walrus Operator, |
| 2649 | |
| 2650 | 01:12:37.760 --> 01:12:43.040 |
| 2651 | I didn't like it. It kind of felt a little |
| 2652 | un-Pythonic to me, but then I started to play |
| 2653 | |
| 2654 | 01:12:43.040 --> 01:12:47.840 |
| 2655 | with it. There was a particular use case that |
| 2656 | I came up with in my own code that I was like, |
| 2657 | |
| 2658 | 01:12:47.840 --> 01:12:53.200 |
| 2659 | "Oh, you know what? This is actually pretty |
| 2660 | cool". And so then I was like, well, I it's |
| 2661 | |
| 2662 | 01:12:53.200 --> 01:12:58.480 |
| 2663 | something that I won't use very often, but when I |
| 2664 | need it, it's really great to have. And I turned, |
| 2665 | |
| 2666 | 01:12:58.480 --> 01:13:06.640 |
| 2667 | you know, 180° and became a fan of it. But it was |
| 2668 | very disruptive. [Music] Language features and |
| 2669 | |
| 2670 | 01:13:06.640 --> 01:13:13.200 |
| 2671 | especially syntax can be a double-edged sword. So |
| 2672 | one person's succinct, elegant code can be another |
| 2673 | |
| 2674 | 01:13:13.200 --> 01:13:21.600 |
| 2675 | person's unreadable puzzle or a fusticated mess. |
| 2676 | There were very strongly voiced predictions about |
| 2677 | |
| 2678 | 01:13:21.600 --> 01:13:27.200 |
| 2679 | how bad it would be for Python. And then just |
| 2680 | because Python was so much more popular at the |
| 2681 | |
| 2682 | 01:13:27.200 --> 01:13:31.840 |
| 2683 | time, there are so many places where people talk |
| 2684 | about Python. I mean Twitter, you know, at the |
| 2685 | |
| 2686 | 01:13:31.840 --> 01:13:37.680 |
| 2687 | time. This is all happening in public, right? And |
| 2688 | everyone can kind of with low effort throw their |
| 2689 | |
| 2690 | 01:13:37.680 --> 01:13:44.080 |
| 2691 | hat into the ring and not everyone is going |
| 2692 | to restrain themselves when they're doing it. |
| 2693 | |
| 2694 | 01:13:45.760 --> 01:13:50.560 |
| 2695 | I started being more and more convinced |
| 2696 | that PEP 572 was actually the right thing |
| 2697 | |
| 2698 | 01:13:50.560 --> 01:14:04.160 |
| 2699 | to do. I was the BDFL and I accepted |
| 2700 | the PEP. And the next morning I woke up |
| 2701 | |
| 2702 | 01:14:04.160 --> 01:14:09.360 |
| 2703 | and I felt miserable |
| 2704 | |
| 2705 | 01:14:09.360 --> 01:14:12.640 |
| 2706 | because of all the attacks |
| 2707 | that had happened before. |
| 2708 | |
| 2709 | 01:14:14.080 --> 01:14:23.680 |
| 2710 | I sat down at my computer, wrote a short email, |
| 2711 | and hit send wherein I announced that I resigned |
| 2712 | |
| 2713 | 01:14:23.680 --> 01:14:33.040 |
| 2714 | at BDFL. And that had an incredible impact |
| 2715 | because nobody had expected I would resign |
| 2716 | |
| 2717 | 01:14:33.040 --> 01:14:40.560 |
| 2718 | and certainly not that I would rage quit |
| 2719 | over this issue, which essentially it was. |
| 2720 | |
| 2721 | 01:14:55.720 --> 01:14:56.720 |
| 2722 | [Music] |
| 2723 | |
| 2724 | 01:14:56.720 --> 01:15:02.240 |
| 2725 | Transfer of power. Now that PEP 572 |
| 2726 | is done, I don't ever want to have to |
| 2727 | |
| 2728 | 01:15:02.240 --> 01:15:07.760 |
| 2729 | fight so hard for a PEP and find that |
| 2730 | so many people despise my decisions. |
| 2731 | |
| 2732 | 01:15:07.760 --> 01:15:12.880 |
| 2733 | I would like to remove myself entirely from |
| 2734 | the decision process. I'm basically giving |
| 2735 | |
| 2736 | 01:15:12.880 --> 01:15:19.280 |
| 2737 | myself a permanent vacation from being BDFL |
| 2738 | and you all will be on your own. I am not |
| 2739 | |
| 2740 | 01:15:19.280 --> 01:15:25.600 |
| 2741 | going to appoint a successor. So what are you |
| 2742 | all going to do? Create a democracy, anarchy, |
| 2743 | |
| 2744 | 01:15:25.600 --> 01:15:31.200 |
| 2745 | a dictatorship, a federation? I'll still be |
| 2746 | here, but I'm trying to let you all figure |
| 2747 | |
| 2748 | 01:15:31.200 --> 01:15:40.560 |
| 2749 | something out for yourselves. I'm tired |
| 2750 | and I need a very long break. That was it. |
| 2751 | |
| 2752 | 01:15:40.560 --> 01:15:47.520 |
| 2753 | Haven't read that.. That was I thought that |
| 2754 | was pretty well written. I like to say he mic |
| 2755 | |
| 2756 | 01:15:47.520 --> 01:15:51.840 |
| 2757 | dropped his way out. You know, he just was like, |
| 2758 | I'm out. I'm done. You guys figure it out. So, |
| 2759 | |
| 2760 | 01:15:51.840 --> 01:15:58.880 |
| 2761 | it was a complete and total shock to me. |
| 2762 | Yeah. I just felt really sad about it. I |
| 2763 | |
| 2764 | 01:15:58.880 --> 01:16:06.560 |
| 2765 | wish he would have retired under better |
| 2766 | circumstances. I felt I needed to take a |
| 2767 | |
| 2768 | 01:16:06.560 --> 01:16:13.920 |
| 2769 | step back to sort of recover myself. I think a |
| 2770 | lot of people really felt for Guido, you know, |
| 2771 | |
| 2772 | 01:16:13.920 --> 01:16:26.480 |
| 2773 | that he could be pushed to that point like |
| 2774 | maybe we let him down to allow the vitriol |
| 2775 | |
| 2776 | 01:16:26.480 --> 01:16:33.360 |
| 2777 | over this change to Python to push, you know, |
| 2778 | somebody that we cared about to that point. |
| 2779 | |
| 2780 | 01:16:35.600 --> 01:16:41.840 |
| 2781 | We all perceived that it was like a a momentous |
| 2782 | occasion or like a significant change that |
| 2783 | |
| 2784 | 01:16:41.840 --> 01:16:46.560 |
| 2785 | you would put a mark in your timeline in the |
| 2786 | history book in the history of Python, right? |
| 2787 | |
| 2788 | 01:16:46.560 --> 01:16:52.720 |
| 2789 | Because it had been run on the BDFL model for its |
| 2790 | entire existence. So there was a little bit of |
| 2791 | |
| 2792 | 01:16:52.720 --> 01:16:57.760 |
| 2793 | uncertainty like, can this work at all without |
| 2794 | got Guido? It's kind of a parent saying, it's |
| 2795 | |
| 2796 | 01:16:57.760 --> 01:17:02.560 |
| 2797 | time for you to grow up and figure it out on your |
| 2798 | own. I'm not going to solve this problem for you. |
| 2799 | |
| 2800 | 01:17:05.280 --> 01:17:11.040 |
| 2801 | The first order of business was deciding on |
| 2802 | how to decide. And it turns out some people |
| 2803 | |
| 2804 | 01:17:11.040 --> 01:17:15.520 |
| 2805 | have very strong opinions on voting systems. |
| 2806 | Programmers love arguing about voting methods. |
| 2807 | |
| 2808 | 01:17:15.520 --> 01:17:22.400 |
| 2809 | I remember thinking this isn't going to work. Lot |
| 2810 | of strong voices. It's really difficult when you |
| 2811 | |
| 2812 | 01:17:22.400 --> 01:17:28.880 |
| 2813 | have hundreds of core developers and thousands |
| 2814 | of people online and millions of people in the |
| 2815 | |
| 2816 | 01:17:28.880 --> 01:17:35.920 |
| 2817 | community and probably billions of dollars of |
| 2818 | software that run on Python. You can't think |
| 2819 | |
| 2820 | 01:17:35.920 --> 01:17:42.320 |
| 2821 | about that cuz it definitely gets overwhelming. |
| 2822 | I will fully admit it was stressful. I had to go |
| 2823 | |
| 2824 | 01:17:42.320 --> 01:17:46.720 |
| 2825 | to an ear, nose, and throat specialist because I |
| 2826 | actually was starting to choke on my own throat |
| 2827 | |
| 2828 | 01:17:46.720 --> 01:17:52.560 |
| 2829 | from the stress. It was not fun because if we |
| 2830 | couldn't decide on how we were going to decide, |
| 2831 | |
| 2832 | 01:17:52.560 --> 01:17:59.120 |
| 2833 | the project was done. We really approached it |
| 2834 | like the nerdy engineers we are. In Python classic |
| 2835 | |
| 2836 | 01:17:59.120 --> 01:18:03.600 |
| 2837 | fashion, we wrote a bunch of peps. We didn't want |
| 2838 | to rush it because we knew we were going to have |
| 2839 | |
| 2840 | 01:18:03.600 --> 01:18:10.480 |
| 2841 | to live with this potentially forever. But we also |
| 2842 | realized the world was watching and did not like |
| 2843 | |
| 2844 | 01:18:10.480 --> 01:18:14.160 |
| 2845 | the idea of not knowing whether this language was |
| 2846 | going to be around in a year or not, because we |
| 2847 | |
| 2848 | 01:18:14.160 --> 01:18:20.000 |
| 2849 | couldn't stop bickering among ourselves about how |
| 2850 | to run ourselves. People sponsored different kinds |
| 2851 | |
| 2852 | 01:18:20.000 --> 01:18:23.600 |
| 2853 | of models. I think there was one which was like, |
| 2854 | let's pick another BDFL because that's what we |
| 2855 | |
| 2856 | 01:18:23.600 --> 01:18:28.800 |
| 2857 | feel comfortable with. And then there was various |
| 2858 | kinds of committees and councils and we ended up |
| 2859 | |
| 2860 | 01:18:28.800 --> 01:18:34.480 |
| 2861 | settling on the five person steering committee. |
| 2862 | Good morning PyCon! Thanks so much for joining |
| 2863 | |
| 2864 | 01:18:34.480 --> 01:18:40.560 |
| 2865 | us. So, welcome to our panel with the Python |
| 2866 | steering council. Because there's five people, |
| 2867 | |
| 2868 | 01:18:40.560 --> 01:18:45.680 |
| 2869 | you don't have the same problem of like all |
| 2870 | the stress and responsibility of making these |
| 2871 | |
| 2872 | 01:18:45.680 --> 01:18:51.520 |
| 2873 | decisions falling on one person. I actually |
| 2874 | felt that it made sense for me to be on that |
| 2875 | |
| 2876 | 01:18:51.520 --> 01:18:56.880 |
| 2877 | first steering council given that there was |
| 2878 | no longer feeling so burned out or attacked, |
| 2879 | |
| 2880 | 01:18:56.880 --> 01:19:02.160 |
| 2881 | to provide some amount of continuity. "You know |
| 2882 | how this goes when your kid goes off to college. |
| 2883 | |
| 2884 | 01:19:02.160 --> 01:19:07.840 |
| 2885 | Some of you may have experience with that. you're |
| 2886 | no longer directly involved in their lives maybe, |
| 2887 | |
| 2888 | 01:19:07.840 --> 01:19:14.960 |
| 2889 | but you never stop worrying. And that's how |
| 2890 | I feel about Python at the moment. And that's |
| 2891 | |
| 2892 | 01:19:14.960 --> 01:19:24.880 |
| 2893 | why I [Applause] why I nominated myself |
| 2894 | for the steering committee and here I am". |
| 2895 | |
| 2896 | 01:19:25.920 --> 01:19:31.520 |
| 2897 | There were elections for the second year steering |
| 2898 | council and at first I nominated myself and then |
| 2899 | |
| 2900 | 01:19:31.520 --> 01:19:37.440 |
| 2901 | withdrew because there were enough other strong |
| 2902 | candidates. They didn't need me and I was happy to |
| 2903 | |
| 2904 | 01:19:37.440 --> 01:19:56.080 |
| 2905 | uh to sort of let go of it. [Music] The legitimacy |
| 2906 | that came from the replacement springing up from |
| 2907 | |
| 2908 | 01:19:56.080 --> 01:20:06.080 |
| 2909 | the community is essential to it being accepted. |
| 2910 | It came from us, so it's accepted by us. It works. |
| 2911 | |
| 2912 | 01:20:06.080 --> 01:20:11.600 |
| 2913 | I think it works for us now. There may be a time |
| 2914 | in the future where it doesn't work or pieces of |
| 2915 | |
| 2916 | 01:20:11.600 --> 01:20:17.840 |
| 2917 | it don't work. You have to be willing to evolve. |
| 2918 | Change is the one universal constant of the |
| 2919 | |
| 2920 | 01:20:17.840 --> 01:20:31.480 |
| 2921 | universe. And so things will always change and you |
| 2922 | have to be ready and willing to adapt to change. |
| 2923 | |
| 2924 | 01:20:31.480 --> 01:20:38.560 |
| 2925 | [Music] |
| 2926 | |
| 2927 | 01:20:38.560 --> 01:20:43.760 |
| 2928 | It started out as a hobby project. Definitely. |
| 2929 | I think I probably wanted to prove something |
| 2930 | |
| 2931 | 01:20:43.760 --> 01:20:50.960 |
| 2932 | to myself more than anything. It exceeded my |
| 2933 | wildest expectations and it actually continues |
| 2934 | |
| 2935 | 01:20:50.960 --> 01:21:00.560 |
| 2936 | to do so. I constantly hear from people whose |
| 2937 | lives were completely changed by Python and it |
| 2938 | |
| 2939 | 01:21:00.560 --> 01:21:08.960 |
| 2940 | has created this incredible community which was |
| 2941 | also a complete sort of bonus over everything |
| 2942 | |
| 2943 | 01:21:08.960 --> 01:21:16.880 |
| 2944 | else I had anticipated. This community that |
| 2945 | has like a massive conference every year and |
| 2946 | |
| 2947 | 01:21:16.880 --> 01:21:26.160 |
| 2948 | smaller conferences in every continent I think |
| 2949 | except Antarctica. There was one of the Python |
| 2950 | |
| 2951 | 01:21:26.160 --> 01:21:32.480 |
| 2952 | conferences where there was a few thousand people |
| 2953 | in the audience. I remember just looking around |
| 2954 | |
| 2955 | 01:21:32.480 --> 01:21:40.960 |
| 2956 | and going, this is mind-blowing. That's the |
| 2957 | point at which I knew we had achieved something |
| 2958 | |
| 2959 | 01:21:40.960 --> 01:21:50.320 |
| 2960 | important, something that made a difference in |
| 2961 | people's lives and in the world. Python turned out |
| 2962 | |
| 2963 | 01:21:50.320 --> 01:21:57.360 |
| 2964 | to be much more successful than perhaps any of us |
| 2965 | thought except maybe Guido and his team. I think |
| 2966 | |
| 2967 | 01:21:57.360 --> 01:22:02.160 |
| 2968 | they always believed that this was the future. |
| 2969 | And of course, it's now one of the most popular, |
| 2970 | |
| 2971 | 01:22:02.160 --> 01:22:06.800 |
| 2972 | if not the most popular programming language |
| 2973 | in the world. He spent two weeks in Christmas, |
| 2974 | |
| 2975 | 01:22:06.800 --> 01:22:10.880 |
| 2976 | in like 1989, writing a programming language |
| 2977 | because he thought it would be fun. Like who |
| 2978 | |
| 2979 | 01:22:10.880 --> 01:22:16.640 |
| 2980 | would have imagined that that would be such a life |
| 2981 | altering and also world altering thing to have |
| 2982 | |
| 2983 | 01:22:16.640 --> 01:22:23.520 |
| 2984 | done. I think it's been great for the world. I |
| 2985 | think it's made people feel like they can get into |
| 2986 | |
| 2987 | 01:22:23.520 --> 01:22:28.320 |
| 2988 | programming when they never thought they could. |
| 2989 | I think it made programming accessible to people. |
| 2990 | |
| 2991 | 01:22:28.320 --> 01:22:36.640 |
| 2992 | It's literally part of kindergarten through grade |
| 2993 | 12 education around the world. And is on Mars |
| 2994 | |
| 2995 | 01:22:36.640 --> 01:22:41.760 |
| 2996 | thanks to being used as a scripting language to |
| 2997 | process the parachute of the Perseverance rover |
| 2998 | |
| 2999 | 01:22:41.760 --> 01:22:45.440 |
| 3000 | landing. Like it's hard to think of anything |
| 3001 | that hasn't been touched by some Python code |
| 3002 | |
| 3003 | 01:22:45.440 --> 01:22:52.000 |
| 3004 | somewhere. It's mind boggling. It's an important |
| 3005 | language. It's a popular language. It's a vibrant |
| 3006 | |
| 3007 | 01:22:52.000 --> 01:22:58.400 |
| 3008 | and relevant language today as much as it was in |
| 3009 | the past and I believe as much as it will be in |
| 3010 | |
| 3011 | 01:22:58.400 --> 01:23:03.520 |
| 3012 | the future. Programmers 30 years from now will |
| 3013 | be like, "Oh yeah, you know, I I'm still using |
| 3014 | |
| 3015 | 01:23:03.520 --> 01:23:09.760 |
| 3016 | Python." Just like today, people are still using |
| 3017 | Fortran and C and C++ and those are old languages |
| 3018 | |
| 3019 | 01:23:09.760 --> 01:23:35.080 |
| 3020 | you know too in the scheme of things. Scheme |
| 3021 | - Lisp another old language. So yeah. [Music] |
| 3022 | |
| 3023 | 01:23:35.080 --> 01:23:40.400 |
| 3024 | [Music] |
| 3025 | |
| 3026 | 01:23:40.400 --> 01:23:43.680 |
| 3027 | Now I keep thinking of like weird |
| 3028 | jokes. There's this library in |
| 3029 | |
| 3030 | 01:23:43.680 --> 01:23:49.920 |
| 3031 | Python called Pickles because pickle is a |
| 3032 | funny word I guess. The documentation used |
| 3033 | |
| 3034 | 01:23:49.920 --> 01:23:57.520 |
| 3035 | to have a footnote about how you should |
| 3036 | imagine Guido and Jim sniffing pickles. |
| 3037 | |
| 3038 | |