Copy Transcript
Copied
WEBVTT 00:00:00.000 --> 00:00:03.640 I run a podcast. I mean, you're listening to 00:00:03.640 --> 00:00:06.919 it right now. And I genuinely don't know how 00:00:06.919 --> 00:00:11.000 many people heard that last episode. Not approximately, 00:00:11.859 --> 00:00:15.859 not within some margins. I really don't know. 00:00:16.480 --> 00:00:21.460 I get a download count and that's about it. And 00:00:21.460 --> 00:00:25.039 the wild thing is that's not a bug in how I set 00:00:25.039 --> 00:00:27.699 things up. That's just how podcasting works and 00:00:27.699 --> 00:00:30.500 it's... It's been that way since the beginning 00:00:30.500 --> 00:00:34.840 And it traces back to a single XML tag that somebody 00:00:34.840 --> 00:00:37.939 added to a spec on Christmas Day back in the 00:00:37.939 --> 00:00:42.240 year 2000 This is the Tyler Woodward project. 00:00:42.539 --> 00:00:46.000 I'm Tyler all opinions are my own and today I 00:00:46.000 --> 00:00:50.200 want to talk about the RSS enclosure tag What 00:00:50.200 --> 00:00:54.159 it is why it matters and why Spotify spent a 00:00:54.159 --> 00:00:56.659 billion dollars trying to build something that 00:00:56.659 --> 00:01:06.939 would replace it and basically gave up. Okay, 00:01:07.359 --> 00:01:12.019 so RSS, real simple syndication. If you've been 00:01:12.019 --> 00:01:14.480 on the internet since the early 2000s, you might 00:01:14.480 --> 00:01:18.159 remember it. A little orange icon, feed readers, 00:01:18.400 --> 00:01:21.700 Google reader before Google up and killed it 00:01:21.700 --> 00:01:25.840 off. The idea was that instead of going to every 00:01:25.840 --> 00:01:28.750 website manually, to check if there was something 00:01:28.750 --> 00:01:34.430 new you subscribed to a feed your reader checked 00:01:34.430 --> 00:01:38.090 the feed new stuff showed up it was good and 00:01:38.090 --> 00:01:42.930 then it mostly died for regular people once social 00:01:42.930 --> 00:01:46.150 media took over and platforms decided they'd 00:01:46.150 --> 00:01:52.950 rather curate your content for you but RSS didn't 00:01:52.950 --> 00:01:57.519 die in podcasting It became the foundation of 00:01:57.519 --> 00:02:01.900 the whole thing The reason is one little tag 00:02:01.900 --> 00:02:06.799 the enclosure tag Dave winner added it to the 00:02:06.799 --> 00:02:12.400 RSS spec on December 25th 2000 which you know 00:02:12.400 --> 00:02:17.699 is Christmas make of that what you will What 00:02:17.699 --> 00:02:22.199 the tag does is attach a file to a feed item, 00:02:22.199 --> 00:02:26.310 you know, it's normally Normally, an RSS item 00:02:26.310 --> 00:02:30.650 is just text. Title, description, a link. The 00:02:30.650 --> 00:02:34.129 enclosure tag says there's also a file here. 00:02:34.389 --> 00:02:36.310 Here's where it lives. Here's how big it is. 00:02:36.409 --> 00:02:39.389 Here's what kind of file it is. And that's the 00:02:39.389 --> 00:02:43.689 whole invention. Attach a file to a feed item. 00:02:45.090 --> 00:02:48.810 Adam Curry, who was an MTV VJ in the 80s and 00:02:48.810 --> 00:02:52.389 90s, is also a genuine tech nerd. He built the 00:02:52.389 --> 00:02:57.180 script. In 2003, that would look for audio enclosures 00:02:57.180 --> 00:02:59.960 in RSS feeds and automatically pull them into 00:02:59.960 --> 00:03:05.699 iTunes. Somebody coined the word podcasting. 00:03:06.319 --> 00:03:10.020 Apple shipped native support for this in iTunes 00:03:10.020 --> 00:03:16.120 4 .9 back in June of 2005. Get this, a million 00:03:16.120 --> 00:03:20.979 subscriptions in 48 hours. The entire medium 00:03:20.979 --> 00:03:27.150 took off on infrastructure that nobody owns. 00:03:27.569 --> 00:03:32.050 Nobody owns RSS. The specs copyright was assigned 00:03:32.050 --> 00:03:35.129 to Harvard's Berkman Klein Center back in 2003 00:03:35.129 --> 00:03:40.030 under a Creative Commons license. No company 00:03:40.030 --> 00:03:44.289 holds it. You can read the spec right now. Implement 00:03:44.289 --> 00:03:46.530 it yourself. Ship an app tomorrow. No permission, 00:03:46.689 --> 00:03:53.479 no license fees, no no proprietary garbage. That's 00:03:53.479 --> 00:03:58.740 genuinely unusual. The foundational infrastructure 00:03:58.740 --> 00:04:02.159 for an entire industry worth billions of dollars 00:04:02.159 --> 00:04:05.620 in ad revenue and there's no entity that owns 00:04:05.620 --> 00:04:11.319 it or can take it away from you. What that means 00:04:11.319 --> 00:04:15.099 practically is that when you subscribe to a podcast, 00:04:15.719 --> 00:04:20.519 you're just giving an app a URL. The app checks 00:04:20.519 --> 00:04:23.879 that URL for new episodes. When it finds one, 00:04:23.939 --> 00:04:28.540 it downloads the file. Your server delivers it. 00:04:28.800 --> 00:04:32.060 And that's sort of the whole transaction. Apple 00:04:32.060 --> 00:04:34.600 doesn't have to be involved. Spotify doesn't 00:04:34.600 --> 00:04:37.699 have to be involved. Unless you're hosted on 00:04:37.699 --> 00:04:39.920 one of those platforms, the file goes directly 00:04:39.920 --> 00:04:44.959 from your server to the listener's device. So, 00:04:45.060 --> 00:04:47.800 Apple can pull your show from their directory. 00:04:48.000 --> 00:04:50.660 I mean, that happens and it matters because that's 00:04:50.660 --> 00:04:54.019 where a lot of people find the stuff. But they 00:04:54.019 --> 00:04:57.740 can't take your feed down. They can't stop your 00:04:57.740 --> 00:05:00.060 existing subscribers from getting new episodes. 00:05:00.920 --> 00:05:04.120 Compare that to YouTube where your channel gets 00:05:04.120 --> 00:05:08.699 terminated and it's just gone. Or Spotify exclusives 00:05:08.699 --> 00:05:11.959 where the show only exists if Spotify decides 00:05:11.959 --> 00:05:16.519 it exists. The broadcast parallel is actually 00:05:16.810 --> 00:05:19.589 pretty clean here. I mean, think about it, nobody 00:05:19.589 --> 00:05:23.550 owns the FN band. It's public airwaves. The FCC 00:05:23.550 --> 00:05:27.889 regulates it, sure, and can yank your license, 00:05:28.569 --> 00:05:31.829 but the underlying infrastructure is shared. 00:05:33.670 --> 00:05:37.990 Podcasting RSS is sort of similar. The rails 00:05:37.990 --> 00:05:43.129 are shared. You just have to host the files somewhere. 00:05:44.490 --> 00:05:49.540 Okay, but Here's the thing. I can't get over 00:05:49.540 --> 00:05:54.100 I Said I don't know how many people actually 00:05:54.100 --> 00:06:00.139 listen to my last episode that's because in podcasting 00:06:00.139 --> 00:06:04.139 a Download is an uh, you know an HTTP request 00:06:04.139 --> 00:06:09.399 your server sees an IP address a user agent a 00:06:09.399 --> 00:06:13.839 timestamp and how many bytes get served from 00:06:13.839 --> 00:06:19.100 the server It doesn't see whether anyone hit 00:06:19.100 --> 00:06:21.600 play. It doesn't know if the file set on a phone 00:06:21.600 --> 00:06:23.860 for three weeks and then get deleted because 00:06:23.860 --> 00:06:27.980 it was never played. There's no session. There's 00:06:27.980 --> 00:06:32.939 no callback when someone finishes. In radio, 00:06:33.120 --> 00:06:35.939 and I've worked in radio for a little while now, 00:06:36.439 --> 00:06:39.980 we have Nielsen, PPM meters, diary surveys, panels. 00:06:41.860 --> 00:06:45.439 It's imperfect, but... PPM has well -documented 00:06:45.439 --> 00:06:50.160 sample size problems in small markets, and if 00:06:50.160 --> 00:06:52.699 you've ever looked at the margins of error in 00:06:52.699 --> 00:06:56.680 a Nielsen book, you've had a small existential 00:06:56.680 --> 00:07:01.680 crisis, but you know at least something. You 00:07:01.680 --> 00:07:07.160 have a number you can defend to an advertiser. 00:07:07.720 --> 00:07:11.759 Podcasting has the IAB TechLab podcast measurement 00:07:11.759 --> 00:07:15.730 guidelines. Try saying that five times fast. 00:07:16.589 --> 00:07:21.649 Four versions now. The latest is from early 2024. 00:07:23.149 --> 00:07:26.449 What they define is a process for cleaning your 00:07:26.449 --> 00:07:30.649 server logs to get a more defensible download 00:07:30.649 --> 00:07:35.069 count. De -duplicate by IP and user agent within 00:07:35.069 --> 00:07:39.850 24 hours and force a minimum byte threshold filter 00:07:39.850 --> 00:07:45.529 out known bots. What you get at the end of that 00:07:45.529 --> 00:07:48.730 process is a number that more accurately represents 00:07:48.730 --> 00:07:54.790 deliveries not listens deliveries again downloads 00:07:54.790 --> 00:07:59.290 Spotify knows your age bracket. They know exactly 00:07:59.290 --> 00:08:01.529 where you dropped off on an episode They know 00:08:01.529 --> 00:08:05.009 if you skip the ad that's because they own the 00:08:05.009 --> 00:08:11.000 client in the server They see everything If a 00:08:11.000 --> 00:08:14.720 platform owns the whole stack, you get real analytics. 00:08:15.519 --> 00:08:18.379 If you want independence from the platform, you're 00:08:18.379 --> 00:08:22.279 working from server logs. Spotify understood 00:08:22.279 --> 00:08:26.500 this, which is why they started back in 2019. 00:08:26.779 --> 00:08:30.779 They went on a massive spending spree. Gimlet 00:08:30.779 --> 00:08:35.200 for around $230 million. Anchor for around $154 00:08:35.200 --> 00:08:38.600 million. Parcast, The Ringer, Megaphone, Podsights, 00:08:38.779 --> 00:08:41.740 Chartable. Joe Rogan went exclusive in December 00:08:41.740 --> 00:08:47.960 of 2020 for a reported $200 million plus. Total 00:08:47.960 --> 00:08:53.460 spent on the entire beta test cleared billions 00:08:53.460 --> 00:08:57.759 of dollars. The bet was that if they could pull 00:08:57.759 --> 00:09:01.879 enough listeners into Spotify with exclusive 00:09:01.879 --> 00:09:04.659 content, they could migrate the medium off of 00:09:04.659 --> 00:09:09.600 open RSS standards and onto something they controlled. 00:09:11.059 --> 00:09:14.519 It didn't work. The Obama production deal ended 00:09:14.519 --> 00:09:18.100 and went to Audible for wide open distribution. 00:09:18.580 --> 00:09:21.860 Brene Brown's show left exclusivity and moved 00:09:21.860 --> 00:09:28.039 over to Vox Media. Rogan's renewal in early 2024 00:09:28.039 --> 00:09:34.659 was explicitly not exclusive. He went back to 00:09:34.659 --> 00:09:37.419 Apple, YouTube, Amazon Music all on the same 00:09:37.419 --> 00:09:42.549 day. Spotify said it was the last exclusive podcast 00:09:42.549 --> 00:09:47.210 deal they'd ever do. One thing worth knowing, 00:09:47.549 --> 00:09:52.929 when Spotify bought Podsites and Charitable in 00:09:52.929 --> 00:09:56.429 2022, those were the only two third -party measurement 00:09:56.429 --> 00:09:59.950 platforms that worked across publishers and advertisers. 00:10:01.350 --> 00:10:04.330 Charitable got folded into megaphone and shut 00:10:04.330 --> 00:10:11.149 down. So Spotify The dominant non -apple listening 00:10:11.149 --> 00:10:15.690 platform now also owns a big piece of the neutral 00:10:15.690 --> 00:10:17.970 measurement infrastructure everyone else was 00:10:17.970 --> 00:10:23.649 using. RSS didn't fix that. That's a platform 00:10:23.649 --> 00:10:27.549 layer problem. The protocol has no mechanism 00:10:27.549 --> 00:10:31.070 to address. The other thing I find interesting 00:10:31.070 --> 00:10:35.809 is podcasting 2 .0. Adam Curry and a developer 00:10:35.809 --> 00:10:39.309 named Dave Jones started it in 2020. It's an 00:10:39.309 --> 00:10:44.629 open extension to the RSS namespace, so it layers 00:10:44.629 --> 00:10:47.549 on top of the existing protocol and doesn't replace 00:10:47.549 --> 00:10:51.909 it. It adds transcripts, JSON chapters, direct 00:10:51.909 --> 00:10:54.490 micro payments via the Lightning Network, live 00:10:54.490 --> 00:10:59.570 streaming support, globally unique episode IDs. 00:11:00.549 --> 00:11:05.730 Apple shipped support for it. and iOS 17 .4, 00:11:05.850 --> 00:11:09.610 at least for the transcript part. The first time 00:11:09.610 --> 00:11:12.590 they adopted an open namespace tag rather than 00:11:12.590 --> 00:11:16.110 inventing their own proprietary version. Spotify 00:11:16.110 --> 00:11:18.649 drugged their feet for a little while, but added 00:11:18.649 --> 00:11:23.909 it later that year. The mainstream apps are moving 00:11:23.909 --> 00:11:26.970 slowly. Nobody's done the micropayment stuff 00:11:26.970 --> 00:11:31.090 at scale. but the direction is keep the open 00:11:31.090 --> 00:11:34.350 protocol, add structured features on top of it, 00:11:34.870 --> 00:11:39.590 and don't try to instrument the listener. That's 00:11:39.590 --> 00:11:46.129 a choice. A download is not a listen. It's never 00:11:46.129 --> 00:11:49.730 been a listen. The entire podcast medium has 00:11:49.730 --> 00:11:54.870 been running on that vagueness since 2005, and 00:11:54.870 --> 00:12:01.100 20 years in, It's still not resolved. I've been 00:12:01.100 --> 00:12:03.879 thinking about this because I'm literally on 00:12:03.879 --> 00:12:07.039 both sides of it. I work in broadcast where the 00:12:07.039 --> 00:12:11.919 measurement is imperfect, but at least something 00:12:11.919 --> 00:12:16.299 exists. And I run a podcast where I get a download 00:12:16.299 --> 00:12:18.980 count and I'm supposed to generalize from there. 00:12:20.240 --> 00:12:24.899 The same design choice that makes this show impossible 00:12:24.899 --> 00:12:31.259 to the platform is the one that makes it impossible 00:12:31.259 --> 00:12:35.179 to fully measure either. Not really separate 00:12:35.179 --> 00:12:38.399 problems, same decision and I'm not sure I'd 00:12:38.399 --> 00:12:42.320 trade it because I've watched what happens when 00:12:42.320 --> 00:12:45.940 a platform owns the whole stack and decides the 00:12:45.940 --> 00:12:53.370 economics don't work anymore. The billion -dollar 00:12:53.370 --> 00:12:57.690 siege failed. The 24 -year -old XML tag is still 00:12:57.690 --> 00:13:02.669 running, still doing its thing. Thanks for listening 00:13:02.669 --> 00:13:06.649 to the Tyler Woodward Project. This is an independently 00:13:06.649 --> 00:13:09.990 produced and written podcast by myself, and if 00:13:09.990 --> 00:13:11.950 you'd like to support the show and project, head 00:13:11.950 --> 00:13:15.450 over to tylerwoodward .me forward slash subscribe 00:13:15.450 --> 00:13:18.970 and become a member today. It goes a long way. 00:13:19.100 --> 00:13:21.960 Makes me feel all loved and stuff a little warm 00:13:21.960 --> 00:13:25.460 and fuzzy inside. You can also follow me on Instagram 00:13:25.460 --> 00:13:30.399 threads and blue sky at Tyler Woodward dot me 00:13:30.399 --> 00:13:32.340 I'll catch you guys next week