CMOS #8: Lynn 'Cyrin' Conway on Bundler, RubyGems and Ruby Together
CyrinConway. Hello Lynn, how are you? How are you?
CyrinConway everywhere but websites like to not have a proper name field so a lot of it's that. So I picked Lynn first, just independently of my last name, and only changed my first name, not changed my last name. So I changed my first name to Lynn and it ended up Lynn Conway, which coincidentally is also the name of another trans-lesbian web developer. So that was nice, I just ran into that, and I was just,
Oh, well should I change it? No, it's kind of cool to have the same name.
So I started to try to build a web developer program and I realized that you can't Google me and find me through
Lynn Conway, I mean maybe in like 20 years from now, but not right now. So I picked
Lynn Cyrin, and within two days of using that, I got the whole front page of Google, so now I'm good. I'm safe, you can find me on the internet.
Oh yeah, do you want to meet the other Lynn Conway, I know her?I was,
Oh it would be very cool to know the other Lynn Conway!I don't have any significant relationship but I said,
Oh yeah, cool, we share all these things and have the same name, that's kind of nice, so, yeah.
So I was writing code right about the same time I started getting into queerness stuff and I moved to San Francisco because I'm gay, but also San Francisco is where all the tech is. It was just an accident. I just happened to find myself in San Francisco, because I'm gay, and all of a sudden, that's where all of the tech companies are! And I just learned Python because there's a lot of Python in NASA, so I went there and I started doing Python in a lot of these, there's a lot of work and stuff at the intersection of what I did in AE and coding. So I started going to a lot of these Python Ladies meetings, or queer people writing whatever. And that's how that started.
Open source didn't come up as naturally, I just ran into an open source repository and I liked the idea of open source, it just appealed to me, like innately, at such a level. Since then I've become this huge open source. I would get all of the conferences I've talked at, except AlterConf, which is a diversity conference, they've all been like Open Source Bridge and other alternate conferences. Because I'm just really about open source, I open source all of my stuff, even stuff that people wouldn't ever want to look at, I just put it open source anyway because,
Why not? I don't have the
Why would I open source this?, for me it's
Give me an explicit reason to not open source this, because otherwise I will.
How much of my work can be open sourced?That's always in my interview questions, when I talk to a new company. But yeah, you can see all my code. I feel that as an interview, that's the best advantage of working so much in open source, is that you can show employers,
This is specifically what I've written.This is everything I've written, in my entire career, you know?
If you want to show to the next employer, something that you do, then you have to do something in open source.Because you can't usually share what you do at your company.
So there's three different tools, which finally are being merged a bunch. RubyGems, RubyGems.org, and Bundler all have the same managing organization, in Ruby Together. This used to not be the case. There used to be kind of a warring-factions thing going on between Bundler and RubyGems, it was a mess. Anyway, now someone, one person, owns all three of them, and they're trying to make all of this more easy to understand. Sounds nice.
So if you're on Linux and you want to install a simple Gem file with no requirements, no optional dependencies, I mean no requirement groups, no optional dependencies, nothing like that, then everything's fine. But when you start getting into, like you want to have something different on development, than on production, then that's, it gets kind of messy, there's still some features to work out there.
If you have optional requirements, there's actually a feature difference that went out on Bundler, about a week ago, where if you had an optional requirement, it would still automatically require them without you having to tell it to do so. And apparently in the past week, invisibly, that broke. Where now in the optional requirements, you have to explicitly require them.
So it's edge-case things. Also, if you're on anything but Linux, things might just break sometimes. Especially if you're on Java, JRuby is a really big thing and things in JRuby break Bundler all the time. Like every week, there's a new way that JRuby has broken Bundler.
For most people it's fine, but the more edge-cases you stack on, the more stuff there is to do. I don't actually code, I haven't written a single line of Ruby code for Bundler or RubyGems, I'm the project manager, so my main thing is I have a reactive job. I watch all of the Slack channels, I see what's happening, I report to other people what's happening, I label things, I organize things, and make sure people know what's up, I write the RubyGems monthly updates, I watch all of the Slack channels, all of them, all month. So I have enough information to write the monthly update so everyone else can know what happens, without having to watch every Slack channel. So those sorts of things. I'm basically on GitHub all day. I'm never on command-line and I'm always on GitHub, as my work.
So I have the great job of making sure the open source contributors have a nice time contributing, because if they don't have a nice time, they can just leave, right? So that's how most of the work happens, I do my best to make sure that all of the issues are well-sorted, I try to respond to the more-irate users or point them to where they need to be, when I can, when I have time and hours in the day. Those are things I do to try to make sure that the non-paid contributors can do their best and they aren't having lots of issues, and they get turned off by the source code, and those sorts of things. So that's my general job as project manager, and that's how I guide people to the work that I want them to do.
Ruby Together is, I think this is actually how it's legally set up, Ruby Together is basically André, he's the director of Ruby Together and he's a bunch of other things. So André used to be working on Bundler for free, bundler and RubyGems for free, and he was just working on it, right, because it's open source and he had time, so he was just working on Bundler and RubyGems.
And it, this was back in the end of the warring-faction days, RubyGems versus Bundler days. RubyGems seemed to push something that broke Bundler's code, almost on purpose, and they wouldn't ask, they wouldn't tell them first. So suddenly people could use RubyGems but they couldn't use Bundler, and so Bundler would have to catch up, or the Bundler people would make RubyGems, like this kept happening back and forth.
And then André started working on both of them and something happened, where RubyGems was down for three days, and a lot of big companies lost a lot of money, and André was the one who got it back up. About a week after that, people started being,
Hey, could we pay you money to make sure you're always around, so when it goes down, it's just down for a few hours, not three days? Three days without being able to install any new packages is huge,
What, the package-manager is down? That doesn't even make any sense. That's definitely something people wanted to pay for, so it just started almost by accident, with people going to my boss with,
Hey, we'll give you money for this.
So he got that enough that he made a non-profit out of it and now there's six of us, we go, we help out, we help out on a few other things like smaller libraries, there's some people working on VCR, and a bunch of little tools. But mostly it was that people got really tired of RubyGems and Bundler going down, so they started paying money to André, and then André made a non-profit, and so now this is Ruby Together.