forked from SwiftGGTeam/swift-community-podcast-in-chinese
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEpisode1-Transcript.vtt
709 lines (475 loc) · 74.2 KB
/
Episode1-Transcript.vtt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
WEBVTT
NOTE
title: Swift Community Podcast Episode 1: Welcome to the show!
url: https://www.swiftcommunitypodcast.org/episodes/1
audio_url: http://static1.squarespace.com/static/5c3a400b96e76fd46e675eb0/t/5c3e7ae82b6a28d251e677c6/1547599053434/SwiftCommunityPodcast-Episode1.mp3/original/SwiftCommunityPodcast-Episode1.mp3
NOTE
This transcript has been generated by an automated transcription service and
manually edited for readability. It's not a verbatim transcription of every word
that was said. If you spot an error, please submit a pull request to the Swift
Community Podcast repo at https://github.com/SwiftCommunityPodcast/podcast.
Thank you!
00:00:00.540 --> 00:00:21.250
<v John Sundell>Welcome to the very first episode of the Swift Community Podcast, a show for the Swift community by the Swift Community. I am one of your hosts, John Sundell. And with me, I have two wonderful co-hosts, the first of which you might know as the host of the Swift Coders podcast, Mr. Garric Nahapetian. How's it going, Garric?
00:00:21.380 --> 00:00:24.270
<v Garric Nahapetian>Excellent. Thank you so much for having me. How are you doing?
00:00:24.460 --> 00:00:35.970
<v John Sundell>I'm doing great. And we also have our third and final co-host for this episode, and it's none other than the creator of Swift itself, Mr. Chris Lattner. How's it going, Chris?
00:00:35.980 --> 00:00:40.750
<v Chris Lattner>Doing great. I'm excited to be here, John. A little bit nervous, a little bit terrified, but that's okay.
00:00:40.890 --> 00:00:46.790
<v John Sundell>That's how it should be, right? A nice mix of butterflies in the stomach and excitement and all that stuff.
00:00:46.800 --> 00:00:47.430
<v Chris Lattner>It'll be great.
00:00:47.610 --> 00:01:12.280
<v John Sundell>So before we dive into this first episode, in which we want to talk a bit about both the show itself, why we're doing it and what makes it unique in terms of its concept, and we also want to take a look at the current state of Swift and how the community came to be. Let's just take a quick moment to kind of introduce ourselves a little bit to the audience. Garric, why don't you kick things off and tell us a little bit about what you're up to these days?
00:01:12.280 --> 00:01:41.050
<v Garric Nahapetian>Hello, Swift community. My name's Garric Nahapetian. I am an iOS engineer at Tinder. I'm the founder and host of the Swift Coders podcast. We've been on a little bit of a hiatus. I've been waiting to record this episode, and so I'm really happy I'm finally doing it. I feel like podcasting again. Yay! And I'm also the founder of the Swift Coders community. We do Learn Swift {CITY}, we have a Swift Coders Slack team,
00:01:41.640 --> 00:01:58.580
<v Garric Nahapetian>and we have a Swift Coders network of podcasts. The biggest thing that we do is our Learn Swift {CITY} effort, where we have about 15 or 16 Learn Swift meetups all around the world. So my biggest contribution these days is through
00:01:59.230 --> 00:02:05.598
<v Garric Nahapetian>the outside world, like actually meeting in real life and helping people learn about Swift and start meetups around the world.
00:02:05.698 --> 00:02:14.008
<v John Sundell>That's really cool. How do you feel about Swift as a first language? Is it a good language to teach for you? And is it easy to get people started?
00:02:14.018 --> 00:02:46.818
<v Garric Nahapetian>It is definitely the best language to get started. I think I am an iOS engineer because of Swift. I tried learning Objective-C, but Swift made it so much easier. So yeah, I think it's a great way to get started. We could talk more about that if it comes up, but really, one of the big things I would say in some other parts of the world is the cost of the Mac and how most people want to make iPhone apps right now. But a Mac is really expensive, so that that's a big barrier. But we're trying to help people get into it. It being open source, that's really important.
00:02:47.008 --> 00:02:59.918
<v John Sundell>Yeah, that's really cool. And the open source part was a big thing for you, Chris, wasn't it? So, what have you been up to since the doors opened and and Swift was released into the world?
00:03:00.128 --> 00:03:09.418
<v Chris Lattner>I wear lots of different hats. I've contributed to the Swift compiler quite a bit. I'm on the Swift Core Team. I have pushed and cared about Swift for a long time,
00:03:10.478 --> 00:03:18.018
<v Chris Lattner>now kind of in a different role. And I still care a tremendous amount about the community, and I really want to know what I can do to help.
00:03:19.438 --> 00:03:27.948
<v Chris Lattner>This show I think is a really big piece of that. I think it's a really great way to reach people in a different way, and we could talk about how the show came to be in a bit.
00:03:28.468 --> 00:03:40.048
<v Chris Lattner>For me, this is fully a spare time project. I'm not here in any official capacity for my employer or anything like that. I just care a lot about the community and want to see it grow and do cool new things.
00:03:40.108 --> 00:04:03.938
<v John Sundell>That's awesome. The community in general, I mean, that's why we all three got together and got to know each other. And I think that's something that really sets Swift apart. I mean, obviously, a lot of programming languages have really strong communities as well. But that's something that I personally really like about Swift and what makes me even more excited about it than I was about something like Objective-C.
00:04:04.107 --> 00:04:20.117
<v John Sundell>I always saw Objective-C as just the means to an end, a way to build apps. But it was never something that I was intimately involved with in terms of the language itself. And that's just something that excites me a lot, the community around Swift and how people can contribute to it in many different ways.
00:04:20.127 --> 00:04:45.867
<v Chris Lattner>Yeah, I very much agree. And while things are good, they could be so much better too, right? And that's one of the things I hope that this podcasts helps with, help grow the community and help build out new things. There's a tremendous number of packages that should exist that don't, and lots of different ways to get people involved in different ways that are not even coding. I'm really excited about that. The sky's the limit.
00:04:46.107 --> 00:04:48.357
<v John Sundell>Yeah, absolutely. That's supercool.
00:04:48.487 --> 00:05:03.097
<v Garric Nahapetian>Yes. I completely agree about the Swift community. I think the fact that Swift is so accessible allowed me to be an iOS engineer. But also because it's so accessible it reaches so many more people, and the community is that much more
00:05:03.207 --> 00:05:12.997
<v Garric Nahapetian>inclusive. And that allowed me to be a part of it and to learn. Because I was able to see so many free resources and meet so many people and it was so welcoming.
00:05:13.617 --> 00:05:18.597
<v Garric Nahapetian>So the community aspect of Swift is really a bedrock.
00:05:19.187 --> 00:05:22.297
<v Garric Nahapetian>And you were a big part of that, John, actually. A lot of the work you did
00:05:22.887 --> 00:05:24.787
<v Garric Nahapetian>early on when I was just getting started
00:05:25.417 --> 00:05:33.197
<v Garric Nahapetian>made me very excited about the possibilities. You were a big part of my learning and my excitement,
00:05:33.857 --> 00:05:38.497
<v Garric Nahapetian>so I wanted to thank you for that. How about you? What are you up to? What have you been doing lately?
00:05:38.887 --> 00:06:21.864
<v John Sundell>First of all, that's super cool to hear. It's always incredible for me to hear that my work can have an impact on people and help them learn something new, or discover some new technique or something like that. And that's really what drives me these days. I'm right now making a big transition from being a freelancer, working with clients all the time and building apps and writing code all the time, to creating content for the community. So I run swiftbysundell.com, which is a weekly series of articles about Swift. I've also started doing a different article series: I just launched an initiative called Swift by Sundell Basics, which is
00:06:22.454 --> 00:06:52.904
<v John Sundell>aiming to teach some of the more core concepts of Swift and iOS development in more of a lightweight manner. And I also run a podcast as well and do a bunch of other things for the community. So yeah, the community is incredibly important to me, and I'm trying to devote more and more time to doing things for the community while of course still staying very connected with coding. Because I do love programming a lot and I'm still building apps and I'm still working on projects and doing those kinds of things.
00:06:53.594 --> 00:07:10.004
<v John Sundell>I'm trying to make it this nice circle where the work I do building apps and coding can then feed into my content creation. And then the feedback I get from people in the community can then feed back into that. So yeah, it's really, really nice to create this feedback loop.
00:07:10.194 --> 00:07:16.554
<v Chris Lattner>Yeah. And I have to say that not not only do I love that you're doing it, but the work you do is super high quality and really impressive.
00:07:16.594 --> 00:07:17.524
<v John Sundell>Thanks a lot, Chris.
00:07:17.534 --> 00:08:01.724
<v Garric Nahapetian>I think that's why it was a no-brainer to get you involved and try to encourage you and coax you into being the first main producer of this podcast. Because you are a really big part of the Swift community. I think a lot of people look to you and the work that you're doing. So I think when Chris and I were talking about doing this podcast it made sense to bring you on, because I think one of the most important things as a community is to empower people like you, encourage people like you, support you so that you can continue to do what you're doing in a sustainable way, and we definitely want to help you keep going.
00:08:02.064 --> 00:08:55.929
<v John Sundell>That's super cool. And for me also, to get more people involved, as well, and also to show that, you know, when you look at someone who is running something that has a big following or a big audience, it's easy to look at that and think it was always that way, right? Like, objc.io was always this big site or NSHipster or any of these really big sites. And for me, it's very important to always emphasize that, you know, just a couple of years ago, like one or two years ago, almost no one knew who I was. And no one was reading my articles. I didn't even have any articles. So you know, things like that can happen pretty fast. And even though you might not be in it have a big audience or whatever, just creating content for the community can be really, really great even if you are starting out from scratch today. Because you can really create something of value even though you haven't done so before.
00:08:56.059 --> 00:09:20.649
<v Chris Lattner>Yeah. I think that one of the interesting things about creating new things is that, at least in my experience, the persistence part of it is maybe the most important piece. I mean, if you have persistence and you keep at it and keep trying to make it better and better and better, then it doesn't matter if it starts out as a really amazing perfect thing, if it just keeps improving. And if you stick with it, eventually it'll become really great. And everybody learns and everybody starts somewhere.
00:09:20.839 --> 00:09:22.099
<v John Sundell>Yeah, absolutely.
00:09:22.639 --> 00:09:46.529
<v John Sundell>So I'm incredibly excited about doing this together with you and with the rest of the community as well. So you kind of came to me, both of you, and you had the idea for this show. So why don't you tell the audience a little bit about this, Garric? Why don't you start and tell us a little bit about the idea that you had for this show. How Chris got involved, how I got involved and why we're now talking to everyone here on the show.
00:09:46.669 --> 00:10:01.409
<v Garric Nahapetian>So dub-dub [WWDC] 2018. I've been doing the Swift Coders podcast for maybe two years at that point, like 80 episodes. I had been doing my Learn Swift L.A. stuffs with Coders L.A.
00:10:01.969 --> 00:10:19.454
<v Garric Nahapetian>and had just joined Tinder about six months [ago], had been working there, and I think all that work, you know, for those that don't know my background, I was a lawyer. Then I quit. I drove Uber, taught myself programming, you know, two years later I'm working as an iOS engineer at Tinder. But that buildup
00:10:20.044 --> 00:10:33.154
<v Garric Nahapetian>really took a lot out of me. I almost don't really understand how I was able to do that. It's almost like I woke up and it was like, it happened. And so dub-dub 2018, I hadn't really been doing the podcast this much, have been kind of feeling down
00:10:34.044 --> 00:11:03.154
<v Garric Nahapetian>and actually not as inspired. The year before, I think it was my first dub-dub, it was so inspiring. And then I'm back there, the same place, in San Jose, not feeling as inspired. It was this different energy and I had to just feel into that energy and just go into it. And it was really interesting, what happened when I did that. I ended up having really interesting conversations with two people in particular. One was with Jesse Squires. He and I sat and had lunch together, and I was just telling him about my feelings, and
00:11:03.694 --> 00:11:17.754
<v Garric Nahapetian>we kind of just shared, and it was really encouraging to have him listen to me and give me his thoughts. And then the other person was Chris. So Chris was participating in the try! Swift San Jose open source meetup on the Friday of dub-dub.
00:11:18.314 --> 00:11:49.954
<v Garric Nahapetian>And I think it was lunchtime and Chris and I saw each other, and we're like, let's go eat. So we're having lunch together. And Chris and I had connected before. I had interviewed him. I think we had a couple of conversations and I had interviewed him for my podcast. But this was the first time he and I had really interacted like that before. I never took a walk with him. So we walk from the venue to dub-dub, we have lunch, and I get into the same details with Chris because he's checking in with me. "How's it a going, what's going on? I notice you haven't been doing the podcast as much." And I just start telling him.
00:11:50.514 --> 00:11:59.954
<v Garric Nahapetian>And we talk about different ways to get inspiration. Maybe you keep doing it, or maybe you do it differently, and maybe you don't do it. And that was really great.
00:12:00.594 --> 00:12:09.961
<v Garric Nahapetian>And then some time goes by and he emails me. So we reconnect over email. And he had this idea, like, "Hey, what if we did a show like this?" And I was like, "hmmm."
00:12:11.051 --> 00:12:25.461
<v Garric Nahapetian>And I could kind of sense, maybe he was wanting to exercise his podcasting talents, and I was like, "Well, that sounds cool. Would you want to do it together?" And he was like, "Yeah, that could be cool." So over the course of this summer,
00:12:26.151 --> 00:13:24.821
<v Garric Nahapetian>we were planning it together. But by the time it was ready to go and we were going to push the button to actually start recording, he could sense in me that I really wasn't fully there. And it was true. And I was so glad to have that same honest conversation with him again. And I said, "Yeah, you know what? I really do want to do this, but I don't know if I can put all of it on my shoulders." And he said, "You know what? This is a community podcast. So what do you think about reaching out to more people in the community and seeing if we can get someone else to help?" And I said that would be a great idea. And in that moment, I was relieved, but also scared. I was coming from a place of abundance, but also scarcity. Like, I was relieved, but scared because I kind of wanted it to be just me and Chris, you know? But then when he mentioned you [John], it just made total sense. And then we brought you in. And us three, we started just talking, and it just made so much sense, and it just felt so much more inspired.
00:13:24.981 --> 00:13:45.401
<v Chris Lattner>I felt like pulling John in and was really fantastic, because John's perspective really crystallized the show. And you know, it should not be one or two or three people. It should be anybody who wants to get involved in any different kind of way. And if there's anybody else who wants to produce a show, then they should be able to. And this is about and for and by the community.
00:13:45.631 --> 00:13:58.911
<v John Sundell>Yeah, absolutely. The way I look at this, when you got me involved and you asked if I wanted to be part of this, I was of course really excited about that because I love podcasting. And even though I'm already doing two different shows, why not add a third?
00:13:59.461 --> 00:14:32.367
<v John Sundell>But the thing that we all agreed on was, this is not any one of us's individual show, and we won't necessarily be on all the episodes even. We'll help bootstrap it. You look at this as kind of the initial commit of the repository, and then whoever contributes and helps out, who wants to be on the show, who wants to help out with things like editing or putting things together, or is coming up with topics to talk about, all of this stuff is very much up to the community and we're actively looking for people to get involved.
00:14:32.357 --> 00:14:46.767
<v Garric Nahapetian>Yeah, I'm really inspired by what Jesse Squires has done with the Swift Weekly Brief. And now Bas is taking over. And so I feel like somehow using that model but for a podcast could be really powerful.
00:14:47.257 --> 00:15:13.397
<v Chris Lattner>And if you look at big, successful things across the world, the ones that really work in the long term are the ones that can scale, right? And you can't scale if everything is dependent on one person. And so the more you can pull people in, the more you can take advantage of different people's skill sets and abilities and interests and time, and all the things that go into making something real, the better. And so the Swift community has so many different kinds of backgrounds and perspectives.
00:15:14.437 --> 00:15:15.697
<v Chris Lattner>I think everybody has something to add.
00:15:15.887 --> 00:15:45.157
<v John Sundell>Yeah, absolutely. And so many people have so many hidden talents, right? Like, when you talk to people at a conference or something, it comes up, "yeah, I used to be an audio engineer," or "I used to do writing for a living" or something like that. And all those kind of extra skills that people have can definitely help building something like this. Podcasting is a lot of fun, but it also requires a lot of different parts. And this is something that we definitely want everyone who wants to, to help out with.
00:15:45.277 --> 00:16:06.777
<v Chris Lattner>Right. I think this show has a really great potential because we all see it as a variety show with no fixed format. We could do short episodes or long episodes. We could have one person, lots of people. There's lots of different things that could happen. So I think everybody out there should tell us and get involved and and help shape it and make it into something great.
00:16:06.867 --> 00:16:39.531
<v John Sundell>Yeah, totally. And we'll talk a little bit later at the end of this episode exactly how you can get involved, what kind of formats and where you can find things, and resources on how to get involved. But for now, I think we should get started with our main topic for this episode. So for our main topic for this first episode, we want to take things back to the origins of Swift itself and talk a little bit about how the community came to be and how Swift came to be.
00:16:40.061 --> 00:16:59.071
<v John Sundell>And of course, this all starts a couple of years ago back at Apple, when you, Chris, started writing the actual code for the compiler. Or perhaps it even started before then. So why don't you take us back a little bit in time to that moment and tell us a little about how Swift was born to begin with?
00:16:59.141 --> 00:17:35.401
<v Chris Lattner>Sure. So I think I have to go back in time to, it was right around WWDC 2010. We just launched C++ support in Clang and that was a huge, huge, huge amount of effort, as you can imagine, building a C++ compiler, for tons of people. And I was feeling both very happy about that, but also kind of burnt out a little bit because it was a lot of really nitty-gritty work that was very focused on implementing C++. And you can't implement C++ without thinking, "gosh, there should be a better thing out there!"
00:17:36.671 --> 00:17:42.171
<v Chris Lattner>And so I actually got into a number of conversations with a guy named Bertrand Serlet.
00:17:42.911 --> 00:17:50.501
<v Chris Lattner>Bertrand was the head of the software team at the time, and Bertrand is an exceptional engineer. He's an amazing human.
00:17:51.521 --> 00:18:06.941
<v Chris Lattner>He's also a bit of a language geek. And so he had been pushing on Objective-C, to make Objective-C better. And he always wanted more out of Objective-C and to make it better and better and better. And he and I got into a number of one on one whiteboard sessions.
00:18:08.401 --> 00:18:13.441
<v Chris Lattner>Bertrand ran all of software at Apple, and so he had no time.
00:18:13.441 --> 00:18:14.251
<v John Sundell>Kind of a busy guy.
00:18:14.421 --> 00:18:21.952
<v Chris Lattner>Yeah. But he always encouraged me to drop by at the end of the day and try to see if he's available. And he'd stay late, and we would geek out on the whiteboard.
00:18:22.512 --> 00:18:46.962
<v Chris Lattner>We talked about a ton of different things. Like the goals, weird details like the type system, and we eventually turned it into a pitch deck. And so I built the pitch deck for him and came up with this idea of building a new language. And at the time it was codenamed "Shiny", as though "you're building a shiny new thing." I was also a fan of the Firefly TV show.
00:18:47.012 --> 00:18:50.622
<v John Sundell>Right. Was the file extension ".shiny"?
00:18:51.122 --> 00:19:06.382
<v Chris Lattner>Yes, in fact, it was. You know, at the time, it was super tiny. It was really just Bertrand and I kind of talking about it. Another really awesome engineer named Dave Zarzycki got involved in some of that early conceptual discussion.
00:19:07.042 --> 00:19:22.892
<v Chris Lattner>But one of the things that came out of it even really early on was that we started talking about memory management. At the time, we were both convinced that there had to be a good way to solve or improve memory management and we needed to get to memory safety. So you have to have automatic memory management.
00:19:24.042 --> 00:19:53.922
<v Chris Lattner>One of the key things that came out of that was ARC and the idea that we could have the compiler own and drive this instead of having a runtime. Objective-C had this libauto garbage collector at the time, but it had a number of problems. And so that was kind of the genesis of Swift internal design discussions and that kind of stuff turning into Objective-C features. And many of the things that came out, including ARC and modules and even literals and things like that, really came from the behind the scenes development of Swift.
00:19:54.172 --> 00:20:09.432
<v John Sundell>So there was a bunch of features that you had in mind for Shiny and what would later become Swift. But you said, we don't wanna wait until we have a brand-new language completely implemented. Let's go ahead and take those features that we really, really want and just add those to Objective-C.
00:20:09.502 --> 00:20:34.280
<v Chris Lattner>And if you think about it from a different perspective, Swift may seem obvious now, but at the time it was not obvious at all to anybody and even me. I mean, Bertrand was really great, and is still really great, because he's always super encouraging. And he always pushed through the doubts. Bertrand's a bit of a scientist. He just wants to find truth in many ways.
00:20:34.970 --> 00:21:01.920
<v Chris Lattner>So yeah, there's tons of uncertainty, but at the same time, there's lots of good ideas. And so he and others were pushing to say, okay, it's part of the ideation behind building a new language, you always have to ask the question of "why not make the existing thing better?" And so the answer was, "yes, we should make the existing thing better, clearly," and so ARC and all the other things that came out of that happened.
00:21:02.480 --> 00:21:28.380
<v Chris Lattner>But in the case of Swift it became memory safety. And you can't retrofit memory safety into Objective-C without removing the C. And if you remove the C you just lose too much and it becomes not Objective-C anymore.
00:21:17.420 --> 00:21:30.580
<v Garric Nahapetian>Right. So was it somewhat like a Trojan horse to add those Swift features to Objective-C, which kind of made it easier to then convince people about Swift later, as you'd already done the Objective-C work?
00:21:31.010 --> 00:21:55.360
<v Chris Lattner>Interesting internal dynamics. I guess we were very focused on making Objective-C and the platform better. In terms of the Swift development, it was a way of de-risking in a sense, because if you say, "we're gonna roll out everything all at once", and none of it is tested then it's hugely risky. But if you roll out minor things like a whole new memory management system
00:21:55.880 --> 00:22:16.890
<v Chris Lattner>separately, and then you iterate, debug and develop that with the community and work it out, then it takes a certain amount of risk away. But I would say that both the external and internal community at Apple was kind of saying like, "why are you prioritizing this? It feels like we're kind of on a random walk. And why? Why are you doing this and not this other thing?" And so there was an interesting dynamic with that.
00:22:17.110 --> 00:22:49.015
<v Garric Nahapetian>Can you talk just briefly about like what community aspects at that time made something like Swift possible? You mentioned Bertrand, and you mentioned another gentleman's name I can't remember. But you know, there has to be some nugget of community.
00:22:35.335 --> 00:22:40.995
<v Garric Nahapetian>Because the Swift community is so strong right now, there has to be, I feel like, some nugget of community that was available at Apple or wherever you were at that time with those people that made Swift possible.
00:22:49.115 --> 00:23:21.715
<v Chris Lattner>Apple has a really strong engineering team. And so there's a ton of people at the time, they're all writing Objective-C, that are highly opinionated about things, but also have a huge depth and background in building frameworks and apps and all these kinds of things. And so there were a lot of ideas on how to make Objective-C better. There were big white papers written by luminaries that had been working since the NeXT day on this kind of stuff. And so there was a tremendous internal community that drove that.
00:23:22.475 --> 00:23:31.535
<v Chris Lattner>At the time, Bertrand and Dave and I talked about ideas and I started coding a prototype of the compiler.
00:23:32.785 --> 00:24:09.235
<v Chris Lattner>But obviously, I could not build everything myself. And so what ended up happening is around April 2011 we discussed it with management and then got agreement to pull in a few more people. This is when folks like Ted Kremenek and Doug Gregor and John McCall, and a bunch of other exceptional engineers over time, got pulled in. And looking back on that, it was really interesting because this was the first time that other language and design experts were
00:24:09.925 --> 00:24:30.245
<v Chris Lattner>taking a critical look at this. And they had a lot of really harsh feedback. And it wasn't intended as harsh. But they were right. It was terrible at the time. And the ability to have one of the world's experts on generics pulled into this and have a culture where
00:24:31.082 --> 00:24:50.062
<v Chris Lattner>the team that had built the Clang compiler and had been working together for years on many different, really interesting projects. And so being able to draw on that engineering talent was critical to making everything happen. And these are just a few of the people that helped drive and build that. But it was a big deal.
00:24:50.222 --> 00:25:04.802
<v John Sundell>I can imagine. What was the state of the language at that point? Like, what did the syntax look like? What part of the compiler infrastructure was there? Was it all very much in the prototype phase or had you gotten a little bit further along at that point?
00:25:04.802 --> 00:25:06.512
<v Chris Lattner>It was very much in the prototype phase.
00:25:07.332 --> 00:25:12.492
<v Chris Lattner>This is all public because the revision history is all public.
00:25:13.892 --> 00:25:18.202
<v Chris Lattner>You can git log. There's a changelog that goes not all the way back, but quite a ways back.
00:25:18.902 --> 00:25:28.402
<v Chris Lattner>So before Doug got involved, there was no generics system. We wanted the generics system, but I don't have the expertise to design it myself. And Doug is the guy.
00:25:28.982 --> 00:25:37.002
<v Chris Lattner>John, I remember very early on, took over making actually generate code instead of just being a parser. That was a major piece that he took on.
00:25:37.552 --> 00:25:48.112
<v Chris Lattner>There were tons of missing pieces, but there are also pieces that go all the way back. I think var and func go all the way back to the beginning. Some of the basic syntax ideas are very, very similar.
00:25:48.992 --> 00:26:09.642
<v Chris Lattner>So it was very much a prototype. But a lot of the ideas, as I explain to people, when building a new thing often the ideas are ahead of the documentation and sometimes the documentation is ahead of the code. It was very much like that. And the ideas are so way ahead of the code right now, incidentally.
00:26:10.672 --> 00:26:18.672
<v Chris Lattner>Another different part of the community that was really important was a guy named Craig Federighi.
00:26:20.002 --> 00:26:29.122
<v Chris Lattner>Craig is, I think, well known in the Apple community. He became involved in the project some time early 2011.
00:26:29.842 --> 00:26:33.669
<v Chris Lattner>That was right around when Bertrand retired from Apple and Craig took over his job.
00:26:34.479 --> 00:26:55.899
<v Chris Lattner>Now, Craig is a really, really interesting person. He is super charismatic, both on stage, but also in person and in one-on-ones. But the thing that I think a lot of people don't understand is that Craig is just ridiculously smart. And he is super deep on so many topics. And I didn't expect this,
00:26:57.009 --> 00:27:18.689
<v Chris Lattner>but he knows a lot about languages. In former roles, he's worked with Groovy and lots of other kinds of languages and things that I had not come in contact with. And he's not just the high-level guy who cares about strategy. He also cares about a ton of things like closure syntax, keywords, all that kind of stuff. And Craig really was
00:27:19.509 --> 00:27:46.619
<v Chris Lattner>the hard, hard driver and the advocate for making it real and making it relevant to Objective-C and caring about Objective-C development and caring about the APIs and caring about what the APIs imported into Swift look like, and all that kind of stuff. And Craig, in addition to giving great feedback, just kept and keeps an exceptionally high bar on the team and the project. And he really helped shape a lot of what Swift was today.
00:27:46.809 --> 00:27:52.969
<v Garric Nahapetian>It's pretty cool because he was the one that first announced it on stage at dub-dub.
00:27:53.029 --> 00:27:53.449
<v Chris Lattner>Yes.
00:27:53.609 --> 00:27:55.229
<v John Sundell>And then he brought you out, right?
00:27:56.169 --> 00:27:59.409
<v John Sundell>That was the classic line: the "Objective-C without the C."
00:27:59.669 --> 00:28:05.629
<v Chris Lattner>Which honestly I have mixed feelings about, because that's really not what it's about.
00:28:02.789 --> 00:28:05.629
<v John Sundell>It's a good tagline.
00:28:05.639 --> 00:28:07.939
<v Chris Lattner>It was the right thing to say to the community at the time.
00:28:08.329 --> 00:28:27.619
<v John Sundell>Yeah. I mean, it was. Because I was actually in the audience there and I was watching the keynote. And that phrase, "Objective-C without the C," it kind of explained it in a way. Because the story was, we have all this cruft or legacy, if you will, because of
00:28:27.839 --> 00:28:47.178
<v John Sundell>Objective-C being a superset of C. And now we want a clean slate. So we still want what makes Objective-C good, the "objective" part, what we've added on to C. We want to keep those, the API conventions, the message passing, all the good stuff. But do it in a more modern way.
00:28:47.238 --> 00:29:26.998
<v Chris Lattner>Yeah, absolutely. The reason it is conflicting to me is that from the beginning of the project, my goal was to build a full-stack system. It was to look at all the existing systems out there, see what's good or bad about each of them, and then cherry-pick the best ideas from systems wherever they come from. And the goal was really to build something that you could write firmware in or that you could do scripting in, that could write mobile apps or server apps or low-level systems code, and have it be great at all of those, not just some terrible compromise. And so that positioning was absolutely the right thing to do.
00:29:27.718 --> 00:29:35.298
<v Chris Lattner>But hopefully, Swift will grow over time in kinds of what it is able to do.
00:29:35.538 --> 00:29:44.938
<v Garric Nahapetian>I was sitting at home watching. I wasn't at dub-dub. I was still just an outside observer. And when it was announced, I had no idea what it meant.
00:29:45.528 --> 00:29:54.628
<v Garric Nahapetian>All I knew is that people were excited. And people were also unsure about what it was like, I guess. Or they were questioning.
00:29:54.848 --> 00:29:57.778
<v John Sundell>It was excitement mixed with anxiety, right?
00:29:57.838 --> 00:30:32.178
<v Garric Nahapetian>And I just remember not knowing what it meant. All I really knew is that it was a new and shiny. And I wanted to just look into it and learn about it. And so I remember trying to listen to every podcast I could get my hands on, or every article, to try to understand what it meant. Ultimately, what it meant for me, and I only discovered this maybe six months later, was that it was going to be more accessible for me. It was going to enable me to give myself another shot at making an iPhone app.
00:30:32.658 --> 00:31:09.181
<v Chris Lattner>That's a perfect segue into the last group I want to talk about. Because, you look at what Swift is and sure, it's a compiler, it's a language spec, it's a set of APIs, it's an IDE. But the thing that makes it real and the thing that reached so many people is the work done by the Developer Publication Group. These are the tech writers at Apple that wrote things such as the Swift Programming Language book. And the success and the rapid adoption of Swift is in huge part directly related to
00:31:10.071 --> 00:31:18.041
<v Chris Lattner>such high quality good documentation and a book being available on day one. And it's continued to be maintained today, and it's amazing.
00:31:18.571 --> 00:31:34.451
<v Chris Lattner>And part of that was that we pulled the tech writers right into the design meetings. Folks like Tim Isted and Brian Lanier, Alex Martini spent a tremendous amount of time in weekly meetings where we were arguing about, "do we use
00:31:35.271 --> 00:31:53.731
<v Chris Lattner>dot versus colon?" Or "do we use this keyword versus that keyword?" Or "should we change func to def?" But also [about] the depths of the type system and how do the codegen algorithms work? And how do we get good performance? And how does String work? And all the different pieces that go into it.
00:31:55.071 --> 00:31:59.921
<v Chris Lattner>And to me, again, in terms of how you make something happen.
00:32:00.671 --> 00:32:11.711
<v Chris Lattner>Not only were they there so they could absorb, but they contributed a ton and they were one of the strongest advocates for, you know, if you can't explain something, it isn't good, right?
00:32:12.381 --> 00:32:28.831
<v Chris Lattner>I've seen so many systems where you build a thing and then you try to explain it afterwards. And when you go to explain it and it's really awkward and you're like, "wow, I have to explain the workarounds for this thing." If you can close that feedback loop and include the documentation, include the
00:32:29.941 --> 00:32:34.551
<v Chris Lattner>explaining-it-to-people part of this into the design process, you get something that's so much better.
00:32:34.701 --> 00:33:34.386
<v John Sundell>Absolutely. It's kind like, when you make a product or something, you want to have that good elevator pitch. Or you want to have the reason why you're doing it. And the same goes for tech decisions. To your point, if you're going to build something, whether that's an API, a language or whatever you're designing, or a framework, it needs to have that easy way of explaining something, easy way to get into it. And I completely agree that the documentation and the book that came out and also the websites, where you could go and get the language reference, was extremely high quality. And it enabled people like myself who knew iOS, had been doing iOS apps for a couple of years and were familiar with Objective-C and all the APIs, could dive in and start understanding those new concepts that we weren't used to. like generics, for example, or type inference. And understand those things in a very nice way, in a gradual way where one thing was building on another thing.
00:33:34.676 --> 00:33:38.786
<v Chris Lattner>Right. And and this is one of the reasons why I'm so impressed with your work, John.
00:33:39.326 --> 00:34:06.216
<v Chris Lattner>Because I can sympathize with an individual person at a time, and I can figure out where they're coming from and figure out the right way to explain it to the one person. But taking something and explaining it to a mass of people is just its own incredible design process that is so challenging and that I have a tremendous amount of respect for because I'm really bad at it. It's a superpower and not very many people have that.
00:34:06.876 --> 00:34:39.966
<v John Sundell>Like with everything, I think it's good to start out, if you want to learn the skill or if you want to improve it, I think the way to do it usually is to start out simple. If you look at my first article that I wrote, it was incredibly simple. It just had a couple of paragraphs and a couple code samples. And also, one key point that told myself from the beginning was, I always want to use real live, concrete examples that people can relate to. And not use foo and bar or a, b, c for variable names.
00:34:40.516 --> 00:34:57.718
<v John Sundell>Just like how you brought in the writers, in the meetings and they were there from the beginning, setting some good principles that you think yield a good result, but then just starting out very, very simple and learning on the job. Because there's only one way to acquire most skills, and that's just to do it, right?
00:34:57.908 --> 00:35:33.938
<v Chris Lattner>Absolutely. I mean, this is the kind of thing where a lot of people say, "oh, Chris invented Swift." And well, there's a truth to that, I have pushed it over many years in many different ways and kind of shepherded the project. But it misses the fact that there's hundreds of people involved in so many critical ways. Building the debugger, building the IDE, building Playgrounds, building educational content within it, building all this stuff, building the community aspect of it. There's so many different pieces of this that far transcend me and it very much is
00:35:34.738 --> 00:35:47.238
<v Chris Lattner>a community of people both inside Apple, but outside Apple, that are all pushing together and building things and contributing in their own ways. And that is why Swift is where it is. And that is why I see it growing.
00:35:47.458 --> 00:35:53.838
<v Garric Nahapetian>And that's one of the reasons we want to have this podcast, to bring some of those people to light.
00:35:54.928 --> 00:36:18.668
<v Garric Nahapetian>Obviously, everyone probably knows about John or some people might know about me and a lot of people know about you, Chris. But there are people who make just the same amount of impact, but people don't know about them. And so hopefully over time through this podcast, we can have them on the show or bring them to light, hopefully maybe one day. People that work inside of Apple or people who are working in the open source community.
00:36:20.338 --> 00:36:28.038
<v Garric Nahapetian>And we can bring them on and let people know about them and just learn from them and share their stories to hopefully inspire and encourage other people.
00:36:28.278 --> 00:36:53.806
<v John Sundell>Totally. So Garric, you mentioned earlier that you were watching from home, you were watching the keynote at WWDC, you saw Swift being introduced. You started reading more about it and trying to get yourself a second chance to learn iOS development. So where did things go from there for you? How did you become a Swift developer in that sense? When was it that you first started really writing Swift code and using it?
00:36:53.966 --> 00:37:16.256
<v Garric Nahapetian>So Swift is announced, and I'm just trying to understand what it meant. But at that time, I was still working as a lawyer, I think. And that summer I started maybe driving Uber. And then I had an app idea, and I was working on this app idea with some other developers but all the while digesting all the WWDC videos. And I think maybe,
00:37:16.786 --> 00:37:23.756
<v Garric Nahapetian>I wasn't going to read that Swift book, because I didn't really know that much about programming. In fact, I knew nothing about programming. So that Swift book,
00:37:24.296 --> 00:37:51.256
<v Garric Nahapetian>I could have read it because that introduction part was actually very digestible. But as you pointed out, a, b and c in an array doesn't mean anything to me if I don't know why I would use an array. So I think what happened was, it took a few months for people like you, John, to digest the Swift book and produce content that's even more digestible. So building off the excellent work of the documentation writers at Apple
00:37:51.846 --> 00:38:10.856
<v Garric Nahapetian>and putting more digestible work out there, content for people like me. Plus Swift gaining more momentum, and then me starting to feel like, "well, I can actually maybe do this myself." Swift is so much more accessible. It just reads like English, really human-readable English.
00:38:11.446 --> 00:38:43.156
<v Garric Nahapetian>And so around January 2015, I decided I'm going to give it another shot. And so I started learning Swift, let's say an average of one hour a night I would just try to learn. I did a lot of Ray Wenderlich and whatever documentation, articles, editorials I could get my hands on. But ultimately what led me to become a bigger part of the community was feeling isolated and feeling alone,
00:38:43.716 --> 00:39:04.684
<v Garric Nahapetian>that I was the only person on Earth that was in my situation. That was doing one thing and wanted to do another thing. And I wanted to make an app and I wanted to learn Swift. And so I had too much coffee one morning, I was with my wife at her office, and I've been thinking about creating a meetup, and I just had too much coffee that morning and I just did it. I didn't think too much about it. I was just like, "I'm going to create a meetup."
00:39:05.434 --> 00:39:19.884
<v Garric Nahapetian>And that was Learn Swift L.A. And it really just took off because there was so much excitement around Swift. Because of that community, you know, and just all the excitement around it. So really took off. And there were more people like me.
00:39:20.674 --> 00:39:37.284
<v Garric Nahapetian>And so I started teaching them, and they were teaching me, and it really allowed me to become a leader in L.A. And I remember offline, John, you and I were talking about finding energy and creating inspiration and all that, and that was a really big part of that.
00:39:37.984 --> 00:39:54.794
<v Garric Nahapetian>This meet up produced so much positive inspiration and energy for me personally. It pushed me. That's what allowed me to shoot so far so fast and then wake up two years later and I'm an iOS engineer at Tinder. It was a big part, that community aspect of the meetup.
00:39:55.214 --> 00:40:03.164
<v Chris Lattner>And what about you, John? What was it like being in the audience and having this very big bomb dropped on you all at once without expecting it.
00:40:03.774 --> 00:40:56.678
<v John Sundell>So, I was incredibly excited. I had come from a background of doing C# and doing JavaScript. So I had both of those languages in the back of my mind as I was learning Objective-C. So I really loved Objective-C, mostly because of the APIs and because of Cocoa and things like that. But, I definitely was ready for a more modern take on those philosophies. So when that bomb was dropped, I literally ran down to this area in WWDC in Moscone at the time where they had these Ethernet cables where you could actually connect your computer to download XCode, the Xcode-Beta because you couldn't do it over WiFi. So I ran down. I installed a new version of XCode and I started opening up a playground. So that was my very first impression of writing Swift code.
00:40:57.268 --> 00:41:12.378
<v John Sundell>And at the time, playgrounds they weren't super stable. I'll admit that. There was a lot of fighting with them to get them working, but once they got working, I had a lot of fun. I was writing lots of different code, and
00:41:12.918 --> 00:41:32.318
<v John Sundell>at the time I was working for Spotify. So by the time I came back from the U.S. I came back to Sweden and I was at work, I actually built together with a couple of co-workers, we built a prototype feature inside of the Spotify app using Swift. And that was a really great learning experience for me, because that let me compare it
00:41:32.828 --> 00:42:03.058
<v John Sundell>to Objective-C, in many ways. How it interacts with Objective-C APIs and also just to see the differences and what it was like building something real in Swift. And that was back in Swift 1. And then I've been following it ever since. And once I made a decision to leave Spotify and become a freelancer, I knew that I wanted to focus one hundred percent on Swift, and that led to the whole involving myself more with the community with open source and content creation, these kind of things. But it all
00:42:04.008 --> 00:42:15.288
<v John Sundell>came from that moment of realizing that this is a really cool language and that it felt so much nicer to write than Objective-C did, even though I did like Objective-C a lot too.
00:42:15.438 --> 00:42:23.788
<v Chris Lattner>Yeah, and I think one of the things that's fascinating about this is that as people will quickly find out the two of you have written far more Swift code than I have.
00:42:24.658 --> 00:42:35.698
<v Chris Lattner>Right. And so I know a lot about the insides and the how and why and how it fits together and things like that, but you guys have the actual experience of building and using it in production.
00:42:35.708 --> 00:42:45.778
<v John Sundell>Yeah, that's always kind of funny when you look at it. There's this bunch of people working on Swift, working on the compiler and they're all writing C++ most of the time, right.
00:42:45.998 --> 00:42:59.535
<v John Sundell>Just a quick aside, what's that like? You have this cool language that you've designed and everyone else gets to use it, but you still have to use C++. What's that like?
00:42:59.855 --> 00:43:10.315
<v Chris Lattner>It kills me. It's terrible. It is the universe's trick on me to force me to keep writing C++.
00:43:11.685 --> 00:44:10.475
<v Chris Lattner>But I think that there's another aspect of that which goes untold. Which is, one of the major reasons that Swift is good right now is that there's a big community of people out there that were blogging about it, right? And so that feedback really shaped Swift 1 and 2. That was the feedback, the signal, all those complaints, people saying this doesn't make sense, I'm having this problem with this, that and the other thing. That really shaped and prioritized and drove a lot of what got built. There was a long arc of Swift 1 accidentally, well not accidentally, intentionally shipped without error handling. It shipped without protocol extensions, things that we absolutely wanted and just didn't fit with the schedule. So we knew we had to build those things, but a lot of what happened in that first year or two was directly driven by the community. And when Swift became open source, Swift evolution is a hugely great thing, and it's maybe not ideal in terms of optimizing for human time spent,
00:44:11.255 --> 00:44:15.185
<v Chris Lattner>but it is an essential part of what makes Swift really, really
00:44:15.705 --> 00:44:23.235
<v Chris Lattner>exceptional. And I think that is total credit to the community and the community of people that spend their time there and that help shape and drive it.
00:44:23.425 --> 00:45:14.780
<v John Sundell>Yeah, absolutely. One thing that comes to mind is how not only articles and content, but also open source, it feels like has fed a lot into Swift itself. For example, right now with things like Codable, that was one of the things that people were creating a thousand different JSON mapping libraries. I was one of them. I built Unbox because of that, because it was one of those things where in Objective-C you didn't think a lot about it a lot of the times. You just said, here's a dictionary, let me just access this key and I'm just gonna assume that's always a string. But once you sat down and wrote that same code in Swift, you realized, you needed to build a big pyramid of if lets. So I can only imagine that seeing those kind of things that people had to solve in many different ways must have also kind of fed into the design process.
00:45:14.950 --> 00:45:23.140
<v Chris Lattner>Yeah, absolutely. And the design of Codable came from a framework team at Apple that were outside of the core Swift group.
00:45:23.830 --> 00:45:31.160
<v Chris Lattner>They were really passionate about this, and they came up with this and drove it and advocated for it. And community can mean so many different things, right?
00:45:32.770 --> 00:46:06.940
<v Chris Lattner>And you look at Result. Why is Result now coming into Swift 5? Well, it's because so many people built it and did it over and over and over again. And while the core team is like we really don't want to have a Result because it's kind of a failing of the language and when we get concurrency it won't be as necessary. And the community says loud and clear, look, we need it. It doesn't matter if it's not ideal in the long term, we need it. And so, the community really does shape things. And it's maybe not understood how much the community does have that effect.
00:46:07.330 --> 00:46:22.590
<v John Sundell>So, speaking about that. Speaking about the release of Swift and the years that have passed since then, for you now looking at the current state of Swift and what it's become since you put it out there,
00:46:23.330 --> 00:46:35.180
<v John Sundell>has it matched your expectations, if you had any? How does it match the ideas that you had in the beginning now that it's been out for a couple of years?
00:46:35.300 --> 00:47:23.090
<v Chris Lattner>Well, so I guess expectations change over time. Back in 2010-2011, I had no expectation that it would ever turn into anything. And I admit that it was very much a fun side project. That it was a nights and weekends thing originally. That I have a day job, have a side project that's intellectually interesting and challenging. As it became more real then it launched into Swift 1, there was a question of can we capture the Objective-C community? Can we really capture the iOS ecosystem, for example, or are we going to fragment it? And that was a real concern. And so I'm really happy that today I think the vast majority of the community is happy with Swift. And while there's still tons of work to be done, it seems like it's very successful within that community.
00:47:23.850 --> 00:47:27.450
<v Chris Lattner>But there's a huge open frontier. Swift on the server still
00:47:28.510 --> 00:47:31.730
<v Chris Lattner>is making great progress, but there's still a ton of work to be done.
00:47:32.910 --> 00:47:53.910
<v Chris Lattner>There's other communities out there. I'm particularly fond of the numerics and machine learning communities, and they're super important to the world. And there's a ton of really interesting people in these communities, and I think Swift could be really great there. And, I jokingly say, Swift world domination is a goal, and it's a joking goal, but
00:47:54.430 --> 00:47:59.170
<v Chris Lattner>it's based on the belief that people who use Swift love it. And
00:48:00.560 --> 00:48:30.810
<v Chris Lattner>if that's the case, I'd love to bring that joy to more people and just really help improve the world. And so many of the systems out there are really unfortunate in various ways, right? People are still writing C. And just in terms of the bugs and security vulnerabilities and things like that, it's just really unfortunate. And there's ecosystem problems, there's other challenges that we have to overcome and that's something that we as a community can do. So I don't see any limits on that.
00:48:31.100 --> 00:48:41.620
<v Garric Nahapetian>I feel like that's what this podcast has a potential to do. I have my podcast, John has his, there's Swift Unwrapped, Fireside Swift, there's all these
00:48:42.210 --> 00:48:49.420
<v Garric Nahapetian>other podcast, but what I feel like we're all in agreeance is that we're hoping that this podcast can give voice
00:48:50.190 --> 00:49:34.414
<v Garric Nahapetian>to the Swift community. Also be an ear for the Swift community and also be another galvanizing point in addition to the forums. A lot of talk is on Twitter, the forums and the in person meet ups, but also, hopefully this podcast could be a galvanizing force to find out what do we need to do and what are the different goals and how can we help each other to achieve those? Not everybody is as familiar with having conversations on a forum. And for me, one of the unexpected things, was when I would talk to non-Swift developers, let's say, a JavaScript developer
00:49:35.044 --> 00:49:40.914
<v Garric Nahapetian>or whatever. You know, I love Swift. I'm so excited about it. When I would talk to them, they might brush it off
00:49:41.504 --> 00:49:44.534
<v Garric Nahapetian>and say, Oh, it's not going to be possible.
00:49:45.454 --> 00:50:04.214
<v Garric Nahapetian>But then, on the other side, I think, John, you mentioned this recently, the appetite for Swift is so insatiable, you're saying. And as you pointed out, Chris, people who love Swift really, really love it. And so somehow we can continue to do what we're doing to feed
00:50:05.574 --> 00:50:18.494
<v Garric Nahapetian>the community to keep growing but also, bring in these other communities, and make ourselves accessible to those communities so that, and maybe we should come up with a better phrase for it, that Swift can be a world dominating language.
00:50:18.774 --> 00:50:34.114
<v Chris Lattner>Well, and I think that a big piece of that is, while this has been a very upbeat, positive discussion about Swift, Swift also has lots of problems. And I think we need to be open to talking about that and treat that as a problem solving exercise, right? There are major issues with
00:50:34.804 --> 00:50:47.524
<v Chris Lattner>the Linux ecosystem, for example. The Windows ecosystem is barely, barely getting off the ground at this point. There's so many different things that really need to happen to get it to be relevant to the broader audience.
00:50:47.664 --> 00:52:09.789
<v John Sundell>Yeah, and it's super interesting when you speak to people who are getting into Swift but who are not Apple developers. Like, in the beginning and especially going back to something like Objective C, which was, pretty much only used by people building apps for the Mac and for iOS. But even in the early days of Swift or even the first couple of years you had, I don't know the numbers, but I would guess something like 90+ percent of people who were writing Swift code were doing it for Apple platforms. But now I'm more and more meeting people who are getting into Swift, learning it, and even working with Swift, but they're not Apple developers. They're using it for the server, and they're using for for other tasks. And that, I think, is both incredibly exciting to to have those people come into the community, but it also presents us with a bit of a challenge because, you know, just take myself, for example. When I'm writing, I'm writing a lot from the perspective of an iOS developer. And a lot of the problems that I'm writing about and I'm thinking about are coming from an iOS perspective. While the people coming from other server-side languages and using Swift in that environment, they're going to be facing other kinds of problems and have other priorities. And it's going to be interesting to see where those meet in the long run. And how do you balance things that are needed on something like Windows and Linux and for Apple's platforms as well.
00:52:09.799 --> 00:52:23.609
<v Chris Lattner>Right. And I think all of our goal is to build an inclusive community. But if you're not an Apple developer, it can feel alienating that every time you search for some Swift thing you end up in an iOS discussion.
00:52:24.039 --> 00:52:26.629
<v John Sundell>Yeah, exactly. "Here's how to do that in a UIViewController."
00:52:26.639 --> 00:52:36.249
<v Chris Lattner>Yeah, exactly. And so that makes you feel like an outsider and that can send the wrong signal. And nobody means for that I assume, but the effect is real.
00:52:37.069 --> 00:52:46.229
<v Chris Lattner>And that's a challenge that we as a community face. And I don't know that there are good, easy answers for any of these problems. But I think we can get there.
00:52:46.359 --> 00:53:14.815
<v John Sundell>Yeah, absolutely. And something that I think will play a big part in that is the open evolution design process. Where anyone can make a pitch, anyone can make their case for something. And we can get those other sides of the story and other sides of something heard. And so how has Swift Evolution from both of your perspectives been working so far? And where do you see it going within the next couple of years?
00:53:14.815 --> 00:53:18.885
<v Garric Nahapetian>I actually didn't participate that much on Swift Evolution.
00:53:19.405 --> 00:54:01.625
<v Garric Nahapetian>You know, there was the old style, the email [list], you had to sign up for some email thing. And it was a lot of emails going back and forth. And, you know, that's not really how I can contribute, I feel like. Or I wasn't inspired to really contribute in the evolution process. I mean, I would read a little bit about the proposals. I never really commented. But what I noticed early on and would always mention whenever it came up was, that is just one way to contribute, being involved in the evolution process, reading the proposals, creating proposals, commenting on them. And that was actually something that I thought was really awesome but also kind of confusing.
00:54:02.225 --> 00:54:24.785
<v Garric Nahapetian>Because most of what gets talked about online and in the community is like, "What are we doing with the language or how is the language evolving?" But there's a lot of stuff happening just in the background that is a part of the community. But it's not necessarily programming related. Like, when I'm doing a podcast about Swift,
00:54:25.515 --> 00:55:11.672
<v Garric Nahapetian>it's a part of the community, but I'm not talking about coding. And it was really weird to grapple with that. To feel like a part of the community, but "oh, am I actually contributing?" But that's something that I've been coming to terms with over the last year or so, that my contribution is my ability to be a leader in a community and bring people together and to help make the community more accessible. So yeah, I mean, I was really happy that it moved to the forums. But I would say I was just watching as an outsider, and that's fine, you know. If you look at what I was able to achieve, I did all of that. I've been this involved in Swift, but I wasn't that involved in the evolution process, and that's okay.
00:55:11.822 --> 00:55:36.392
<v Chris Lattner>Yeah. So I could probably talk for five hours about this because it's very complicated. I guess the short answer to this is that one of the default views that I hold is that open is better than closed. If you can get more people involved, you will get a better thing. And so I think that the Swift Evolution process has lots of problems.
00:55:37.032 --> 00:55:55.832
<v Chris Lattner>Garric identified several of them. But I think it's generally a really good thing. It's also a great forcing function that slows down the evolution of the language, which I think is good. I think it's better for evolution to be deliberate and carefully considered than it is to be fast.
00:55:56.462 --> 00:56:02.332
<v Chris Lattner>I also think it's good to force a certain amount of documentation and process on it, which is important.
00:56:03.162 --> 00:56:14.342
<v Chris Lattner>It's also a really interesting way that leads to Apple collaborating with the community in a different way by providing a form for doing that, which is really great.
00:56:15.462 --> 00:56:42.172
<v Chris Lattner>I don't see Swift Evolution as a fixed thing. It's changed in many ways over the years and it's always a hard tradeoff between, are you allocating design authority to the community or prioritization ability to the community? And I think it's challenging because if you leave it up to the community completely, then you get lots of small things. But there are major things that need to happen in the Swift world, including concurrency, for example.
00:56:42.702 --> 00:57:02.132
<v Chris Lattner>So that's a bigger effort, and that's harder to do through a completely bottom-up community process. So I don't know. I mean, I think that Swift Evolution is a really good thing. I'm really glad we have it. I agree it's not the only thing, and it should not be the only thing, but I think I think it's overall good.
00:57:02.572 --> 00:57:06.902
<v Garric Nahapetian>What about you, John? Did you get involved at all with the evolution process, writing proposals or anything like that?
00:57:07.105 --> 00:57:58.985
<v John Sundell>I read a lot about the evolution process. I read a lot of the proposals, but just like yourself, I haven't really been commenting a lot and involving myself, and that's very much a decision on my part. You know, at some point you have to draw the line to say, what are the areas that you're going to focus on? And for me, doing all the things that I do with the site that I do and and also working on different projects and all that kind of stuff, I've said, at least for now, I'm going to be well-informed about what's going on in Swift Evolution. I'm going to comment on it occasionally, but I'm not going to heavily involve myself and be an active participant like that. But that might change, just like everything can evolve. So can my involvement as well, so we'll see.
00:57:58.995 --> 00:59:04.165
<v Garric Nahapetian>I think one of the things this podcast can bring to light is all the different parts of the Swift community. Like, my podcast was really about, it was mostly iOS developers, but it was just people building cool stuff, usually in the Swift community. And we talked about the person. Your podcast, you love talking [with] a lot of people who are iOS developers, [building] iOS-related stuff, and you really get into the details of what they're building, and you also talk about the person. And then kind of on the other side you have Swift Unwrapped that gets really into the details of Swift Evolution or Swift features in a very technical perspective. But one of the things I was really excited about this podcast was the ability, and Chris kept saying, almost like a variety show, the ability to talk about the diversity of all these people, helping to build this language together. And just like in any city or any community, there's going to be almost every type of thing or person or activity, and Swift really has that. And so I think it's going to be really exciting to even actually discover things
00:59:05.305 --> 00:59:15.093
<v Garric Nahapetian>that I don't even know about. There's all these interesting things happening in this community, and I think I'm really excited to bring those different stories to life with this podcast.
00:59:15.213 --> 01:00:02.733
<v John Sundell>Yeah, absolutely. And you hit on a point there also, which is there are so many different ways to contribute. And, even if you're a person who doesn't have either the time or it's not within your interest to be heavily involved in the evolution process itself, you can still appreciate it. You can still look at it from a distance, and you still involve yourself in other ways as well. So that's also a beauty of something like the swift community, which is kind of broad, in that sense, where you can contribute in so many different ways. I want to go back very quickly to something, Chris, you said earlier, which is, you said that you do want to enforce a certain kind of ceremony, if you will, or rather process on the changes that are being made.
01:00:03.293 --> 01:00:08.903
<v John Sundell>I think that's also really important. And one thing we have to remember is that we,
01:00:09.893 --> 01:00:51.363
<v John Sundell>talking about this here, people listening to the show, we're all probably pretty excited about the language itself. We are looking at what is happening, we're very involved, and we're paying attention to what's going on. But for many, many people, just like how I was relating to Objective-C earlier saying it was just a tool for me to get my job done, that's how people relate to Swift. And if it changes too quickly and every month there would be a completely new thing, that could be really tiring for a lot of people. So I think, taking a step back and saying, OK, this process is going to take a little bit longer, but it's going to yield a better result and it's going to have a more steady pace, I think that's probably good as well.
01:00:51.513 --> 01:00:57.993
<v Chris Lattner>Right, and each change, it takes time to digest in a certain sense. And when a major new capability comes in,
01:00:58.923 --> 01:01:06.083
<v Chris Lattner>it takes time for the community to figure it out and apply it and figure out how it fits with everything else. And so taking time to do that is good.
01:01:06.703 --> 01:01:36.092
<v Chris Lattner>The number one thing I learned from Swift Evolution is the power of having the right catalysts in the community. And so Swift Evolution really pulled together a community of language geeks to care about one specific aspect of the Swift project. And so I'm always on the lookout for what is the catalyst that allows the Swift package ecosystem to take off, or that allows the Swift on server community to take off or get the machine learning community together maybe and do cool things.
01:01:36.992 --> 01:01:48.852
<v Chris Lattner>And how do we find those catalysts that allow the people to come together in the right forum and really build on their strength and get the energy but also get the talent, get the people working together in a collaborative way.
01:01:49.142 --> 01:02:06.302
<v Garric Nahapetian>Right. And then sustain that energy. So get people excited about server-side Swift. But then how do we keep that going? How do we support people, for instance, like John? How do we support people in the community to continue to have that energy to push forward?
01:02:07.092 --> 01:02:24.002
<v John Sundell>Cool. So, what do you say? Should we round off this episode by talking a little bit about how people can get involved? If you've now been listening to this episode and you feel, this sounds cool, how can I help, or how can I involve myself, what can I do to make this
01:02:24.532 --> 01:02:34.292
<v John Sundell>podcast kind of a nice thing and to keep it moving forward? So Garric, why don't you start off? What are some of the ways that people can contributes to the show?
01:02:34.392 --> 01:02:55.502
<v Garric Nahapetian>Yeah, I was really inspired by the way Jesse Squires set up the Swift Weekly Brief. It's really this automated open source newsletter where everything's hosted on GitHub. The next issue's on GitHub. It's all in markdown format. You talk about the next issue with the community on there. You post
01:02:56.082 --> 01:03:01.402
<v Garric Nahapetian>comments on the GitHub issue and then, you hit a button and it
01:03:02.042 --> 01:03:07.702
<v Garric Nahapetian>spits out the issue. There's a lot more work to it, I'm sure. I actually did an issue,
01:03:08.292 --> 01:03:09.672
<v Garric Nahapetian>number forty something,
01:03:10.202 --> 01:03:24.107
<v Garric Nahapetian>so there's a lot more work to it than that. But it was really cool, and I was very inspired by how Jesse had set that up. Now I don't know if we could get there with this podcast, but when we we're talking about how to get the community involved, we thought, why not somehow use GitHub?
01:03:24.797 --> 01:03:54.007
<v Garric Nahapetian>So, we have a GitHub organization. It's called Swift Community Podcast. It's https://github.com/SwiftCommunityPodcast and there's a repo on there called podcast. We'll do an issue. And then people can comment on there and give feedback on what they think about the show. And none of this is really set in stone. We really want this to be a community effort. We're setting up this initial scaffolding.
01:03:54.547 --> 01:04:05.657
<v Garric Nahapetian>So, we'll have an issue up there. Give us comments on what you think about the show. And then, I think we will also have another issue for the next episode. Like suggestions on what the next episode should be.
01:04:05.947 --> 01:04:28.007
<v Chris Lattner>Yeah, I think that's right. I think they should go to the GitHub repo or the website at https://www.swiftcommunitypodcast.org/. That would be a good jumping off point. You can look at the read me there, which will have all the details. I think the thing I want to emphasize is this is very much an experiment. Hopefully, if we're all successful five years from now, everybody will look back and it will feel obvious.
01:04:28.987 --> 01:04:38.067
<v Chris Lattner>But right now where we are, we don't know. We don't know what this will be. We don't know who's out there that might want to get involved, and we don't know exactly the best way to do it. Nobody's done this before.
01:04:38.597 --> 01:04:57.457
<v Chris Lattner>That's okay. Like, if it doesn't work out, that's okay. No harm would have come from it, but I tend to believe this could be huge. It could be a great way to get people involved that want to do things and have amazing skills and can contribute in lots of different ways. So I'm excited to see what happens.
01:04:57.697 --> 01:05:36.600
<v John Sundell>Yeah, absolutely. And just to give some examples of what kind of skills we're looking for, if you will. Everything from actually being on the show, being a guest or hosting the show, if that's your thing, or even editing an episode or putting things together or editing a part of an episode if you don't have a lot of time. All of those things are of up for grabs, and you can help out with one or two episodes, and then that's it, if you don't have more time or you want to move on to something else. But everything is really kind of up for grabs. And there will be information about all of the stuff in the GitHub repository as well, what we're looking for, and you can volunteer there to help out if you want to.
01:05:36.780 --> 01:05:44.250
<v Chris Lattner>Another thing is to suggest topics and drag people in that you think would be really great and reach out to somebody who you think is
01:05:44.930 --> 01:05:51.830
<v Chris Lattner>got an interesting talent or is working on an interesting project and kind of anything goes. So, let's work this out.
01:05:52.790 --> 01:06:04.410
<v John Sundell>All right. What do you say, guys? I think that's a great point to end this first episode. It's been a lot of fun to do this, and I'm really looking forward to seeing where the show goes with this year and and beyond.
01:06:04.560 --> 01:06:06.870
<v Garric Nahapetian>Me too, Chris. Thanks for
01:06:07.380 --> 01:06:20.000
<v Garric Nahapetian>kicking me in the butt to try to get me back on the air. And, John, thank you so much for taking the lead again. I really appreciate the work you're doing, and I want to be able to support you and other people like you
01:06:20.720 --> 01:06:23.360
<v Garric Nahapetian>to give back to the community that's already given me so much.
01:06:23.370 --> 01:06:24.350
<v John Sundell>Yeah, Supercool.
01:06:24.500 --> 01:06:30.300
<v Chris Lattner>Absolutely. And thank you to both of you, because this is where I insert the meme of I have no idea what I'm doing.
01:06:32.690 --> 01:06:36.710
<v Chris Lattner>So I'm really excited that I'm also looking to learn much.
01:06:36.980 --> 01:06:39.610
<v John Sundell>Yeah, and the feeling is mutual.
01:06:40.290 --> 01:06:56.600
<v John Sundell>When it comes to this, I do know a little bit what I'm doing, but with other things, always happy to learn new things and super excited to do this show with you and the rest of the community. So if people want to find us, where should they go? So for you, Garric, what's the best place to reach you?
01:06:56.690 --> 01:07:02.200
<v Garric Nahapetian>Twitter. G A R R I C N @garricn on Twitter.
01:07:02.590 --> 01:07:04.380
<v John Sundell>Excellent. And what about you, Chris?
01:07:04.910 --> 01:07:14.500
<v Chris Lattner>Twitter? @clattner_llvm. That's right on brand. And what about you, John?
01:07:14.990 --> 01:07:26.240
<v John Sundell>So, you can find me also on Twitter. I am @johnsundell and you can find my weekly articles at https://www.swiftbysundell.com/ and my podcast at https://www.swiftbysundell.com/podcast.