Zed Shaw – creator of Mongrel, Learn Python the Hard Way, and more – joined the show to talk through a recent Twitter thread from Zed where he shared his thoughts on open source, making money in open source, corporate interests and involvement, developer culture, and more.
Linode – Our cloud server of choice. Deploy a fast, efficient, native SSD cloud server for only $5/month. Get 4 months free using the code
changelog2018. Start your server - head to linode.com/changelog
OSCON – O'Reilly's Open Source Convention combines the experience of the open source community with ideas and strategies for using open source tools and technologies. There's no event quite like OSCON! When registration opens — save 20% on most passes by using the code
CHANGELOG when you register.
Fastly – Our bandwidth partner. Fastly powers fast, secure, and scalable digital experiences. Move beyond your content delivery network to their powerful edge cloud platform. Learn more at fastly.com.
Notes & Links
- PDF copy of Zed's Twitter thread (because he's testing his Twitter account as being private)
- The original Twitter thread
- The Changelog #34: Mongrel2 and High Performance Web Sites with Zed Shaw
- Learn Code the Hard Way
- Embrace, extend, and extinguish - Wikipedia
Our transcripts are open source on GitHub. Improvements are welcome. 💚
Zed, we invited you on to talk about somewhat of an epic Twitter rant you went on back in April... But now looking at your Twitter, it looks like you have it on private mode; are you on hiatus? What's going on with your Twitter feed?
Yeah, yeah. Well, I have two Twitter feeds. I have the one that's just kind of me ranting about stuff, and then I have another one that's for my books... Like the "Mr. professional author of books", I teach people.
Living two lives.
Yeah, living two lives, just like a serial killer. [laughter] So what I did is I put that one on private just for a little while, just to see if it changes the way I say things. Also, just sort of like because I feel there's a lot of people who follow that Twitter feed, and then they're sort of like "It's a different tone than the book feed." So I'd rather have them follow the book feed... Because the book feed is low volume, much more positive, upbeat... And then my personal feed is me; it's my personal life and things I do. I kind of want to separate the two for a while.
That's so funny that you're like that though...
Yeah. I mean, I think everyone's like that, I'm just honest about it. [laughter]
Okay, I'll give you that... To some degree.
It looks useful.
Yeah, you look at all these people who are like "Oh yeah, I'm Mr. Sensitive and I do all these things and I really love humanity", and then you find out that no, they're actually giant pieces of crap. Yeah, I'm just honest about it.
You just wear it.
Yeah, I mean, I'm not a bad person, but I have no problem speaking my mind, speaking out about things that I seem to think affect other people, or myself, talking about my personal life... Things like that. And it's not like I have some weird personal life; it's pretty boring.
And then there's also -- a lot of that personal account is a lot of art. I do a lot of painting, and I think that doesn't mix for a lot of people. I think there's a lot of people who follow me for the painting, and I'd like to have those separate. I can put some paintings out, I can do a lot more talking about art, things like that, keep it private, and then direct people towards the more professional book, programmer-oriented things.
[00:04:10.26] See, I appreciate that, because I'm a long-time Twitter user, and we could probably just talk about the platform and the medium for an hour and call it a show, but we don't necessarily wanna do that... But while we're here, thinking about channels and segments of people -- I follow a lot of people that will say, like, you know... And I completely respect this take they have, but it's like "You get all of me. You're gonna get my software side, you're gonna get my personal side, you're gonna get all these things", and that's fine, but as a reader, as a person who's there... There's people that -- maybe I don't care about Zed's art, for example; just throwing that out there. So you're actually splitting those out for people; it's kind of a public service in certain ways, for those that just want this type of a thing.
Exactly, exactly. And also, you know, my books are targeted at beginners and they're trying to learn to code, so I think it's kind of not right if I'm also in there ranting about how terrible the industry is, and causing disillusion in people.
I am very honest in my books; I do say the job is not that great. It pays well, but it's not like the greatest job in the world... So it's not like I'm lying, but I'm also sort of being like "Well, there's some issues in the industry, but for now, if you wanna learn to code, just focus on learning to code. Don't look at all that other stuff."
So my private account - I'm just gonna keep it private for a little while, and just basically talk and be myself (like I always do), but then sort of shield people who are just poor, normal folks who don't really care about the programming industry and just wanna learn to code... They can go over to the other one, and I'll be all nice, and "This is the programming side." [laughter]
You think people are getting into programming for the wrong reasons?
Not necessarily. Everyone wants a job, right? Unless you're independently wealthy and you don't care, most people want a job, so it's reasonable. Like, if you see people making lots of money programming, of course you're gonna wanna go into it for programming and to make money. But I think it's more that they're putting the cart before the horse. I think they're worried very much about how they're gonna get a job before they even know how to code.
My thing is always like "Don't worry about that, just focus on coding. Get your coding done, get that out of the way, and then worry about how you can get a job, when you know you can actually code."
So you're the author of multiple books, like you said, for beginners - Learn Python the Hard Way, Learn Ruby the Hard Way - and had been an author of many open source libraries down through the ages... I guess we can say ages now, because internet time, right? So we had you on the Changelog episode #34, which I guess makes Adam and it makes us feel old, because that's 2010...
... so it might make you feel old. Maybe not. But that was back talking about Mongrel, Mongrel 2... A long time ago; it feels like ancient history to me. Catch us up on your books, what you've been up to, and really -- don't give us like a deep history necessarily of everything between now and then, but just to introduce the audience to the context you have with...
With open source.
With open source and with teaching people software and the industry at large.
I think the best description of my position in the industry is someone once said "I'm the most famous a programmer can get without being a billionaire." [laughter] Right? Because I'm poor. I try to be very honest, and I've told people --
You are not poor.
No, I mean, compared to a lot of the other programmers...
[00:07:44.10] Yeah, yeah. Not now, but there was a period of time when I was actually homeless, and trying to work as a programmer in open source... I'm honest about this thing. So it's funny, because I kind of like that description, because it's sort of like saying "Yeah, if you wanna be famous and actually successful, then you kind of don't wanna be a programmer. You wanna be a founder, and start a company." But also, it's sort of -- yeah, it summarizes it; I'll own that. I'm about as famous as you can get without actually running a giant billion dollar company. I don't know if that's actually accurate, but whatever; I'll go for it.
And then I think the other thing about it is when we did that in 2010 I was kind of on the cusp of kind of coming to this realization that open source really wasn't the best way to move forward with my career, and I think it was right about the time when I started really pushing my books forward and started changing my career from being the guy who made all this software to the guy who teaches people how to make software. That's been the big shift for me; I shifted out of -- I took that fame that was really not doing much for me as far as an open source developer, and my skills at teaching, that I kind of just stumbled on... You know, I wouldn't say I was an expert already, but... I turned that into a new career as an educator; I teach people how to learn to code, how to pick up new skills, things like that. I do a lot of live teaching now... And that's sort of been my direction. And then on the side with that, I've been doing a lot of painting. I love art, I'm doing painting now.
So aside from the obvious answer "Read my books", if you were to take somebody, a smart person who is not a programmer, and turn them into one, what's the happiest path in your opinion and in your experience from zero to employable? You say maybe not focus on employment right away, but to let's call it "proficient programmer", what's the best way today?
So I think it's totally fine for people to get work; that's totally one of the motivations. But I try to say "Look, if you're focused on work, you're gonna miss out on the process of learning and building your skills." So I tell people, going from zero to being proficient. Proficient means you can sit down on your own, and have an idea, and turn that idea into a working piece of software - maybe not a pretty piece of software... Because I think pretty and beautiful and all that is sort of very subjective, right?
And I tell folks, you don't have to read my books, because I don't have a book for every language, or every skill... I tell people, just take any book and sort of do it the way my books do it. Take the books, get all the code working, then read about the code in the book... Because I think most books are actually written backwards, where they talk a whole bunch, and then show you a little bit of code, and it's way easier to get the code to work, and just sort of get it up and running, and then go read what they say about the code, because you get to see the whole thing in action and it's a lot easier to understand it.
So a lot of times, I tell people, like let's say you wanna learn Go. I don't do anything with Go, I don't really have any plans for it... So they'll e-mail me and say "Do you have a Go book?" I'm like, "No, but take this book. It seems to be really popular on Amazon", and it kind of doesn't matter; just get all the code working. Then just keep doing that, and getting code working, and understanding it and trying to make it work. It's like learning a language; eventually you'll get pretty good at it. Then go out and either try to make your own little projects and put them out. It's sort of like a demonstration of what you're able to do. Or go find someone else - and this is the thing I advocate a lot - find some open source project and go in there and fix bugs; find the simplest bugs, and slowly just keep squashing bugs. That's all you do. Don't make any new features, don't add anything to it, just squash bugs.
So far, that seems to work for folks. I'm saying, you don't have to read my books, but if you go through a bunch of books and get the code working and then go and squash bugs, that's a pretty good path.
[00:11:54.19] That's interesting too, because there's so many open source projects out there that are now -- we've talked about it on this show, and other shows, talking about how do you flag and give somebody an on-ramp? There's so many on-ramps out there in open source to easily take that advice and run with it.
Yeah. We're gonna get into it; I've got a love/hate relationship with open source, but I do think fixing bugs is kind of like the bread and butter for a lot of programming, especially entry-level programming. And the easiest place to find bugs to fix is projects that are totally open, and you fix the bug, and you send them the code, and they go "Oh, that's cool. Thank you for fixing the bug." So that's one way to kind of like build up your skills and also get recognition for what you're doing, and kind of build up a resume for what you're working on.
You don't have to ask permission, and no one's gonna turn down a bug fix.
Well, not many at least, right? Very few people turn down a bug fix.
They're less likely to, yeah.
Well, they might have a problem with your code quality, and usually they'll give you feedback; they'll be like "Hey man, you've gotta use these variables like this... Can you redo this one?"
And now you're in code reviewing, you're learning.
Exactly. And actually, I take this a little bit further, because -- you know how you hear about those developers who do an interview where they're like "Can you reverse the red-black tree without using any memory?" and I'm like "That's just the worst interview." Or "Why are manholes round?" Stupid questions. And I'm sort of starting to advocate like, I don't know, like the programmers who seem to have the most value in an organization are the ones who can fix stuff; like, you know how to debug software, you're just super good at fixing things. And for me, I would love to have it where you do your interviews and you hand them broken code, and you say "Fix as many bugs as you can in two hours."
Then you come back and say "Alright, let's see what you did." If they can prove they can squash bugs, that's the kind of employment test I'd be looking for.
That's true. Yeah, give them a piece of software and say "Fix some bugs."
Is anybody doing that out there? That seems like almost obvious now that you say it. I know we don't have the whole industry in our heads, but I wonder if we know of any businesses who are actually--
I know nobody.
Nobody. I mean, probably there is. We don't know every industry--
Listeners, if somebody out there is doing that and you know about it, give us a holler or e-mail us.
That's every day. I mean, I can't reference any particular tweets, but there's definitely -- as we watch what we do to do Changelog News and this show, Jerod, I see those tweets and I see people say "I can't possibly deal with one more job interview to do what Zed just basically said. I can't do that one more time."
You mean the bad way, or the way he's proposing --
In the bad way. Like "I can't go through one more of those scenarios of like 'Why is this that way?' versus saying 'Hey, can you code?' It's like these challenges that have no meaning."
Right, right. I mean, is anybody doing it the bug squash way? That's what I meant.
No, no, no.
If we're missing that one, then jeez, we're not watching... Because that's every day.
Yeah. Everyone has tons of stories where they go and they do a whiteboard, and the guy is like "Can you find a substring in a string?" And you could use a better algorithm, but if you don't do the algorithm that he learned in college, you don't know how to do it. So it's not even if you can do the thing they ask you to do, it's if you know what they know; if you're just like them. I think that's the biggest problem with it.
Sure, it's great - everyone should know algorithms; that's a useful thing to learn. But if the point of algorithms is to make sure that you went to his CS 105 class in MIT, then you're just filtering people based on kind of socio-economic things, not really their skills.
But bug fixing is universal. It doesn't matter what programming language it is, it doesn't matter where you come from, where you went to school... If you can't fix bugs, I don't think you can really code. So it's an easy test... You can also do it without making people work for free. So you just point them at an open source project, you say "Fix bugs. That's your job interview", and they fix bugs. It's done for free. It's an easy way to check that they can understand code...
[00:16:13.04] I think 80% of a programmer's work is fixing bugs. I think if I sit around, most of the time I'm coding it's "Oh, this doesn't work. This doesn't work. This doesn't work. Oh, now it works."
Well, the rest of the time you're just writing the bugs.
[laughs] So you're not fixing them, you're writing them.
I'm a professional at that.
That could be a different job interview - how many bugs can you write in two hours?
That would be another one I would do. If I was gonna hire someone for a security job, I would do the opposite. "How many bugs can you hide in this code?" Because then I would know that person - they know their security.
That's interesting. I always enjoy -- I'm not sure if you're a fan of Mr. Robot, but that's kind of what I enjoyed about season 1 at least... All this kind of "How do things work?" and just the mind of a hacker and how they would get into or out of systems, and exploits, and how they would use them against somebody... I don't think that way, but I love hearing stories about someone who does.
Yeah. I live in this building with crazy security. They've got fingerprint readers, and all this crazy stuff... And I was getting really tired; they're just like Nazis, man... They're just crazy. They yell and scream at you, which is insane. And I started walking around the building, and I found out that there's back gate that has zero security and is never closed. So I was kind of like "Alright, I'll just start going through the back gate." And it's like a whole other world, and I'm thinking, this is the kind of things that describes software hacking - a lot of times nobody really does anything like Mr. Robot style hacking; most of the times people just forgot to close the back gate and you're just walking through the back gate, and you're just like "Well, okay. I'm gonna take all your Equifax data..."
Yeah, exactly. Well, I mean, the most famous hacker/cracker back in the '90s, Kevin Mitnick, he went to jail, and all these things he did... And at the end of the day, what he did most of the time was he just asked people for things; it was all social engineering. Because a lot of the times the humans are the weakest links. You just call and ask "Oh, I forgot my password. Will you reset it to this for me?" and then they just would.
So yeah, security is tough, because you've gotta secure every little aspect. All the surface area has to be secure, but on the other side of the coin, you only have to find one problem.
It's almost not fair.
I found that there's also a sort of correlation, because if an organization is very insane about security and sort of touting that, usually they seem to be too focused on obvious security, and there's always some really simple side-chain that just gets around it. So it's really interesting... What was that -- there was a bug in Signal recently, where if you just sent someone an HTML document, you could completely own their machine, and everyone touted Signal as the most secure thing ever, and the dude is not even checking HTML documents. And for me, I'm thinking "HTML? No, you don't get that. That is not secure." I'm like "You cannot send HTML. That is the most terrible thing ever. Why would you want HTML?" But to them, they're like "Yeah, sure", and they totally got owned... Twice, I think. Even their fix got owned after that, or something.
Wow. You said you have a love/hate relationship with open source, and you mentioned -- and I'm not sure if this is a tough spot for you to talk about, but you mentioned being homeless. I'm curious of the relationship of yourself in that timeframe and open source, and maybe what happened. Was it your fault? How did this go down for you?
Well, yeah... Ultimately, a lot of that is partially your fault, right? I mean, there's decisions that I made that I shouldn't have made. But I think at the same time I had created these projects that all these companies were using, and at the end of the day rather than hire me or get me consulting, they went the complete opposite direction and seemed to go out of their way to tell everyone that my software was terrible.
[00:20:18.07] Twitter was, I think, the worst for that. They were using Mongrel at the time as an excuse for why their website wouldn't work... And it really had nothing to do with Mongrel. They just were terrible coders, and that's why their website didn't work.
But that basically caught me up and being homeless, combined with a couple other things and bad decisions on my own... But it was nearly impossible for me to find work within the Ruby on Rails open source industry at the time. That sort of taught me really quickly "Don't get involved with these communities that promise you that you're going to get a piece of the pie if you contribute."
After that, I turned all of my projects into "I'm helping the community, not the project." By helping the community, I'm getting some sort of benefit from it - they're buying my books, they're hiring me, doing something like that. That's the big change that came out of it.
But the majority of the thing, like the homelessness for me at the time was basically for about six months I had to sleep on friends' couches and trying to scrounge for work. I didn't have anywhere to live, I didn't have enough money to get an apartment. So when I say "homeless", it's not like I was living on the streets [unintelligible 00:21:33.02] nothing like that... But it's still sort of like a big distance between what should have happened, which is if my project is being used by these companies, then I should have been receiving some sort of benefit, even if all that was was a job.
There was sort of like this unwritten contract in open source that we had; the unwritten contract with corporations was if you wrote open source that they were using, you got some sort of job, or consulting fees, or at least some respect so that way you could find jobs.
And I think there was also an unwritten contract with communities too, where like if you contribute to the community, you'll get respect and a piece of the pie. I think that was demolished that year. So after that, I just kind of moved on. I started to realize that "No, that contract has completely been rewritten. It's totally different now. If you write open source, you're not gonna get a job", and now what's been happening - and part of my tweet storm and whatnot about open source - is that it's gone the opposite direction, where what I see is sort of like almost direct action to prevent open source developers from making money... Which I find very strange, and I've been trying to think about that a lot lately.
Did the whole Rails is a Ghetto thing happen before or after that?
Actually, "Rails is a Ghetto" happened after that, as a response to me finding out that a lot of the Ruby on Rails companies were actively going out and preventing me from getting work.
So this wasn't like I wrote -- actually, writing "Rails is a Ghetto" helped me get work, because it freed me from (I guess I'm just gonna say it) the oppression of the Ruby on Rails community. And that's a significant difference. And then after I wrote that, people were trying to come out and say that "Oh, well the reason you can't get work is because you wrote that", and like "No, no, no. I wrote that because I can't get work."
As we talk, you'll find out... That's a common pattern where like you'll do something to defend yourself, and they'll tell you "Well, you deserve everything that happened because of this thing you did to defend yourself." It's sort of backwards; it's victim blaming, basically.
That's why I was trying to figure out the timeline there, because I remember that - and I don't know the story well enough, and here we are, somewhat face-to-face, at least audio-wise, to discuss this...
Voice to voice...
Yeah, and I see that in your history and I'm just wondering maybe what others assumed, which was like "Did that cause your scenario, or did your scenario perpetuate it?"
[00:24:04.18] Yeah, my scenario perpetuated it, because keep in mind, I was working at Bear Sterns when I wrote that. So I was able to finally get a job, and the only job I could get was working at basically this crappy bank in New York, a bank that eventually collapsed. That's how terrible that place was. And I was not making all that much money. Pretty much Ruby on Rails destroyed my ability to work as a Java programmer, because of all the animosity that David Heinemeier Hansson created between Rails and Java. So the second I started becoming high-profile within Ruby on Rails, I couldn't get work as a Java guy because they were like the Anti-Rails to that point.
And then I find out all these background deals that Ruby on Rails people made, and a lot of the things that people were saying about me, and the stuff that Twitter was saying to defend themselves from investors wondering why their system collapsed all the time... That was why I couldn't get work, and I'm like "Alright, screw this, I'm gonna write about it." And I came out and told the truth.
That brings us to the tweet storm in question that caught both Adam and my eye. We interview a lot of people on the show, we talk to a lot of people in the open source community, so we see different perspectives... And one thing I appreciate about you, Zed, is of course some things you do say are inflammatory, so that gets people worked up, but you definitely see things differently than a lot of people, and I always appreciate a separate voice out there, crying "Here's a different thing than what you're hearing normally." So that's what caught my eye about what you were saying, specifically around what you just said with regard to making money in open source, and really the move of corporations into the community, which is something we've been tracking, of course, over the last ten years. It's been very obvious that that's been something that's happened and it's very intentional.
So let's start with I guess kind of the money quote, because it plays right into what you've just said... And I'll just read this tweet back to you from the storm; links are in the show notes for those that wanna read the whole thing. We won't read the whole thing here, for brevity's sake. You said:
"In the end, open source is now the domain of corporations, using code to illegally collude under the guise of peace and love hippie software projects. If you plan on releasing software, AGPL it and simply do it for self-expression. Save your real efforts for a real job."
That's a pretty dystopian view. That's pretty bad.
Yeah, and I guess we're done... I mean, that's pretty much the whole thing, but... [laughter] But I can explore on that.
[00:28:03.14] So it's sort of interesting that -- I mean, do you feel that's controversial? Like you said, it's dystopian, but do you think it's controversial at all? Do you disagree that corporations have kind of totally taken over open source and it's difficult to make money as an open source developer?
Well, I would say that it's always been difficult to make money as an open source developer, so I don't think that's necessarily new. I would say that corporations have definitely moved in in big ways, and have made open source an emphasis, and because of just the pure weight of their size - we're talking about large technical corporations like Microsoft, like Google, like Facebook; these are the big tech companies...
Yeah, they're giants. They'll dominate any space they go into in software because of their pure weight.
So I agree with that. "Illegally collude under the guise of peace and love hippie software projects" - I don't agree with that. "Illegally collude" - that's where you lose me... But I definitely see where the game has changed. And I've seen that be good in some ways, and I've seen it also be detrimental.
Yeah, yeah. So it's pretty straightforward to just say, like -- let's take just Google. Google's entire company, up until maybe eight years ago, when they started making Go and their own stuff, their whole company was based on open source. They used Linux, they used tools, they used everything... I don't really think they built too much of their own stuff. In fact, they got sued for that; they were using Java and they weren't paying for it, so they got sued for it, right?
So if you take a company like Google - and they are worth 600 billion dollars, something like that; something really insane right now, 500-600 billion dollars. So they're benefitting from open source, and then the average open source developer that works on the tools they need makes almost nothing. In fact, what we see is an open source developer is gonna die from cancer and he goes on GoFundMe and begs people for money for his funeral. And then there's this company that's making 500 billion dollars.
So that's the thing - it's really obvious, but for some weird reason programmers sort of all think that's okay. They can't really think about it. And in fact, they go so far as if you try to make money with your open source - like, you license it GPL; I remember I licensed something GPL, and all these people from Django started yelling at me that I licensed in GPL. Like, how dare I try to make money on it?
So we go with this thing, this sort of like self-loathing, "If you wanna get paid, you're greedy", but the company who's making tons of money on your stuff is not greedy. They're allowed to make that money, they're a corporation. But you, the developer, you should be helping the universe with your free stuff, and you're just a greedy jerk for doing that, for trying to make money?
What do you suggest then? The thing of open source is that the code is open and it's free for everyone, regardless of if you can make money from it or not, right? So by having this stance, are you saying that because these corporations decide to use the game, use the rules of the game and use the software and make money from it, that they should somehow be required to give back? What's your point there?
So I actually think that the thing that the corporations are doing is totally what corporations are usually gonna do. You can't blame them; that's a corporation, that's what they do. I think the bad thing is when we're telling open source developers that they can't be just like corporations.
So yeah, corporations are gonna go out and do that. I'm not surprised. Are you surprised? I'm totally not surprised.
I have no problem with anybody making open source and making money from it, personally. I encourage it, please do that.
[00:31:56.00] Yeah, but what we do is when I GPL-ed something, all these dudes came out saying I was a jerk for GPL-ing my stuff, because I'm gonna make money on it.
Maybe they're just jealous.
No, I think they really wanted to use my project without paying for it. That happens a lot.
Node.js started with a piece of my code, and then right after that they needed a new license, so rather than pay me for the license, they created a separate project that just had my code in it, and then [unintelligible 00:32:26.23] e-mailed me and he's like "Hey buddy, can you just give me a free license for this?" Like, why are they trying to steal it from me? They could have just paid me, and I would have been like "Cool, just pay me and I'll do a new license, and we're done." This is capitalism - contracts, paying money, exchanges... That's how it works, right?
So my problem with it is that if it's right for corporations to be making money, it should be right for us to make money, but that's not what's happening. There's something else going on, and it's taken me a while to sort of figure out that really this is sort of a strategy among corporations to kind of do three things at once. And these are three things that actually happened to me, or that are happening; it has been really easy to find it.
The first one is they're just trying to commoditize their complement. Have you ever heard of that strategy? Microsoft - they sold operating systems, so they did a lot to commoditize hardware. So if you're Google, you make all your money on ads; you don't make money on hosting software, you don't make money on Kubernetes or any of that stuff, so what you do is you commoditize all that. You depress the market for those things, so that way it's always cheaper for you to run your infrastructure for the thing you actually make money on.
That's what all these companies are doing - they're trying to use open source to commoditize their complement... Which, okay, great - someone releases, and then they're doing it, no problem. But then I've sort of noticed that there's been a change, and companies have started to figure out that if they keep -- and I don't know if this is explicit or if it's just sort of like emerged from this whole thing... But if they keep open source developers poor, it's easier to grind them out and then take over the project. This happened to me with Mongrel, it happened to me with Node.js, it happens to a lot of programmers where, you know, if you just grind some dude out, then you can take his code and he can't complain about it, he doesn't have any power to say that you're taking advantage of him - nothing.
And then the other thing is they use it as a way to collaborate with other giant monopolies. So code is language, code is communication. If you've got people from Amazon and people from Google and people from Microsoft while working on Kubernetes, then they're illegally colluding. If they got together in a meeting and said "Hey, what we're gonna do is we're gonna collaborate on a project to commoditize hosting, so that way nobody can ever make money on it", that would be illegal. If they say, "Yeah, we're gonna collude to depress the price of ads", that would be illegal. But somehow, they're able to go and collude on an open source project that depresses the price of a complement they need.
What do you say when the foundation says "Well, we're a neutral base"? Because that's the response to that concern. It's like, "Oh, but we're neutral. It's a foundation, we're neutral, we have all the different acronyms (Technical Steering Committee, TCT)" and all that stuff to manage things, but guess who they work for?
Exactly. My favorite example is every time some IETF standard comes out, it's always to-do's from Google and someone from Mozilla. The standard - you look and it's like a Facebook person, a Google person, and then a Mozilla person, because they need someone from a non-profit to say that "Yeah, yeah, yeah, this isn't anything that was baked in a back-room, based on code we already have. This is totally about the community."
[00:35:54.04] So what's your response on neutral? Just that they employ people to be on these committees or the foundations?
Yeah, so my response is basically "Show me the cash." Let's say you join the Python Software Foundation, or Software Freedom Conservancy - I don't know if they do any of this, but if you're a member of that, if you're in the Python community, if your project is there, and then they're constantly begging for money but they have these giant corporations that are a part of it, then you not that they're not actually a part of the community that they claim to be.
I think the other thing would be if what you see is suddenly there's these directions that benefit the Googles and the Facebooks and whatnot, and sort of screw over the individual developers, then these are not neutral organizations. And I think that's the biggest thing. I think even a lot of these organizations, they pretty much exist just to make sure that these companies have free resources.
I think my favorite example is GitHub. GitHub hosts all this open source, and they have investors that invest in Google, and in other projects and companies and whatnot, and when you try to make money off GitHub - they've shut down projects that help developers make money on GitHub. And every time I've said, "Why does GitHub not have a Buy button?" Why can't you go to GitHub, as a company, and say "Yeah, I wanna just buy your license, and you give me premium support, or something like that." Because if they gave these developers easy access to revenue, to money, then all their investors would lose money, because the complements would suddenly go up in value. So now the price of the complement that they're using - the web server they use, the small orchestration framework or whatever they're using goes up, because "Oh, well if we want support, we've gotta go and pay this guy." But you should be paying that guy; you shouldn't be getting your support for free.
So what I've started to sort of realize is there seems to be a motivation or even a concerted effort to make it so that open source developers can't make money... And I believe the two things to that are open source developers kind of deserve it. There's a certain thing about, I don't know... The way they run their projects and the way they run their show seems to be that they're just open to it. And then also, the companies that are doing it - I don't know if it's super conscious, but I know in my case it was very conscious, that they were trying to make it so I couldn't make cash, and to take the project after I gave up... So I'm kind of curious if it's with other ones.
Let's look at the other side of the coin, because you haven't mentioned at all -- I mean, you mentioned Kubernetes, but you haven't mentioned at all the actual value-add that these corporations have given, freely... Like you said, it's a good corporate strategy to use it to commoditize your complements, but what that does is that actually lowers the playing field for everybody, and people are building very successful businesses and careers based on software that they never could have written themselves; they never could have afforded to build a Kubernetes, to build a TensorFlow, or these other things that wouldn't exist out in the open in he '90s, but now do, because of these reasons.
I mean, we always talk about letting your code do the talking, like bring software, bring value to the community, contribute back - all of these things, and I agree and I think that corporations should be offering money to people... And in some ways they are, in other ways they aren't. We're seeing more and more emphasis on that from the developer side of like not just being open source friendly, but actually being like a supported or a sustainer of open source from these corporations who are doing very well financially... But what about all the value-add? Because these are very huge software projects, and many people are making livings off of TensorFlow, that they just would have never had a chance on their own?
[00:40:03.20] Yeah, so in that respect it's that sort of enlightened self-interest that they're saying they do. I call it "fopen source", because it still serves the company. No matter what you do, what that company needs is what's gonna happen. And I'd be fine with it if they said "Yeah, this is an open source project you can use, but it's gonna be in our direction, okay?" So they come out and they say like "Hey, this is TensorFlow, and you know what? Google's gonna run it, and we do our thing; if you wanna contribute, that's cool, but what we do, what we want first is what comes out as what's gonna go in the project." But that's not what they do. What they do is they--
I think in many cases it's pretty clear... I mean, when we have these conversations on this show, we ask people "What kind of open source is this? Is this community-driven, is it a Google project that's open to be contributed to, but it's a Google direction?", and they're historically very clear on those things. Even -- hey, Changelog.com is open source, and we just say right on the front, like "This is our CMS. We have a product roadmap; you can contribute."
I feel like in a lot of readmes, a lot of open source website, it'll say right there... And not all the time, granted... We're just picking on Google as the example, but I don't think it's always unclear who's driving the project. I think it's usually pretty easy to either derive, or it's explicitly stated in many cases.
No, I think actually they kind of dance on the edge of it. I think what they wanna do is they wanna have sort of the community control that a sort of like [unintelligible 00:41:36.24] project has, but still also have their own control. It's never explicitly said "Look, if you want this project to go in a different direction, Google's gonna tell you no." They say, "Oh, come on, buddy, you can do it! You can contribute!", but really if you contributed something that was totally anti what Google wanted, they would shut it down.
Well, you would just fork it and give it a new name and do go your own way, right?
I suppose, but I'd bet you anything if you tried to do that, they would use the community to come after you. That's what happens all the time when you try to do those forks.
Do you have any for instances on that?
Do you remember FFmpeg?
I use it all the time.
Okay, it forked tons of times... Numerous projects, they fork... Oh, and Node. Node is a really good example. Node forked - remember they went and called it something-io, had a huge fight...
Yeah, yeah. All over the place, a massive fight, big internal -- and then Joyent had to change its steering, and its licensing, and everything to fight it... But they totally fought it. They had all sorts of propaganda going back and forth, yelling all sorts of stuff, fights... It was terrible, it almost destroyed Node, right?
We were pretty close to that one though. I think there were a lot of community members knee deep into the Io and Node fork and bringing the communities back together. From my perspective, I think there were plenty of community members that were what I would consider just peer-to-peer developers, not corporations that were -- I guess they were leading Io, but then they were also bringing it back to this recombination of Io/Node.
Right, after they got Joyent to sort of agree to their things. Because Joyent wasn't really running the project ethically; they were doing exactly what I was saying.
Yeah, they weren't running it well; they were only doing what they wanted and what benefitted them, but then claiming "Oh, this is a community. We're all friends!" So then Io forks for that very reason.
Isn't that a success story though? Isn't that just like the actual open source thing working? Like, okay, Joyent was letting it languish, they wanted to maintain and control - and I'm just going based on memory; this was years ago, so maybe the details are not particularly clear... But the maintainers, which was Mikeal Rogers and friends - I can't remember the other names, but we interviewed Mikeal Rogers about it... They forked, they forced Joyent's hand, a lot of changes happened... Like you said, there was definitely propaganda back and forth, there was communication back and forth, there were blog posts written, there were conversations had... At the end of the day, I think the forked team were very happy to recombine and keep it a singular community. I think they got a lot of things that they wanted out of it... So I just don't see how that's a failure of open source in terms of if things aren't going your way...
Well, I said "You just fork", and then you're saying that "Well, then they force you back in", or I can't remember exactly what you said...
They use the community against you.
So Joyent was worth like - what, maybe 10 million dollars? So Google is worth like 500 billion, right?
Yeah, it's definitely not apples to apples. That's why I'm asking for examples.
See, I think you don't get examples. I think this doesn't happen too often for two specific reasons. One is the companies that are doing this are HUGE. Can you imagine if you had an open source project and you decided you wanted to re-copyright it, remove your license, and that would affect the bottom line of like, say, Amazon and Google. Let's say there's something they're using, that you know they're using, you're not making money, you're desperate for work, they don't hire you, so you say "Screw this! You can't use my stuff anymore. You've gotta pay me." Now, I guarantee they're gonna pump probably 2-3 million dollars into lawyers and just bury you. So nobody tries it. They know they're not gonna be able to do anything about it. If you tried to fork Kubernetes, they're gonna use just the way programmers are to keep people there - the way the community is run, the way open source is sort of like considered a community thing, "How dare you...!?" They do this all the time. So I think you don't have examples because the system doesn't provide examples.
Then I think the second reason that all of this is allowed - I've gotta say, I'm not upset or really blaming the corporations for doing this, because the programmers let them. I can't say that -- corporations just do corporation. That's what they do. If they can make money anyway, that's what they do. I mean, they try to pretend they aren't that way, but that's the way it is, that's reality.
So actually, for a long time I didn't blame the open source projects, I didn't blame anyone or anything like that in running projects; I said "This is just corporations exploiting people." But then, when I started talking about how they sort of allowed this, I would get death threats if I criticized a project... And there was this whole other side to open source, and I just sort of started to see that, like, really, the reason these guys are getting exploited is because they're just a bunch of servile fascists. They just like things being in charge.
Is that open source though, or is that just the internet? Because the modern mentality has infected the internet.
Oh yeah, totally. But the thing that I think in open source -- oh, so this is one thing that's really interesting about fascism, is you find it happens whenever there's a new communication medium. You find rises in totalitarianism when there's a new way to talk to people. This happened when ReadIO came out, it came out when printing came out, it came out with -- every time there's a new way to talk to people, someone figures out how to exploit it to control the masses.
So the internet comes out, and suddenly you can use that whole propaganda tactic again to get a new batch of followers, and ta-dah! There you have it. But I think what I have started to find is that a lot of the people who are programmers kind of like that there's corporations taking advantage or harming the people that they consider their enemies in some ways, or that have a project they think is gonna become the winner, the programming language is gonna become a winner and wipe out every other programming language... And I'm like, "No, that's terrible. Why would you wanna wipe out every programming language? That's just awful."
[00:48:00.02] And I started to realize, look, I think the reason why these corporations can do all this stuff - they can collude illegally and nobody cares, and they can just destroy people's lives, and take-take-take and never give back and all these sorts of things - because you too have been saying, "Oh, well they gave out Kubernetes", right? But Kubernetes is not cash money to the people that wrote the open source that started their company. So really giving back is helping the programmers that made your stuff, not "Oh hey, thanks for making that stuff. Here's this thing you totally don't need..."
I actually asked Brendan Burns face-to-face at KubeCon last year this very question; he was one of the founders of Kubernetes. I said "Why don't you just keep it for yourself? Why didn't you turn it into a corporation yourself, or a for-profit thing?" He was like, "It would have never gone how it has." It wouldn't have been the ride that has been. He had his own reasons, but he was like "You know, that's not the way it needed to go." It was by choice to do it that way, and he was one of the founders of the project.
Yeah. Actually, I think one of the other reasons why you can't really make open source is I think the imagination is you can just be a dude in your bedroom, crank out some code and you're gonna get a job, or cash, or something like that... And I think no. I think now to run a very successful, large open source project is so expensive that no small group of people being underpaid, as a hobby, can do it.
I think you're now competing with a Google who has 500 billion dollars and can hire 1,000 people to work on their fopen source project... And you are not gonna make a competitor to that. You're not gonna be able to fork it, either.
If this is a project that takes 1,000 people, you and your three friends who hate it are gonna fork it? No, you're not gonna be able to do that. And then what, you're going to get a job?
I remember Google interviewed the dude who made Homebrew, and they didn't hire him. They used his software. And he can clearly make a piece of software and manage a team, which is way more important than any algorithm's knowledge... And they turned him down because he couldn't reverse a black tree. I'm thinking "That's insane." That's not the important part of making software. You can look that up... Like, "What's next? I don't get a job because I don't know the name of every king and queen in England?" It's just weird. I can look that up. Why would I bother learning that? I can look it up.
So for me, I think if -- yeah, Kubernetes totally made the right decision... Trying to run a project that large without support, without money... And then, venture capitalists won't invest in a lot of these projects, because if you invest money in a Kubernetes, that Kubernetes needs to have a return on investment.
Adam said "founders of Kubernetes" - it was founded inside of Google, so it wasn't like a startup that Google acquired.
They founded it, but they founded it as -- it was already owned by Google.
But technically, they could have not presented it. They really pushed it to get funding inside of Google. Maybe I'm wrong, but if I heard correctly, it sounded like there was a choice of it could have been a Google thing or a "us three guys (I think it was three) doing this originally." There was a choice there.
So I think GitLab is a very good example of someone working -- like, it's two people that mainly started it, and then they just ran it, and then it got successful enough that they were able to actually receive a pretty large VC investment. But it's different... You can go with your crappy app that you hacked up in a weekend on your phone, do a pitch deck; if you know the right VC's at this company, they'll be like "Yeah, cool, here's 20 million." So open source is a much, much higher amount of effort to prove that there's a market.
[00:51:55.27] I actually think if the guys who did Kubernetes went off to investors and said "Yeah, what we wanna do is create this thing that basically makes it so you can craft your own [unintelligible 00:52:04.06] infrastructure, whatever." They'd be like, "Hm... Nah, we don't wanna do that, because a bunch of our portfolio companies need free stuff."
Now I'm just thinking of all the different people who built -- I mean, another trend that we're tracking, and I don't disagree that it's easy in 2018... I think it was probably easier in 2016 to get VC funded in the Valley with an app or just in general with a good pitch deck... I hear it's getting harder; we're not in the Valley, I've never written a pitch deck, I don't know those things very well... But the other thing that we're saying - we've been tracking this trend of large organizations moving in - also is VC-funded open source projects, and we're coming out of our ears with them.
So that's a path that a lot of people are taking, and when I say we're coming out of our ears, maybe a dozen or so that I think of, of projects that are making that work, at least for now... We'll see if they can go for the long run, but...
More than before.
Yeah, more than before. Right. But I bet if you look at them, the order of operations was not "Hey VC, here's my pitch deck and zero code. Fund me so I can make this happen." I bet the order was "I already have 20 million users, 5,000 users, whatever. I've already got a working project that's already used by all these companies. Give me some money to make it a product." That's the difference. It is much, much harder to pitch open source to a VC.
Now, if you do any other kind of -- I mean, basically, I remember if you were living in New York City and you wanted to make money in software, the easiest way was to make something banks wanted, and write it in Java... Because they would just suck that up, no problem. It was like "Oh yeah, you have a Java-based, web sphere-based thing for managing doors? COOL! We'll buy that!" [laughter] If you wanted Ruby - "No. No, that doesn't run on our infrastructure that we spent 20 billion dollars on."
I think in a lot of cases -- I really think that it used to be there was this sort of like contract where if you did open source, you at least could get a job, because that demonstrated that you could work... And they sort of changed that up. Now I think the contract is if you do open source, you'd better treat it like a job. You've gotta work for free, but act like you're a professional. They kind of slightly inverted it.
And then when you don't really wanna work for free, like when you go "No, screw you. I don't wanna work for free. That's ridiculous. I don't wanna work for free", they're like "Oh, you're not a team player. You're a jerk." And that happens a lot. And all of that is part of this strategy. I don't know if anyone has articulated it as a strategy, but the strategy is if you keep the cost and the amount of money that these developers make down, then it's easier to take their project and use it, and they can't fight you back, they can't sue you in court if you violate the GPL, all these things, and then you commoditize your complement, and off to the races.
Yeah, I doubt if you digged far enough into the vaults of these organizations you're gonna find that gameplan written down in a briefing that somebody proposed to their upper management as a gameplan.
Yeah. You know, I will say, based on the documents that we saw from Microsoft about their "embrace and extend" strategy - I remember there were things that they had said when they got sued... Remember back in the day a whole bunch of these e-mails came out? And we know what their strategy is now. I predict you actually are gonna see sort of a similar "embrace and extend" strategy come out of Google and Amazon and whatnot... And we're gonna find out that actually no, they've just been sort of exploiting open source to pad their pockets.
[00:55:56.22] But again, oh well, I mean, that's companies. Why are we surprised by that? I'm not surprised by that. And then I feel open source developers, programmers in general I feel are very - I don't know why, but I think they're very fascist... Like servile fascists.
Totalitarianism, right? Okay, so totalitarianism is basically the belief that somebody else should control things... And that's fine; somebody else controls things seems to be like, you know, governments, societies, religions, whatever. But then they add on "And anyone who disagrees with me is the enemy and should be destroyed." So that's kind of like the simplest way to say "That's totalitarianism."
And then I like to say fascism is just totalitarianism for profit. I just put that out there, I'm like "No, if you're doing totalitarianism, you create an us vs. them, and you create an enemy, and then you allow your followers to attack that enemy, and then you do it so that way you can make more money - you're a fascist."
What I see is a whole bunch of science -- I've been talking about this since like around 2010. I think most open source projects are run kind of like little fascist regimes. I mean, Python and Linux call themselves like "the benevolent dictator for like"? They say it's a joke, but I don't know... Right? Those guys are kind of jerks, so it can't be that it's all a joke.
What I see is I see these programmers who like somebody else being in charge, they like watching their rivals be demolished or exploited or slandered, and they assume it will never happen to them because they are part of the community, they're a part of it... So they serve this sort of fascism. And it's a very gentle fascism; it's not like they're going out on the streets and killing people. But just from my own experience, you speak up about something and I get death threats, so I don't know, I kind of call it like I see it. If I see a bunch of people freaking out because I don't like Python, and I see projects who call someone the enemy...
So what I see is, yeah, sure, I think corporations are taking advantage of programmers, but I think there's so many servile fascists in programming that they kind of agree with it and they kind of like it, and so there's no way to fix it. There's no way you're gonna stop them. There's no fix, it's just how they are, and the only way to fix it for yourself is just don't go into that. Don't try to make money in open source. Try to maybe build up a career, but stay very far away from the communities, don't identify yourself with any one language or project or anything like that, and just basically play the game and try to get out and get ahead without getting hurt.
Zed, is the cat-v link to Rails is a Ghetto - is that the canonical? Google says it is, I'm just curious if that's what you--
Harmful.cat-v.org is where the main Rail is a Ghetto links to; it's by "Zed's so effing awesome."
Actually, I think that shouldn't be out there.
Is that rehosted, or something?
No, I took it down, so I'm gonna have to sue that person and make him take it down.
Was it on your personal site back then?
Yeah, it was on my personal site.
No, I think people should be allowed to move on with their lives, right?
It's not supposed to be on the internet anymore, and we can't link to it anywhere?
Go ahead and link wherever you want, that's fine. It is ancient history in a lot of ways... Like, yeah, I wrote that, but that's like ten years ago, right?
It's gotta be more than ten.
Yeah, so it's time to move on.
I was a way different person in 2007, just so you know... So I agree with you.
Yeah, me too.
Oh, we all were.
I'm thinking just more for like if the listeners are like "What the heck were they talking about? Is there a link to it?" Because we will get yelled at for not having links to things, especially something they wanna dig into. It's like, "Well..."
I would say go ahead. You know, I am sort of honest about myself, and I did write that, so if you link to it, it's no problem.
I'm gonna contact this person and tell him to take it down, because I own the copyright. You can also probably find it on archive.org, and a few other things... But yeah, I mean, if you do, I would say preface it with "Zed took this down because he wanted to move on with his life. This is Zed circa 2008, and he is different."
Because I would say, yeah, I was making fun of people who are overweight in there, and I don't agree with that; I was saying a lot of pretty terrible things. But at the time, it was sort of like this cathartic -- like, I just wrote how I felt at the time, and part of that was I actually was being threatened by certain people, and stuff like that. So a lot of the things that I say in there are at specific people, but I don't believe in making fun of someone's disabilities, or anything like that. I think there's some things in there that I actually am ashamed of, so I took it down.
We don't have to link to it... I mean, they can google it. One thing, Zed, for us, is we're definitely about lifting people up rather than putting people down, so our goal is not to shame you, nor do we want to perpetuate you being shamed... So it could be googled, and that's something that's not exactly pertinent to our conversation, so I have no concerns about linking to it. I just wanna make sure if we do, we link to the right place; that's what my concern was, not that we can find you and get you.
Yeah, it's not problem. But you know, I will say, I have no problem with people disagreeing with me and telling me why they disagree with me. I don't know, I come from a different era, I think, where like you can disagree with someone and not hate them or think they're a terrible person. You can have wonderful disagreeing conversations, but I think what happens - I don't know if it's just a thing about Americans (I don't know), or the internet... I think they take disagreement to be an argument, and sort of like an attack from an enemy. I'm very different, I'm like "Well, no, I can disagree with you and I can still like you, and [unintelligible 01:03:39.10]
Right, I think the line between disagreement and hate and dislike has gotten to some degree closer.
Because I don't agree with what you say doesn't mean I don't like you, or I can't show you love, or be kind, or help you, or serve you, or do something for you, or be there for you when you need somebody. Because I don't like the way you do things doesn't mean I don't like you.
But you know, people think that way.
[01:04:07.15] I know, I don't get it, too... I think, Zed, probably just looking at your career, I probably trail you by 5 or 10 years maybe, because you were writing Mongrel I was just learning how to write code back then...
So you said maybe it's your age, or maybe just the generation that you're from, but like... I don't get offended when people disagree with me, and vice versa. I just feel like that's life, like discourse; that's how we learn and grow, and live. We don't have to at all. Some of that leads back into the show, because I see what you're saying, specifically with regards to this -- maybe we should just start the show, but... The developer fascism thing - I identify as a developer, but I don't see those things in myself and I don't see those things in... Like, I see nuanced what you're saying, and I feel like you're saying it in a blanketed, almost matter of fact way that I feel is maybe overstepping... Maybe you're just matter of factly stating your conclusions of something you admit is nuanced, and to a minor degree.
We should start there, because we almost ended that last segment with me saying that I disagree with Zed.
I mean, if we didn't have to end the segment for time-wise, I would said--
You just would have said "I disagree" and then end it. [laughs]
I just don't agree... [laughs] Because that's your experience.
Yeah, so this is the thing - I'm not saying it's a blanket statement on every programmer...
However, I do think that it is very endemic in how the tools work, how the writing has been, how the industry has been run... I think it's just there so much, it's so everywhere that they don't even notice it a lot of times. And also, I think a lot of these people are like "Oh, I'm totally not like that", and then they see other people being like that and they say nothing, and I think that's the thing. I've never ever had anyone stand up to an abuser of me and say "Hey, leave him alone. He's just saying he doesn't like this, or he doesn't like Python. You don't have to be abusive." I've never seen anyone say that, ever.
So there's two types. When I say a servile fascist, I don't mean someone who's out there doing it -- I mean, it can be someone who actually really enjoys it and supports the regime, and goes along with it, and never disagrees with them, or someone who allows the regime to do what it's doing, or the corporation doing what it's doing, and then just assumes "Well, it doesn't relate to me, so I'm not gonna do anything about it. I'm not gonna stand up and help that person."
Yeah, let me present this angle, because -- and I've never been around the circles wherein you are disagreeing with Python and somebody's attacking you, so I can't give the contextual thing... But I think I was reading Rails is a Ghetto back in '08 or whatever, and I was in the Rails community back then... And my take, as somebody who was completely on the outside, but in the community to a certain degree - and this may be completely myopic - but Zed is a guy who does not need anybody's help in terms of staying up for himself. Like, you do very well, and you represent your side very well and strongly, so I wonder if a lot of the inaction that you've experienced - which I'm not necessarily excusing it and saying nobody needs to help you our or anything, but on the internet, you come across as somebody who can very well take care of himself, and so maybe that means people just remain silent, because they think "Well, people are attacking Zed, and Zed is defending himself or attacking back", and it's just kind of a side show.
[01:07:56.16] I agree. I actually tell people "Don't help me", because the collateral damage to people who help me is pretty great. So I tell people "Hey, don't worry. I can take care of myself." But if we're talking about the general population, open source projects, things like that, then you don't really see this anywhere.
I'll give you a really good example from Python. There was this project by Aaron Swartz called web.py. And web.py was great. They made Reddit with it; originally, they did Reddit in Scheme, and then I guess they did it in this, and Aaron Swartz was working there. And it was awesome; it was so cool, it worked really well. Very tiny, very small.
At one point, I guess Guido (the benevolent dictator for life for Python) tried it and he decided that it was terrible, because it had too much magic. So rather than someone saying "Hey, aren't you supposed to support people in the community and not trash people's projects? Because you are supposed to be the benevolent dictator for life..." Everyone decided that his project was terrible, they said "Don't use it." Every time you'd try to use it, they went "Oh, it's terrible." And then they banished magic through all of Python. And by magic, they just meant usability, really. Like, you know, shorter names for function calls... I'm serious.
Really? I thought it was just metaprogramming...
No... Like, they still did metaprogramming. Go look at Django - its ORM is tons of metaprogramming... But what they did is to make it not seem like magic, you had to type "render to template", and then there was another one "render to template with session or context." It was crazy. I'm like "Why can't I just have render?" "Oh, well that's magic." I'm like "No, it's not. It's just easier to use."
And you can also say magic is just -- like, what's that quote...? "Any sufficiently advanced technology is indistinguishable from magic." So you can say the opposite is the only reason you think something's magic is because you're uneducated. So these are people who are saying like "That's magic!" I'm like, "Well, you've just gotta learn how it's done, that's all." If they're making it easier to use, and you can go read the code... The code is there.
So I think that's a really good example. Nobody really stood up for him. I remember I was one of the few people who were like "That's stupid. This thing works great." I put it in my book - people ranted at me. "Why are you putting it in your book? You should choose another project that doesn't have any magic." I'm like, okay, this is a developer who worked on stuff; he's a part of your community, and you're allowing someone to just blanket the side that this guy is terrible for writing his project and nobody should use it, and the way he wrote it should be banished? And you're agreeing with that and nobody's telling the benevolent dictator for life "Um, why are you doing that? That's wrong. He can make his projects, and... Yeah."
What was the specific things done there? Because on the other side of that coin, Guido has the right to his opinion on software, and because of his position, it makes sense that people respect his opinion... So there's like a natural leadership there that doesn't seem counter-productive. And again, I'm missing the detailed context of like "And then he did this, and it was mean." Was he criticizing software based on his own ideas of the way software should be written? That seems like a constructive thing to do.
Because it's just style-based, or...?
No, it was because he didn't like the way that it used these features of Python that were metaprogramming. That's it. That was all it was.
Didn't he write those features?
Yeah, that's the thing.
He should have left the metaprogramming out maybe.
It's like, well okay, if you don't like that, then just don't have that ability, right? What it was though is some projects could do magic, but not this project could do magic. He had no problem with magic in all these other things, he has no problem with magic being done throughout the Python libraries... He has no problem with this magic. Just this one guy's.
[01:11:50.05] And then, the actual point of the discussion - yeah, you're right, Guido is in charge, whatever. We're talking about people being servile fascists. So everyone who just went "Sure. Yup. Alrighty" and agreed with him and then also went on the offensive and banished all magic from their projects, and totally believed him without thinking about it, are what I'm talking about. Those are the people who are making it so that it's easy to exploit open source projects and take advantage of them... Because a corporation comes out and does whatever it wants, and everyone's like "Yup, sure. Okay. Yup, I agree that regime should be in charge and everyone who disagrees should be destroyed."
[laughs] It's kind of like brainwashing or mindless followership.
Yes, it is. And the thing is the slickest form of that is the kind where people don't realize they are, and they just sort of believe it, and it's endemic everywhere, and they just think that's normal.
Well, you had me worried, because I was worried that I was some of these people, not even knowing it... I'm not, obviously, but you had me concerned that somewhat I was brainwashed and I'm just unwillingly out there as a fascist.
Yeah, and you know, actually, I think fascist is the wrong word, but there's not much of another word. I could say totalitarianism, but that's typically not with a profit motive. The reason all these people are doing this is they all hope to make a piece of the pie; they all hope to make some amount of money off of it, and historically that's a thing about fascism - there's always this corporate element to it, and things like that. But I think it's gotta have a new word. I could just say they're just totalitarians, but there's a difference between being a totalitarianist -- they're trying to do it without trying to make any money, and they are true believers. But all these people are trying to make money, they want a piece of the pie. So that's the only reason why I say they are.
But in the same way, I mean, yeah, sure, not everyone in a fascist regime is totally fascist... Yeah, they're not totally fascist, but if they're allowing it to happen, maybe they're servile. They're just sort of like going along with it, because "Hey, they're not coming after me."
So I'm trying to think of some of the things here... So self-identification seems to be a -- I'm trying to think of the drivers of this, and I'm... You have a lot more experience with maybe pointing this out in your own mind, or pinpointing like "That's what this activity is" than I do, so I'm like very much processing and trying to think of examples, because we've been very active in open source for a long time, and having these conversations... So I can see some of what you're saying, but I haven't been part of like watching an attack happen and then nobody saying anything type of thing...
I can give you a super good example.
I came out and I was gonna do a new Python 3 book. I tried to use it, and it was slower; a lot of the features were not very good, and I would test it about every year... So finally it got to where I could kind of do it, so I said, "Alright, I'm gonna do a Python 3 book, but I really don't agree how the project is going." And I would tell people this all the time, and they would shut me down... So I wrote a thing, I said "Listen, I don't use Python 3. I'm gonna do a book on it, but it's not well run, it's not well written, it's basically just not a good project." And this was my opinion as an educator, the person who wrote one of the main Python books, a member of the community for a while... Everything.
And immediately after I wrote it, a few high profile members of the PSF proceeded to go to all these people who wrote books and try to get my book removed as a mention in their book. People came to me, and they were like "Yeah, so-and-so-and-so are going around - here's their chat - trying to get people to stop using your book because you don't like Python 3." That's it. Just that I don't like Python 3, that's all.
I asked my friends, or the people who would tell me this, I'm like "Okay, well why don't you say something about it?" and they're like "Oh, I'm afraid. I'm scared that I won't be able to work, or that they'll come after me next." So even people who claimed to be my best friend can't stand up to these people, this kind of like "Oh, if you criticize our project, you're the enemy and we're gonna go after you, because you might make it so we can't make money on it."
[01:15:52.11] My favorite was someone tried to write a blog post saying I'm unqualified to teach Python 3. This person previously had recommended my book, so I'm kind of like "Okay, so does that mean Python 3 is unteachable? Because if I can't teach Python 3, then I don't know if anyone can teach Python 3." [laughs]
Because you were teaching Python 2 successfully.
Yeah. Like, what's the huge difference in my -- and this person was recommending my books before this, so either they were lying about my books being good and they were giving them out, or they're lying about Python 3 being awesome and I'm just a terrible teacher.
But not a single person, I didn't read a single blog post from anyone, not a single e-mail, nothing, even my best friends didn't stand up for me. Nobody came out. People told me that they would talk to members of the PSF and they'd say like "Yeah, what do you think about Zed's post?" and members in the PSF would be like "Oh, Zed was the best thing that happened to Python, but I'm never gonna say that, because it will be really bad for me."
So your best friends, did you -- so with my best friends, if a stranger offends me, it's kind of like, whatever... Especially someone on the internet. Not that it doesn't hurt, but it's not going to affect my day-to-day. But if my best friends don't stand up for me, I would turn to them and say "What's up with this? Why aren't you...?
So did you talk to them? What did they say? Why aren't they going to come to your side?
In a lot of ways, I can't blame them, because this would be their livelihood gone. If they stood up to the PSF and did what I did, they wouldn't be--
So if they say "We're with Zed", they're gonna lose their jobs, or what?
That's what they worry, yeah; they're worried they won't get their consulting gigs, they won't get their jobs, they'll be banned from the PSF... Because that's exactly what they're doing to me. So they're like "Oh, I don't want that happen to me. I'm gonna tell Zed it's going on, but I'm not gonna stand up for him. I can't do that."
This is very common, like, all the time. I'm in a unique position, because -- I mean, after I wrote that and they tried to ban me, my sales went up. It didn't do anything to me. I work very hard to make sure that I put out something good, that helps a lot of people, and it works; I try to make it work as best I can... So it didn't impact my sales, didn't impact my traffic, didn't impact anything, and all their plans failed. I mean, "So what? You take me out of other people's books. Big deal." But it still kind of hurt that nobody stood up to take care of me, or at least just... I mean, my friend didn't even tell them "You're an a*****e." If someone did that to my friend, I'd be like "Oh, no, we're gonna have a problem here." I would just unload on them.
That happens way more often than people wanna admit, but I think it doesn't happen too often, because the culture of programming now is that everyone just kind of goes with the projects, they're all very servile, and then when the next one comes along, they just leave, rather than trying to fix or change or contribute in that way in their previous project.
What do you think it is? I mean, not saying that you deserve this, but what do you think it is that you've done, or been involved in or around, that may make people feel this way about you?
I think it started with Rails. That's where I marked the shift. Because before that, I feel like people in open source had a difference attitude about it, that was much more collaborative or discourse-based. You could totally disagree with the way someone did something. I would say Java, then Rails changed it to be -- you could use this sort of marketing tactic that was really similar to kind of like a fascist propaganda to convince people to join you and become rabid fans. And I think for me, I just have a very strong streak against that... So when I speak out against it, it obviously threatens what they're doing, and also it kind of questions people's core identities. Because the whole point of running a project like this, where there's fascist-style propaganda, is you become their core identity. So if there's this one guy who comes out and he's like "Look, that's wrong. Somebody shouldn't do that to you", they're like "No, no, you're wrong!" and they get really angry.
[01:20:06.20] And it's understandable. I don't actually hate any of the people who necessarily don't like what I have to say. I don't really hate them. The only people I really have a problem with are people who send me death threats because I don't like Haskell. [laughter]
Have you actually gotten death threats because of that?
Yes! You don't understand, like --
I don't understand, I'm trying to understand over here...
It's so weird, right?
That is weird.
Look, you can think I'm a jerk, right? I'm totally fine with that. You can disagree with what I say, I'm totally fine with that. But the response has to match the offense.
Yes, commensurate. Exactly.
If I don't like Haskell, you go [unintelligible 01:20:42.13] Maybe you can say "I don't like your face." Alright, that's weird, but okay. But if I go "I don't like Haskell" and then you send me this insane e-mail about how I should kill myself, then that's kind of a disconnect. All I said was one tweet where I made fun of Haskell, and you want me to kill myself. That's a huge distance between what I did wrong to you and what you think should happen to me.
Well, since you brought it back to Twitter, this tweet storm we talked through here - which we didn't go through all of them, and I'm not sure we can actually link to it, because your account is protected, at least now...
We do have a version we could PDF and host it if that's okay with you, but aside from that...
Yeah, go for it.
...what was the response with-- I mean, you said lots of controversial stuff in this tweet storm... So any death threats? Any threats at all? What was the response?
No, that's the thing that I find very interesting. I think all of the responses were positive. The only responses I got were mostly along the lines of the libertarian flair of "Well, that's corporations." And that's about it... Which si what got me thinking like "Wait, you don't have a problem with this? That's kind of weird... But okay."
But the weirdest response that I got was all these people came out and they said "Hey, we're gonna try and solve that with blockchain." You wouldn't believe it.
Oh, that's because blockchain solves all problems...
Yeah, yeah. No, this was bizarre - I had these people who were like, yeah, what's gonna happen is you put your project in my blockchain, my licensing open source blockchain, and then people say "Yeah, I bought that thing. I'm gonna use that thing", and then you get coins. So when people use your software, you get coins. So I'm like "Okay, can I just get cash? Because I've gotta pay rent. I've gotta buy food." I can't use an open source coin down at the Walmart, so can I just get some cash money? And they go, "Oh, well, I don't think anyone would use that." They think that they're only gonna use a blockchain-based licensing system, and I'm kind of like "No, I think exchanging money for licenses has been around probably as long as there's been humans, so I think people will be okay with that. I'll just throw up a PayPal, and then pay me money." That was the weirdest one. Everyone did that.
Well, when all you have is a hammer, and that hammer spits out coins, everything looks like a nail. You're just like, "Um, blockchain that. Get some coins."
So one thing I did think... And I don't wanna ruin someone's -- like, if you've got an idea, go with it. I'm probably not a very good predictor of what's gonna take off. Try blockchain; if people use it and programmers are getting paid, then I'm happy with that. Go for it. I don't think it's gonna happen, but whatever.
The one thing I did think is one problem is if you're an organization that's really huge and you would like to pay developers, you don't know what software you're using. It's really difficult to account for -- let's say you're running thousands of machines to power your website, and you know that there's some hidden GPL in there. You know there's GPL-ed code in there. So what you could do is - a blockchain's only really useful thing would be you could register code into it, and then organizations could use that registration to confirm whether they are complying with licenses, whether they need to release software or whether they need to contact you and get a license. I think that would be something viable.
[01:24:13.20] You would probably just have to sell that tool to larger organizations, and then offer programmers -- say "Yeah, what we'll do is we'll send you a report with all these companies that are willing to say 'Yeah, we're using your GPL. We made these changes. Here you go.' and act as a proxy and solve that problem for them." But otherwise, I don't know; if I'm getting coins, I don't think I can eat. I want dollar bills, you know? The best [unintelligible 01:24:40.07]
Well, I mean, I can agree on one part where the blockchain makes sense as a ledger, but the coin part obviously is the stretch. It's like "Well, not really a lot of value there." And there's a lot of volatility.
Yeah. Well, and the ledger isn't the hard part of the equation, right? The ledger is workable.
That's easy, yeah.
It's like the social constructs, and it's the industry...
Yeah, there's a lot bigger problems to solve than how you're gonna prove that this is happening in a decentralized fashion.
And Tether somehow makes it -- you know, tying it to the real world...
So one of the things that you would get with a blockchain solution is companies are kind of really scared to announce what tech they use, because that's how competitors can compete with them. So if they're able to do this locally, with this distributed database, and then reach out to the people that they owe code or money to, then they might be into that.
So they don't have to make calls out to some central repository that's tracking everything they use. They can keep that a secret.
Which you can run data analysis on, [unintelligible 01:25:51.07] algorithms, and ranking...
Yeah. Can you imagine - if you're a company and you're doing this; everyone is checking their software, and you've got a central database, you know every company and all the things they're running. Then your competitor buys that company, and you're like "Oh man, now they know everything we run." So if it's like blockchain distributed, you just do that locally... You're like, "Okay, cool." People are registering their source code into it, and then you look, you go "Oh, great." Then the next step is you go and hand that person money or code. Like if it's GPL, you give them their code back, or you say "Hey, we don't wanna give you your code back. Can we just pay you cash?" A quick exchange of licenses and you're done.
So in your opinion, if every corporation were to agree that the best thing they could do with regard to open source software is to give cash money - in whatever denomination the developer desires, according to their locality - to the people who are writing the open source software that the company runs on, what would be the threshold...? Are you talking like a percentage of net revenue? How would that break out, that would make Zed happy, like "Okay, now everything's right in the world because these companies are doing X"? What would X look like?
If you take, say, a company like Google, they're worth like 500-600 billion. 1% would be like 50 billion dollars. I think that's more money than all of the open source industry ever made in its entire existence, right? So it wouldn't take much. You could do fractions. Google could go down to one billion dollars, and it would still be so much money. So it doesn't have to be very much. I don't think this will ever happen, by the way.
That's why I said -- this is in your fantasy.
It's NEVER gonna happen. I think actually what's gonna happen is people are just gonna stop making open source, and then these companies are gonna be fairly desperate. But I think if they donated fractions of percentage and they just gave it as direct money to developers, or worked it in a system where like "Hey, we just wanna pay you to work on this, doing exactly what you're doing. We'll just pay you a salary as an employee." We used to do that, but it doesn't happen as much anymore.
We've definitely seen that happen... It's something I would love to see happen a lot more.
[01:28:07.27] A lot more, right? A typical strategy is "Hey, buddy. You wanna come work on your open source? Oh, sorry, can you go move that CSS button over two pixels left? Don't work on your open source." It's like a bait and switch.
Once you get there, you're not working on it anymore?
Totally not. You're working on whatever is gonna make the company money. So I think if they don't start making it so that open source is a viable career choice, where I can say "I'm an open source programmer. I work on this project, and this project gets this much from these companies that use the software to keep it going", and then that open source project/company hires people to keep working on it... Then I think they'll avoid the problem in the future that I suspect, which is all of this just collapses. It's not like it's gonna be a violent revolution or anything, it's just people aren't gonna make open source. They're gonna be like "I don't wanna be like that guy who when he died he went on GoFundMe to beg money for his funeral. I wanna be someone who's got a job, and starts my own company, and puts stuff on the internet myself, and making my own apps. I don't wanna work for free."
Well, it's been a fun trip down this lane with you, Zed, going back to the beginning of your open source career, on through to this (I guess) happy place you are. You seem happy, right?
Mostly happy. You've got your rants, but you're happy. You're making money, you've got your books, you're doing education, you're helping developers...
Making music, making art...
I think one of the things that people misunderstand - they sort of see a one-sided person in everyone. We're very good at stereotyping people into one thing.
So they think if I disagree with the way open source is run, that I'm an angry person, I totally hate it, I'm miserable... But it's not true; it's just thoughts, disagreements... I maybe wear them a little strongly, but it doesn't mean I'm in my bathroom trying to cut myself to the latest Cigarettes After Sex album, or something... I'm not doing that. I'm just typing thoughts, I'm fairly calm, and expressing myself. And generally, I'm very happy. I think there's been times when working in the software industry has been hard, but I would consider myself pretty lucky that I've managed to dodge a lot of the problems that I talk about because I start becoming aware of them pretty early, and turned that into a viable way to keep myself employed and able to work and produce something useful, and also then learn hobbies like painting and whatnot.
[01:30:47.06] Well, Zed, thank you so much for coming on with us. It's been a blast. You came on the show before, I didn't get a chance to talk to you -- it was so long ago... But to now finally get a chance to circle back, eight years later almost (ish), it's been a blast. Thank you so much for sharing what you've shared here, and keep the tweet storms coming. I like that stuff.
He's off Twitter, man. Zed, what's the best way people can get a hold of you? If they're not going to attack you, or give you death threats, or anything like that... You're open to conversation, right?
We've had a great conversation here... So is it e-mail? What's the best way -- folks can't catch you on Twitter anymore; how should they get in touch?
What you can do is I have my blog, ZedShaw.com. That's kind of my personal little thing; you can go there, pop a comment in... I'll probably write a little blog post about this and announce it, so that way people can go and comment. And if you wanna talk to me about books and stuff like that, you can go to @LZSTHW (Learn Zed Shaw The Hard Way). That's my Twitter.
Yeah, that's pretty much it. If you wanna buy my books, I would really appreciate it. You can go to LearnCodeTheHardWay.org and you can get them there. I'm also in the future gonna be producing a painting book, a painting course, totally free. I'm gonna take the money that I make from my programming books and I'm gonna see if I can do some free painting education... So just putting stuff up on YouTube, and totally free for people to learn how to paint... Because I love it, and it has helped me so much. It's one of the best things I've ever done in my life, and it's really not that hard. I think if people are making money off piles of garbage and that's considered art, then you can paint some really crappy oil paintings and it's totally art, and it's fun.
Our transcripts are open source on GitHub. Improvements are welcome. 💚