JAMES: All right so, I’m reworking my slides.
JOSH: I’m still *working* my slides.
DAVID: I’m still trying to figure out what my slide should be. I thought I want it to be — but now I’m thinking about doing slides on Rails career anti-patterns.
[This podcast is sponsored by New Relic. To track and optimize your application performance go to Rubyrogues.com/newrelic.]
[This podcast is also sponsored by RailsThemes.com. Have an app only could love? Then check out RailsThemes.com. They’re also giving out some pretty cool swag at RailsConf. So find them, get some, and thank them for sponsoring Ruby Rogues.]
CHUCK: Hey everybody and welcome to Episode 51 of Ruby Rogues Podcast. This week on our panel we have David Brady.
DAVID: Hey everybody! David Brady.
CHUCK: We also have James Edward Gray II.
JAMES: I am not Open Source.
CHUCK: We also have Josh Susser.
JOSH: I’m completely proprietary.
CHUCK: And I’m Charles Max Wood and I’m wondering what color your bike shed is? So let’s go ahead and get started. We’re gonna be talking about ‘Getting Started with Open Source’ and I know there are a lot of opinions about this. So I’m a little curious what Open Source projects do you guys have? I can probably name 1 or 2 from some of you guys.
JOSH: I actually don’t have a bunch of Open Source stuff. I’m not one of those people who are prolific at creating my own projects. Although I do like contributing to other people’s when I can. I have a couple of little things. I have something called “Informal” which is an extension to Rails that lets you use pretty much any plain, old Ruby objects as something that you can show in a forum or in a view and that has gone pretty well. I also have something called “Refraction” which lets you do — stuff using rack. These are probably the only two worth mentioning.
CHUCK: Ok. Cool. James, what projects do you have?
JAMES: I obviously made the “FasterCSV” Gem that eventually became the Standard CSV library and Ruby 1.9. And then the “Highline”, it’s probably the only other one I’ve worked on that people probably know of. I do have a bunch of just little ones like “Elif” which lets you read files backwards. It’s kind of nice for scanning long files and stuff. And then a couple of API wrappers, “Gatling Gun”, send out email newsletters through SendGrid’s Newsletter API. Anyways, I’ve write several APIs and stuff.
I love to read other people’s projects. I’m really bad about contributing to other people’s projects. Even in making my speech for RailsConf I have to reread most of the Rail’s source. That was fun exercise and I actually found a couple of bugs along the way and I really ought to be a good citizen and sit down and fix them.
CHUCK: Yeah James. Good work. Alright David what are your Gems?
DAVID: So I just went to GitHub.com/dbrady. It reads like the GitHub page of somebody with ADD. So I actually had a New Year’s resolution for 5 years ago to ship code every single day. And as a result, I have like 50 different projects running on GitHub and by ‘running’ I mean, abandoned.
JOSH: You’re the Dr. Nic of Open Source.
DAVID: I may be. I may very well be. However, out of all of that set, I don’t know, I guess the one that I’m probably most famous for is “TourBus” which is a distributed web stress-testing tool. The one I wish I was more famous for is “Migratrix” which is basically a tool that doesn’t extract transforming load from any data source to any data source. So if you were ever try to migrate data at a one legacy system into a new system, Migratrix is an object oriented way to go about that. I have a Gem called “Geocode”. Nobody uses it because they all use the other Geocode Gem, but mine is better.
JAMES: [laughs] I love that.
CHUCK: Isn’t that always true?
DAVID: Yeah, it’s always true. Mine is a better command-line tool. If you ever just wanna know, just add a command-line, ”where the heck is 123 South-North Street?” If you installed my Geocode gem, you just type it in and it gives you the latitude and longitude or you give it the latitude and longitude and it gives you the newest address. It’s more of a command-line exploration tool than a library which is probably why everybody else uses the library because they’re trying to get real work done.
And then, I guess probably the one project that I started that I did successfully, get handed off to other people because of crowd sourced it is the “CoffeeScript Cookbook”. That’s actually not maintained at GitHub.com/dbrady. It’s actually coffeescript-cookbook/coffeescriptcookbook.org, I think that’s the URL. I’ll put it in the show notes. If you got a CoffeeScript snippet, please contribute send request.
CHUCK: So you got an organization on that one?
DAVID: Yeah. And basically, if you’re a good citizen and you send a really descent pull request we just give you the commitment and hope for the best. So far it hasn’t bit us on the butt.
JAMES: So what about you Chuck?
CHUCK: So, I went and looked at my list as well. I have to say that Dave has 51 public repost and I have 52 so I’m no better than he is.
DAVID: I’m starting more right now.
JAMES: Man! It’s those Utah guys, you know.
JOSH: If they had lives you know.
DAVID: It’s Utah, there’s nothing to do out here except get drunk or get pregnant.
JOSH: Well, try your hardest!
CHUCK: Alright. So I have a whole bunch in here. The only one that I actually worked that anyone actually tried to use is “Sandra” which is my Cassandra ORM. Everything else I’ve kind of started with bright hopes and then got busy and never did anything with. So that’s the only one I’m really gonna bring up. I started a blog one time that was based on Sinatra and Mongo DB. I didn’t even get anything that looked like a blog engine done on it. So, stuff like that. I do have some that I’ve worked on for the Teach Me to Code videos, so they are in there. You know, there’s a half-finished Twitter clone and stuff in there.
JOSH: I wrote a blog engine for a talk I did at RailsConf a couple of years ago. And I’m actually been running my blog off of it for years without any modification. It’s still running on like, Rails 1.9.
CHUCK: That’s —-.com?
JOSH: Yeah, Yeah. That’s it. I guess it wasn’t in Rails 1.9, I guess it’s like Rails 2.0 but I think it’s on version 2.0.2. I really need to upgrade that one of these days. So that’s all of our projects that we’ve got. Maybe we can talk about how we got into doing Open Source in the first place.
JAMES: So kind of along those lines, David mention his “Ship-code-everyday” idea. I’d love to hear more about that.
JOSH: Yeah. David do you use Technoweenie’s Calendar About Nothing?
DAVID: One of the first things I did was I forked the Calendar About Nothing because it was pissing me off because it was…
CHUCK: It doesn’t do anything?
DAVID: No, no.
JOSH: David, talk about that. Tell to people what that is.
DAVID: Ok. So Calendar About Nothing, it’s a Seinfeld reference. What it is, is Jerry Seinfeld once asked, how do you write funny stuff consistently? I said it’s really easy. I write something every day and I put an X on my calendar. Once I’ve got 2 to 3 Xs on my calendar I just told myself never ever break the chain. So a Calendar About Nothing does is it tracks your GitHub commits and if you commit something, it automatically puts a check mark on your name for that day. And the reason I forked was because it’s in GMT. So I was frequently committing code at 11:45pm at night to try and get my code done for the day.
CHUCK: He is at GMT-7, mostly.
DAVID: It’s like, “That happens 6 hours ago. You’re too late dude”. So I forked it to be a Mountain Time. To answer James’ question about shipping every day, essentially what I did is, I just set myself a goal to ship a usable feature every single day. It could be a single line of code as long as it is an actual usable, facing feature to the thing. I council anybody to try that experiment because you will find out what you’re made of, you will spend 6 hours monkeying around with high-falutin’ architecture. And the, 11:45 whirl around and you’ll realize, “Crap! I gonna ship something.” And you’ll sat down and you’ll go solve the project and other problem and publish it, just so you can get your code ship for the day.
JAMES: Well! Go ahead and beat me editor guy but I think that’s effin’ awesome!
CHUCK: I think it really does because building up a source is about adding value, right?
JOSH: What? What? What?
CHUCK: [laughs] Most of the time…
JOSH: I thought it was about drama and politics.
CHUCK: Oh that’s right.
JAMES: Yeah, it’s that.
DAVID: What’s your bonus features?
CHUCK: Yeah. You don’t get those until you’re successful. Anyway, it’s about adding value so I think it’s an interesting exercise just because you can fiddle around for 6 hours but at the end of the day it’s like, “I have to add value.”
JAMES: So, Yeah. I really like that idea but, you know, doing one thing every day and love how David brought out how I kinda showed him the end to end thing right? Like, “I spend all day designing and then I realize I hadn’t done anything”. So I have to do something right?
DAVID: I spent all day coding and realize I hadn’t done anything. Honest to goodness, I’m writing this framework and I got this factory pattern and this doesn’t do anything. I can’t write an acceptance test against this. There’s nothing to test. It’s just all frameworks. There’s no value here. It was just sound and theory and signifying nothing. Well, Crap. I’ll go write a program to find the prime numbers.
JOSH: So David, what was your first Open Source project you did anything on?
DAVID: Pass! Let me go back you on that. It’s been so long.
JOSH: I mean, how did you get started? How did you go from the nobody you used to be to the nobody you are today?
DAVID: To the nobody I am today?
CHUCK: I feel that way some days.
DAVID: I contacted some people that were in Open Source. Oh, Gosh, “Envymud.” Why didn’t I think about it? Envymud is the first thing I contributed code to. I contacted the people who were running the MUD and had a lot of conversations. So I got involved with them socially before I got involved with them programmatically. It wasn’t until I’d hang out with them and they knew me. Granted, this was in the early 90’s, so Open Source is still kind of a little bit if a strange thing. They knew me and I’ve been hanging out with them for a while before I said, “Hey! You know the way this loader works? You’re trashing the disk and it’s taking you 3 minutes to start this process when this process really could start another 10 seconds if we just use the IDE disk cache to our advantage. And the guy said “Wow! That’s cool. Can you write that?” and I said “Sure.” So I wrote that.
JOSH: So James you’re gonna say something.
JAMES: Well I think that’s interesting because I’m pretty sure I also got started messing with MUDs. So that’s interesting. Mine was when I was in The Perl community. I played around with a lot of their MUDs and then eventually started building one on my own. And that was actually a really great learning experience for me because I did this big, complicated, involved project and put it up there. One of the guys was really great and started pointing out all the faults. And I was like, “Alright. So much from watching him tore that thing up.” And alright, that’s cool.
JOSH: Interesting. So I was just thinking about what was my first Open Source work was, and I’m pretty sure it was written in “HyperCard”.
JAMES: New York’s HyperCard.
DAVID: Is it watch the mist?
JOSH: No, no, no. In 1992 I was doing a lot of tabletop role playing gaming. I was playing a game called “Amber Diceless Roleplaying”. God! That was a great game. So I was writing something as a games master’s tool and I wrote a HyperCard stack and I just relisted kind of public domain. There wasn’t term of Open Source that I was aware of in 1992. So I enlist that and people started essentially forking it. The stack was entirely self-contained so people would make their own modifications to it. Some people will write back and let me now about their changes and I would incorporate them into my version. It was overly informal but it was kind of fun.
JAMES: I did a bunch of tools for tabletop games but that was back in my Java days so I just put the upload the app up and never gave anybody the source or anything like that.
DAVID: So I’m noticing a pattern here but first I want to ask you Chuck. How did you get in?
CHUCK: So most of the Open Source – if you wanna call it that – that I did was really been tied to the podcasting which is kind of interesting. Basically, I did a video for this website called Teach Me To Code that a friend of mine was running at that time. Anyway, after several months he actually turned the site over to me. And so, I would record a video of myself coding and that’s really the first thing that I did. So my first “Open Source” code was more lesson in Ruby. It’s just kind of grown from there. If I need a tool and I can’t find it then I’ll go and write it and put it up on GitHub or put it on a disk or something. So whatever is in my GitHub account that I’ve worked on but TeachMeToCode.com is really it.
JOSH: Interesting. So in terms of the modern Open Source community and all that, I definitely got my start on Rails.
JAMES: Yeah. You’ve contributed quite a bit to Rails I think more than any of us.
JOSH: Well I used to be in the Top 20 contributors now I’m somewhere in the Top 50. I haven’t done very much contribution since I got really busy doing Rails in my day job. So how did I start in? It’s all lot of activity around Rails I thought that it was really cool. I’ve been using Rails for a while, you know, leveling up in it. I started seeing things that I wanted to change in Rails and thought “Gee, I should try and be smart about this.” I was like, to plan my attack on a conquest so that I could do a good job at it or as my friend used to say “I like to soften up a room before I go in.” So I figured there’s probably a couple of things that I need to do to be successful if I want to be doing open Source.
Since Open Source is all about community involvement, the very first thing that I realized I needed was a blog because this is with GitHub. There was no other way to have a permanent online presence where you can interact with people. So I build my blog so that I could be talking about the work that I was doing and the changes I want to be making in while I have conversations with people.
So I figured, you need a blog and you need a mentor because I really didn’t know the territory. So I just emailed Rick Olsen out of the blue because he was the newest person to be on Rails Core. So I figures, we were talking about this last rake, what was the name of the learning model where the accessibility… because they still have the percept? James, were you talking about that? The guys name begin with age?
JAMES: I don’t know.
JOSH: Or was it David? Anyway, we’re talking about the…
DAVID: The Dreyfus model?
JOSH: The Dreyfus model.
JAMES: Oh! Yeah, Yeah, Yeah.
JOSH: The Dreyfus model. So I’ll just get some of his fresh from the team so they’ll have the perspective of not being on the team. So you know, I just emailed Rick out of the blue and said “Hey! You know, I want to be doing some contributions to Rails can you mentor me as I do that?” and he said “Ok!” And then I just started doing patches. I remember my very first patch was “TeenyTiny “. It’s just let you do association as extension modules where you can do multiple modules on an association to extend it. And I kinda got hooked. It was fun and I did a bunch of contributions. I focused a lot on Rails associations. Probably the most successful contribution I made was “Rake Routes.”
JAMES: Oh! You mean that Rake test? Oh cool.
JOSH: That was based on an idea that Rick Olsen did, where he had stuff shoved into div at the bottom of your Web view. It was pretty complicated and it didn’t work all the time. So I looked it as I can probably do a better job. This is a rake test. Tadaa!
DAVID: So Josh, how long had you been involved for Rails before you wrote the Rake Routes?
JOSH: That was in 2007 that I did that, so probably about a year.
DAVID: About a year. So I’m noticing a pattern here and one key element to the pattern is, don’t walk into a project and offer to write a new feature.
JOSH: Yes! I think that’s really important. I think you definitely need to get your bearings on a project before you start trying to exert influence.
DAVID: It’s like, if somebody came to me and said “Hey! I’d like to write a new feature for Migratrix.” I would say “A. Who are you?” and B “How do I trust that you want to take the project to the direction that the project needs to go?” And so the pattern that I’m hearing is, A – Find a Problem to fix and B – Engender trust. If you’re a senior programmer, you can probably… if Yehuda walked up to me and said “Hey! I want to add a feature to your project.” I’d probably let him because he has a lot of social trust built out there. But, if somebody came in and said, “Hey, I’m new to Ruby. I’ve only been programming for about a year. I would love to pitch-in in anywhere I can.” There’s a place for that. The way you do that is you walk in and you say “Can I sweep your Dojo? Can I document your project? Where can I pitch-in and help?”
If somebody came to me about Migratrix, or about TourBus or Geocode or CoffeeScript Cookbook, I can give anybody at any level of experience something to do on those projects that would help me immensely. So if you’re listening to this, and you want to get started in Open Source, email one of us or somebody else and say “How can I help?” Actually, you know what would be better we help you engender trust more, is go look at their projects. Find one that interests you. Look for a place that you can pitch-in and help. Find problems to fix. Find missing documentations or if you can find out bug or open issue, see if you can fix it.
CHUCK: I just want to jump in here really quick because I hesitate, a little bit, to discourage people from actually trying to add features. But if you’re gonna add a feature, what I would do is I would go to their issues’ list or whatever, find one or several people have been complaining about and then attack that. So that it is still in line with the direction of the thing. The nice thing is then you go to GitHub, you fork it, you put the feature in, you send a pull request back and worst case scenario, they don’t take it and you don’t get any feedback.
Ultimately, what you’re shooting for is you like “Look, I did come in and try and help you with this problem.” Hopefully, you’ll get some feedback. This isn’t exactly what we’re looking for, this kind of thing. But you’ll open the channels of communication that way too. You don’t have to go in and start at the lowest level of documentation especially if you have the skills to actually help them out.
JOSH: There was like Andre Arko was saying when he was on the show recently talking about Bundler and how he ended up in the maintainer.
JAMES: That same stuff?
JOSH: Yeah. Its like, “Hey, this is broken.” “I’ll fix it. Ok I fixed it.” “Here’s your commitment.” Thanks for solving issues. You’re now the maintainer.
JAMES: You’re in charge.
DAVID: Keep in mind that pull request are a pain in a butt. If the very first interaction you have with an Open Source project is a 10,000 line dif…
CHUCK: [laughs] You have a point.
DAVID: …you just created a headache for the maintainer. If you want to fix a one liner, go ahead, send me a pull request and start the conversation. But if you want to fix something big, talk to the maintainers. Get on the IRC channel and start engendering that trust. To the point that when that 10,000 line pull request shows up, the maintainer or one of the maintainers is willing to say “Oh, hey, this is from James. I’m willing to read this. I’m willing to check this for sanity and loop holes.”
CHUCK: Well, furthermore, if you’re communicating with them as you build it, you know, “Ok. I’m trying to add this in. How do I interact with this?” The nice thing is when they get it; they know what they have.
DAVID: Yeah. The best pull request message is “This tells what we discuss. This does exactly what you expect.”
CHUCK: So then they can go and look at it. They can look at your tests. They can run on them and go “Yeah. This is what I expected to get.”
JAMES: I wanted to comment on several things you guys said there. First, the introduction of things like GitHub issues, I think has made it great for finding places to start. You can go work at something. Comment through the issues. Try to find one you can tackle, and tackle that. It’s a great start because it gets you familiar with the system. You know it’s a problem. It’s sitting in there because somebody needs it solved. You figure it out. And then when you propose a fix “Here. Here is my fix.” That can often be a conversation starter too. You know sometimes it’s just, “Oh, great. You fix it. I’m gonna play it. Hey, there’s this other related thing. Do you think you could fix that too?” or “Oh. Your fix isn’t quite the way we normally do it because…” And they’ll explain it. And then you can pitch your fix and kind of get you into the system.
The other thing David said about documentation, I’m pretty sure about 90% of the projects I’ve got started with, I started through documentation. There’s basically no project out there that couldn’t use some documentation help, even really well document and projects. I would say Rails used to be really well documented. Now I think it’s slipping into moderately well documented in a couple of places. They can use help. There are methods in there that aren’t documented or that out now why? I found one when I was looking the other day. I was reading the documentation and then the codes right below it, and I’m looking at it, that is not what it does. Anyways, there are definitely opportunities there. Pretty much nobody rejects documentation. They’ll just think about that API docs stuff too. Write a tutorial or something.
JOSH : I forgot who on the Rails’ Core team got his start that way but I know that one of the people who joined Rails Core very recently got his start by doing documentation patches to Rails and then like, a year later his on Rails Core.
JAMES: Yeah, I’m trying to remember who that was too. Documentation is pretty much a down-keyed end on anything. A lot of people view it as horrible and stuff. There is a lot of work and stuff but at the same time it is a great way to learn a project. Going through an item and figuring out what something does so that you can document it. It really helps. So I’m just gonna say those. And then I had another point but it has escaped me now.
CHUCK: Well maybe we can talk about tools and things like that a little bit. We’ve talked about GitHub a lot. Do you remember the bad old days of Rubyforge?
JAMES: Yeah, absolutely.
DAVID: Actually, you have to ask for your Gem name and have to be privately reviewed by Dave Thomas.
JAMES: Oh, oh. I do remember the other thing I wanted to say. Dave said something like “If you’re trying to get in…” I love the things we said about getting in. Like Josh talked about – he emailed somebody and asked him to mentor him and that’s cool. Don’t be upset if they say no. Like, a lot of people do that to me now and unfortunately if I did all of them I’d have to quit my job.
JOSH: Or charged for it.
JAMES: Yeah, charged. True. Charged.
DAVID: I’ve spoken too much already today. Finish what you’re saying.
JAMES: Don’t be sad if they say no. Just keep trying other people or find another way in. The other thing David said, if the first thing you do is send me a thousand line dif. Yeah! I don’t want to read through that. That’s a great point. But that’s also a good point about commit in general. Make sure if you do start contributing; try to learn a little about Git, especially and good ways to do it there where each commit is one little thing and stuff. So that way if you send me a pull request, like 6 commits in it or something, I’ll go through and say “Yeah, I like that.” No. where not doing that.” If you make it easy on me, then, I’m more likely to look at it.
CHUCK: Yeah that makes sense. So before we get into tools for contributing to Open Source, there’s one other thing I want to kinda get into. Similar to what we’ve talked about. Most of what we have talking about has been related to getting into existing Open Source projects. I’m wondering, what are differences between that and getting into or starting your own Open Source project? Because at least in my experience, it’s really hard to get traction with it and to stay consistent with committing to it.
JOSH: Wait. So I actually have a pick about this. I think FasterCSV was a very successful Open Source project. I haven’t had any really successful Open Source projects. I’ve been devoting the time to it. But if you look at Open Source projects they like partly about the technology and massively about community and politics. Mostly it’s about managing people. It’s always frustrating to me when people talk about geeks as people-devoid of people skills. I said it on the episode with Angela Harms that I think programming is a ‘people job’. It’s all about interacting with the customer or your team. There’s a lot of communication and people’s stuff. Doing an Open Source project is very much about communication.
That’s the thing that makes GitHub awesome. They realized that it was all about communication. So it’s social networking, its communication. If you’re gonna do a project, you need to realize that you need to set-up a good website for the project. GitHub makes that easy now. You need to have good communication and email list. One of the tools that I was gonna talk about is “Pivotal Tracker” which, like GitHub, is free for Open Source projects. If you upload a project in Pivotal Tracker there’s no charge for it. You can have any number of collaborators. It’s great to put Open Source projects up there so that stuff that you’re working on is publicly visible. And then if people wanted to contribute to the project, they can see what are the things that you’ve prioritized as important to work on which is a little different from how it should showed up in the GitHub issue tracker.
CHUCK: You know, I think that’s a really good tool.
JOSH: And then, continuing thatline, doing something like setting up you project on TravisCI so that people can have trust in the reliability of your project. And the software is in good shape and see at a glance whether it’s gonna work with the system requirements that they have, “Oh. This will run in JRuby. Awesome.” And I think fundamentally it comes down to trust. That people have to trust that it’s worth putting effort to your project. And that your users have to trust that you’re project is gonna have the strength and longevity and robustness for them to invest their time in becoming a user of it.
If you talk to Yehuda, I ask him all the time, “Which of these three things do you think is a better project?” and he’ll look at it and say “Well, which one has the best track record as maintenance? I really don’t care about the differences in technology. Just show me a project that’s well maintained. And then I’ll expect it’ll be around a year or two.”
CHUCK: Yeah makes sense.
JAMES: That’s an interesting point. Yup.
DAVID: That’s interesting. Thank you for sharing that Josh. I’m looking at Migratrix and TourBus and they’re not well maintained. I remember thinking, as I wrote Migratrix, “Man, I hope somebody takes this project over.” And so that’s something to be aware of. If you don’t want to… if you want to write your own stuff… if you can’t find a project to break into, go scratch on it and go write something that’s gonna be your own thing. And if you don’t want to maintain it… I love starting stuff and I have the ego to stand up and say “Hey, I love being in charge of this.” But I don’t have the organizational skills to actually maintain things properly. And so my curse to the world is that, I like to start shiny things and hope somebody else adopts them and then I get to walk away. So I’m like the Cuckoo bird of Open Soruce. I like hoping somebody else will raise my project for me.
JOSH: So David, Dr. Nic gave a talk at Code Conf last year about that.
DAVID: About abandoning, or about staging, takeovers of your own project?
JOSH: Yeah, Yeah. Basically he starts tons of Open Source projects and abandons them.
JAMES: So I’m actually gonna talk about that when we go to Rails Conf next week but I think it’s worth, pointing out a little bit, but that’s not necessarily a bad thing, right?
JOSH: Especially if it’s an intentional strategy.
DAVID: Right. That’s exactly what I’m saying that Josh was saying “If you want to do this, you need to do this, you need to do this, you need to do this.” The only new ones I would add to there is you need to do this in order to run the community and have it flourish under your care and tutelage. If you want somebody else’s care and tutelage to happen, you can accept that if you can’t do these things, then what Josh had described, are consequences. They’re not necessarily bad consequences but they are consequences.
JAMES: I think one of the things that we’re getting at here there’s a lot of a roles, right? There’s people that throw a wine out there and starts something. There are people that are good shepherds and maintainers, Andre Arko being a great example. Now that he’s taking care of bundlers’ bundlers moving forward and good things are happening. There are people who can write documentation and stuff like that. Like anything in life, you have to find your particular role and get good at it and then do that for people. If you are a good shepherd then go shepherd. If you are good at starting things up then start things up.
JOSH: Maybe I we just want to talk just a moment about corporate sponsorship of Open Source work.
CHUCK: Oh, Yeah.
JAMES: Yeah, I would love to talk about that. Tell you right now I know nothing about it. I’ve been paid a tiny bit to work on some things, but it was always, there’s this thing and we need you to do this and let’s put this in it – kinda stuff.
JOSH: I worked for a couple of employers who approved on sort of an individual basis. You can spend a day working on fixing something in this Open Source project because we need that for our work that we’re doing.
JAMES: Yeah, that’ my experience.
JOSH: So that’s one end of the scale and then the other end of the scale is companies, like, Engine yard. Who find people full time to work on Open Source.
JAMES: AT&T is paying to work on Rails.
JOSH: Yes! Yes! I would definitely count them in there. I think it’s awesome that those companies do that. Just to be slightly – not cynical about it but – realistic about it, they’re doing that because it’s in their own interest which is great that it’s in their interest to support Open Source.
JAMES: Yeah, I agree. I mean, I’m all for companies doing that. I would love to find a way in to that – getting some time to spend the work on Open Source. But I think one of the traps in it and maybe this is me, being a little cynical, but I think people get hired to work on a project for an employer, pretty much, there’s no way that’s a permanent thing. You know what I mean? You’re gonna do it for given time period. Even projects stay around for long periods of time. Do you notice that the main guys kinda change over time? Who’s running the show and stuff? I was having a hard time seeing that you’re gonna stay in that position for long. In my experience watching, after a couple of years, people will tend to move on and do something else.
JOSH: You know, Evan and Brian – Evan Phoenix and Brian Ford – worked on Rubinius and EngineYard for years. Evan just left but Brian’s still there and EngineYard’s still paying for him to work on Rubinius, which is great. You know they pay for people to work on JRuby. Heroku hired Matz.
JAMES: That’s true. And that would be a good exception. Matz is probably in it for life.
JOSH: They never let dictator for life.
DAVID: And he’s actually benevolent.
CHUCK: But you always worry that the interest of the corporation might overshadow the interest of community, whoever it is. You know what, I’m pretty sure that Matz has enough skin in the game and enough pole to not really have as much of that problem. But with somebody’s other projects, you just, you worry. You see what Son did with Hudson. All the hullabaloo that went on with that. Over who own the rights to the name? Who own the rights to the code and all that stuff?
JAMES: That was Oracle.
CHUCK: Oracle. So there’s always that kind of thing. So are we gonna regret this later on?
JAMES: I think that’s true – that a lot of people are concerned with that. I don’t really worry about it too much. First of all, AT&T, do they really call Aaron up everyday and say “Aaron, why aren’t you working on this ” It’s probably just unrealistic for them to have that level of interest, right?
CHUCK: But they don’t have a general sense of ownership of the Rails’ project either. At least not in the way, maybe 37Signals does. There are so many Open Source projects that are more or less employing all of the developers on a single project.
JOSH: So what about other ways to fund Open Source work like kick-starter?
DAVID: Actually, other than kick-starter, I would just gonna go to the very low-end of the corporate thing and point out that TourBus, Migratrix and Geocode, I got paid to write all three of those. Basically what I did is I found a problem that needed to be solved at work. And I solved it by writing a tool that solved the problem very, very well. And then I went to my manager and said “Hey, you know what? Our customers don’t pay us for this. This isn’t part of our core business strategy. Can I Open Source this and see if somebody else would run this and add more features to it for us?” And in all three cases, the customer said “Yeah, it’s brilliant! Go for it.”
So, I just want to throw that out there that, you don’t have to get a job with somebody writing Open Source for pay. You can take your day job right now and get paid. Just write something, the scratches your itch and if it’s not part of your core business model, consider going to your manger and say “Can we Open Source this? Put company name on it. Give us goodwill in the community.” And I’m three for three for asking managers in getting approval.
JAMES: And some companies are really good about that right. But Google has their 20% time which kinda goes both ways, right? It’s good. They do tend to get a lot of those projects and Open Source and stuff. The Go programming Language for example. Josh says too, they’re definitely doing it for their own interest. For example, Google’s 20% time is basically a way for Google to claim ownership of skunk forked projects which is kinda cool in a way. Twitter also just announced their new IPA…
JOSH: ‘Innovator Patent Agreement’.
JAMES: Right. Innovator Patent Agreement, thank you. Basically when they patent this new stuff their employees are doing, they’re promising only to use it defensively and not that Twitter’s gonna own it and sue the crap at anybody down the road. They’re gonna give the patent with you and they’re gonna use it for defense kind of stuff and to encourage that sort of growth is my point.
DAVID: What does defensive use mean? That means we’re allowed to use it even if you go somewhere else?
JOSH: It means that if somebody tries sues Twitter, they have a patent in their portfolio to defend against that sue. But the IPA works by giving the inventor a permanent transferable license to use the Patent to defend against law suits, by Twitter.
DAVID: Got it.
JOSH: It’s not like they have to do that, but if they think Twitter is being overly aggressive, they can always just shield somebody who Twitter is suing. I think Yammered already signed on to supporting the IPA. What the next step is to individual inventors, when your company comes to you and says, “Hey. We want you to file a Patent application for this.” And you say “I’d love to do that only if you do the IPA.” Sos it’s a movement.
DAVID: That’s very cool. That’s very cool.
JAMES: So, let’s go back to what Josh’s was trying to talk about Kickstarter. That’s only, I think recently started to be coming kind of big. And in our community, the recent example of it is Yehuda putting up what was originally Rails’ thought happening now in Tokaido. Basically, Rails’ all-in-one application for OS Scan, he asked for the funds to kick some time off-work to build that.
JOSH: And Kickstarter is good for that. But that happened, a couple of years ago with Gregory Brown working on Prawn. He just asked people for donations to support him to work on Prawn for somewhere.
DAVID: And the difference is we all thought Greg was crazy.
I’m not kidding, right? Greg did this totally insane thing. Of course, Greg is just glorious and magnificent in this particular and insane way.
JOSH: Well, you know the difference between crazy and brilliant. Crazy is, you refuse to see the world as it is. Brilliant is you convince other people to see it your way.
DAVID: Ok, here we go. I was gonna say you get away with it. And that’s what Greg did, he got away with it. But a lot of us was like “Dude, this is just insane.” And with Yehuda it’s like “Oh, Yeah. Cool. I’ve been that before.”
JOSH: Anyway, James, continue your editorializing.
JAMES: There was quite a bit of controversy over the year. People talking about should you be able to make money like this for Open Source or is this how Open Source is done? Don’t we just start something and then see if we can get funded in some point in some way? Things like that. The money stuff I thought was mostly BS. I’m all for people making many money on their Open Source absolutely. You know, you have to think about it like this. If you like Open Source and you want it to keep going, then those people are gonna have to have incentive to take it forward, right? They have to make money, feed their families, stuff like that. Rails wouldn’t be where Rails is if 37Signals hadn’t kept DHH, funded the whole time. You know what I mean? That’s part of the puzzle in doing that.
The other things that were controversial about it though are a really more interesting, I think. For example, the way Yehuda set it up. The Kickstarter model where he had several levels and you pay at this level you get this and you pay at this level, you get this. One of them was like, if you donated a $100 sort of project, I believe you got on the mailing list that helps discuss the direction of the project.
DAVID: I can see a little controversy about that.
JAMES: Exactly, right? It’s a question of, well, if this is Open Source, if this belongs to the community, is that an acceptable model?
JOSH: Well, it does have president; Avdi did with his Object on Rails book, it’s free now but if you paid $5 to get on the like Alpha version of the book, you’ll also get access to the email list to discuss the book.
JAMES: That’s a good point. And that’s very interesting because I was on that email list and it’s a great list. If you go through and read it, it has a bunch of people basically talking about and sharing what they’d tried to make the Rails code more object-oriented. And what was successful and what was not and I had a major influence over the book. That’s interesting.
CHUCK: I just want to jump in here though because a book isn’t an Open Source project. The main difference that I see between the two is that even if you release it for free, it’s still essentially a project and it still has Avdi name on it, it’s still Avdi’s book. The difference with an Open Source project is that it is usually, and in general, owned by the community. It’s out there to serve the community in whatever ways it’s designed to do it. Now I know, I’m probably splitting hairs on this but, it just seems to me, if it’s an Open Source project that’s made to serve people and provide this kind of value then, I think that the community at large should have some say in it. If Avdi’s writing a book then Avdi can write whatever he want on his book and its Avdi’s book. He’s got his name on it and he effectively gets the credit for having put it together.
JOSH: Ok. So Community Ownership is an interesting topic. We could probably do an entire episode of Rogues on Open Source licenses. Actually, the only reason Open Source licenses work is because the work is protected by copyright and its license. But in the early stages of a project, too many cooks can really ruin the soup. And you want to have a focused group of people who are giving birth to this project. And after it gets out in the wild and people start forking it and contributing, sure it’s come one, come all.
DAVID: There’s also an argument to be made. In TourBus, one other guy at my work had an opinion on how to do it. And so he had input into the guidance of the project. When I wrote Migratrix, I was sitting next to Pat Maddox and — for the entire time and they had input into the project. I think you can actually make an argument here that Yehuda has actually establish a contract by which anybody can have guidance into this project. I’m gonna come down completely on the other side of the controversy that this is actually a solution to the not enough cooks.
JOSH: Wow! That’s a great perspective.
DAVID: For a project as big, as ambitious as what Yehuda is proposing, there really needs to be kinda lot hands of in the clay as it were. He’s stepping in and saying “If you want to be part of the steering committee, it’s a $100.”
JAMES: Yeah, that’s an interesting point.
CHUCK: I can see that too. I don’t know. I still feel like it should be a little more open.
DAVID: I can see both sides. I can see both sides, sure.
CHUCK: Anyway, we’re just about to picks. Is there anything else we need to talk about before we do that?
JOSH: Let me look at my notes.
CHUCK: You have notes? You sound like James after you read those notes.
JOSH: Didn’t I just tell you I’d like to soften up a room? I need a plan of attack.
DAVID: Did they flash bang your name right?
CHUCK: I was gonna say “Punch him again.”
JOSH: No. We’ve covered all by thing. So Yeah, I’m ready for picks.
DAVID: So I’m just wanna say, what if there was an Open Source book? For example, CoffeeScriptCookbook.org. I think it might actually .com.
JAMES: You know that’s one of the interesting things. We just mentioned and discuss Twitter’s IPA. They threw up on GitHub and they’re getting like pull request from lawyers and stuff.
DAVID: That’s awesome.
CHUCK: No way!
JAMES: Yeah, that’s cool.
CHUCK: That’s really cool. Ok, one more thing that just came to mind. I was gonna bring it up and then forgot and that is, on GitHub and other places you can actually set-up pledgie and just get donations.
JAMES: That’s a good point if people like the project…
CHUCK: Any opinions on that?
JAMES: I’ve already come down on the positive side. I think we should be paid for the Open Source. I’m all for it.
CHUCK: Yeah, I agree. But you know, where Kickstarters may be a little formal, I guess.
JOSH: The thing about the pledgie thing is that I think it’s so out of the way in the margin or whatever that it doesn’t really bug me enough. I probably need to pledge to dozens of more projects that I haven’t. Maybe we should do have like, Open Source Day which is the day that everyone goes and donates pledgy stuff to their particular Open Source projects or the ones they use or what have you.
JAMES: It’ll help to encourage people to do more of it.
CHUCK: And have them let us know, some way, that they did. And we can kind of have a Rogues teller or something.
JAMES: I really admit one time I was working on Open Source and somebody filed a bug against one of my projects. I went in there and fix it and when I fixed it they want to have my PayPal account and just drop the money in there. And it was a small chunk of money and it was nice. That was just a great thing right? He had some problem. He told me about his problem. I went fix his problem and he said “Thank you”.
JOSH: That’s great.
DAVID: That’s a radically different experience that I had. I found a bug in FasterCSV and I submitted it with tests and a whole bunch of explanations to why it was wrong. And then I got back this very loving email from James Edward Gray saying “You’re using it wrong.”
..here’s the correct usage. Here’s the documentation for it and if you’ve read you would have known that.”
JAMES: Man, that guy is a jerk!
DAVID: I know.
CHUCK: I know. Who does that? Geez.
JOSH: So James, as much as I support paying people for their time and efforts, there’s plenty of other ways to compensate people for their effort. I sent Aaron a lovely pink t-shirt that he likes because I know how much he likes pink.
JAMES: That’s another good point. Yes, I agree.
JOSH: I’ve seen people send bottles of whisky and also thank you gifts or books or what have you. So if you can’t afford to drop a $100 on somebody, a nice note, even just a nice little thank you email goes a long way. There’s plenty of ways to express your appreciation. Short of dropping a bill on someone.
CHUCK: You said bottles of whisky and now Avdi is going to get inundated.
JAMES: Yes. So you just getting smash all the time because of all you do.
CHUCK: Alright. So let’s go and get into the picks. We’re actually been talking for a full hour already. Josh, you said you were ready for picks, so you go first.
JOSH: I am. I am. I’m prepared. So my first pick is relevant to the interest of the episode and that’s “GoGaRuco 2010”. Evan Phoenix did a talk called “Being Your Best Asset and Not Your Worst Enemy” which is the masters speaking of how to manage an Open Source project. I thought it was a really great talk. I’ll link in the show notes. And then continuing in the sole serving mode here, conference season is heating up and a lot of people are first time conference speakers. So I will point you at the blog post I did last year called “15 Pro Tips for Conference Speakers.” If you’re speaking at a conference, you’ll probably want to take a look at this. It’ll help you avoid making some newbie moves. And that’s on my blog on Hasmanythrough.com.
And then I kinda have a fun pick which is for the movie “Primer” which the entirety of it up on YouTube now. I’ve only gotten about, I don’t know, 3rd in the way of it but it’s really fascinating. It’s a bunch of dorky guys who sit around on a kitchen table and works on a garage while wearing ties and are working on some really dumb physics stuff. It’s a pretty amusing movie. And if you do any start-up stuff there are a lot of laughs in it. And that’s it for me this week.
CHUCK: Great. James what are your picks?
JAMES: I just got one this week but it’s totally awesome. Jeremy McAnally started this new.
JOSH: Ah! Ding it!
DAVID: I only have one pick for the day.
JAMES: Jeremy McAnally started this new newsletter called “Good Morning Interwebs” and the idea is it comes new to your inbox every morning with only positive news. It’s only about a week old and it is just absolutely excellent! Everybody in their world needs to subscribe to this list and click on a few links every morning. The stories are inspiring. They are thought provoking. It’s got feel-good stories. It’s got great TED Talks you probably should have listened to. It takes me a few minutes to go through it but I love the way it starts out. Josh mentioned the invitation, what’s its name?
JOSH: Ze Frank
JAMES: Yeah, Yeah. Ze Frank. Invitation of little bit back, that you should go outside and that was in the first episode of Good Morning Interwebs. There it is, absolutely amazing. Today there was a 3-minute TED talk from Google guy about how we should all do the Morgan thing and go try new things for 30 days. And he talked about some of the ones he’d tried for exercising. Not so much but its all great stuff and the news are so bad these days that a lot of people are just quitting the news all together. We probably should but not this news. This is good news. So everybody should subscribe.
CHUCK: Awesome. So Dave what are your pick?
DAVID: My pick was gonna be Good Morning Interwebs. So alright, I’ll come up with a replacement pick pretty quick. So, relevant to today’s interest, there’s an older book now called “Leadership and Self-Deception.” I just checked the pick machine and it hasn’t been picked yet. So if you’re going to be dealing with other people, especially if you’re gonna try help run a project, any book on leadership is good. Leadership and Self-Deception is a really good entry level book on dealing with people and understanding that everybody is kind of in their own head and doing their own thing. Everyone has a reason for doing what they do. Even if you think they are completely crazy and insane or possibly evil, everyone has a reason for doing what they do. And Leadership and Self-Deception is a great book to lead you in that direction.
I guess I’ll bounce off of Good Morning Interwebs and say that what led me to Good Morning Interwebs was a PDF – I’m gonna try to track this down – it’s either free, or it’s very cheap. I think somebody told me “Go buy it and if you disagree with it I will refund you the money.” It might have been free for me but it might be a couple of bucks for you but it’s called The Information Diet. Basically, it’s kinda how to spot yellow-dog journalism vs. stuffs that’s actually been well researched and well thought out.
JOSH: Did you just say yellow-dog journalism?
DAVID: I just said yellow-dog journalism and that’s a high-faluting word for really stupid journalism.
JAMES: He was trying to avoid the bleep.
DAVID: Yeah, exactly. Anyway, The Information Diet is like how to tell the veracity of something. If you’re reading something on Huffington post and you can’t tell that I has an extremely liberal slant, you need to go read the Huffington post. If you can’t Watch Fox news and find out that it has an extremely conservative slant, you need to go read The Information Diet. How that led me to Good Morning Interwebs is the realization that emotionally, what we feed into ourselves is what primes our engine positively or negatively for the day.
I actually threaten to quit Twitter a couple of weeks ago or just to go into a transmit only mode because especially, as the election years are ramping up, Twitter is nothing more lately than just a place to punch people in the bleepable parts. It’s really, really frustrating to see otherwise rational insane people being reduced 140 character sound bites of hatred. I just can’t take all the hatred. I gonna go find something where I can chill out and be calm and have something happy. And the very next day Jeremy McAnally announced Good Morning Interwebs.
JAMES: I do unfollow overly negative people on Twitter. I’ve been doing that for a while.
DAVID: I’ve started unfollowing people and I’ve also started building up a really, really long filtered list in Tweet deck. And I’m getting ready to write my own Twitter client that will actually do document classification. If it’s from this person and it’s an election year and it has any of these words just don’t even show it to me.
JAMES: Can I just point out one thing? When David Brady says he checked the pick machine, this means David Brady did the search when watching his own spinning head on the screen. I just wanted to sure everybody understands how that works. It’s David Brady watching David Brady.
DAVID: Yeah, its DavidBradyPickMachine.com and I’ve invented the David Brady pick machine challenge which is try to spin yourself, so that the head always seem to be aligned.
That’s my pick.
CHUCK: Oh dear. When you said yellow-dog it reminded me of my Susan days.
JAMES: That’s what I’ve thought of too.
CHUCK: Yeah, yellow-dog Linux. I think Red Hat acquired them in one way or another because they use the yellow-dog updater, modifier or whatever it stands for. So if you use the yum package manage in Lunix, its yellow-dog updater or modifier or something. Random Linux knowledge but I worked at Red Hat for a few years. So anyway, my picks, the first one is “Getting Things Done.” It’s a book; I don’t remember the author but anyway…
DAVID: David Allen.
JAMES: David Allen.
CHUCK: So anyway, I’m about a fifth in the way through it. I’ve already started kind of implementing some of the things that I’ve read. All of the sudden I’m getting more stuff done imagine that. What’s really nice is that it has really helped me just get things more organized. And I’m really excited for the rest of the process that he describes just to see how that helps me keep track of everything that I need to do.
The other pick that I have is one that was picked on the Ruby’s Freelancers show by Erick Davis. It’s a TED talk and this guy basically says “You should get these three different plants. They help clear up the air in whatever building you’re in.” He was talking about clean air in these corporate buildings and if they got these certain plants, and had so many of these plants per person or per floor or something, that it would help clean the air in the building. And I thought that was interesting so I actually went and I bought two of the plants fully grown and the other plant I bought seeds and planted them here in my office. And it’s sitting in there by the window and it turns out I kind of like having plants in my office. So I’ll put a link in the TED talk in there. It turns out I don’t have a black palm. I actually can’t keep these things alive. I just have to remember to keep watering them.
DAVID: I know that we can go from Open Source project management to Office Horticulture in one episode.
JAMES: Where they stop at David Brady’s spinning head in the middle.
CHUCK: So one last pick, and I’m really serious about this pick. I’m going to pick, my CPA. If you’re a freelancer you need to have a CPA. David knows my CPA because he sent me to him. We actually did an interview with him on the Ruby Freelancer’s show. It was episode 10 I think. Just talked over taxes and stuff like that. If you’re wondering about what deductions you can get and how you should manage your taxes and stuff; what kinds of questions you should be asking your CPA, there’s about 40 minutes of terrific content over there. So you can go to RubyFreelancers.com and find the episode there. And I’ll put a link in the show notes to that episode. He’s a super smart guy and he saved me a whole bunch of money this year on my taxes. I want to pay in quite a bit less and I thought it would after hearing several other people talk about what they’re paying taxes for the year.
DAVID: The thing I love about our accountant is that he can probably get us 10% more back each year than he actually does. He knows exactly where the line is between, this will get you audited and this will not. How much is this 10% really worth to you?
CHUCK: Well the other thing that he, because I was in there yesterday just finalizing some things, he asked me a couple of questions and I wind-up saying another $1500 in taxes, “Oh what about this?” “Oh well, I did this and this and this and this and this.” Ok. We got it all figured out. We talked about few of the things and he’s like “So we’re gonna put this in because it won’t get you audited. And we’re gonna put this in because if it does get you audited, we can back-it up.” So, just super smart and he knows exactly what he’s doing. How to play the game; to accurately represent to the IRS that you’ve got but at the same time make it so you don’t have to have any more hassle than you have to and not pay more taxes than you need to.
DAVID: He can find any legitimate loop hole.
CHUCK: Highly, highly recommended. I know were pass the past tax due date now. Anyway, go listen to him and contact him if you need a CPA.
DAVID: He can help you with your extensions.
CHUCK: Yup. Anyway, those are my picks. We do have a few announcements here. We’re gonna be at Rails Conf next week. We’re actually one of the key notes – Wednesday morning, 9 o’clock. Be in your seat.
JOSH: And wear a hat.
CHUCK: I was gonna say, we’re gonna be wearing our Rogue hats. So bring yours and wear them. I’m really curious to see what kind of hats we can get to show up.
JAMES: We will be taking photos of the room from the stage.
DAVID: I don’t know what kind of prizes we’ll give out if you bring your hat but you will earn karma.
CHUCK: Honestly, if you have just a really wicked awesome hat that you wear, we’ll figure something out to make it worth it to you. We’re also reading, Working with Unix Processes. We’re gonna be doing a Book Club sometime next month. Still don’t have a date on that. I’ll put a link in the show notes for that. Finally, the last announcement I have is, we want your questions for RailsConf. We’re talking about what Ruby programmer should care about. We all have, kind of our idea of what we want to be talking about.
DAVID: What Rails programmer should care about?
CHUCK: What Rails programmer should care about.
JOSH: Attention to details, crucial.
CHUCK: Yes, thank you very much. So if you have questions you want us to ask during the key note, then, email us. You can send an email to panel@RubyRogues.com
JAMES: And it doesn’t have to be a question. It could be fan mail, cookie recipes, you know, whatever. Love notes for David Brady.
JOSH: Bottles of whisky.
DAVID: Yes, please.
JAMES: Bottles of whisky.
CHUCK: If you can fit that to an email attachment that will be cool. So anyway, that’s what we’re after. Anything like that will be terrific. And if you’re gonna be at Rails Conf next week, we’ll see you and if not then, keep an ear up for that episode. Thanks. Bye.