The Changelog: Software Development, Open Source - Serve, RadiantCMS, Design and Prototyping (Interview)

Episode Date: March 16, 2011

Adam sat down with Designer/Developer John Long, creator of RadiantCMS about his new project Serve, design, and running a successful open source project....

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome to the ChangeLog episode 0.5.2. I'm Adam Stachowiak. And I'm Winn Netherland. This is the ChangeLog. We cover what's fresh and new in the world of open source. If you found us on iTunes, we're also on the web at thechangelog.com. We're also up on GitHub. Head to github.com slash explore. You'll find some training repos, some feature repos from the blog, as well as our audio podcasts. If you're on Twitter, follow Change Log Show, Change Log Jobs, and me, Adam Stack. And I'm Penguin, P-E-N-G-W-Y-N-N.
Starting point is 00:00:43 This episode is sponsored by GetUpJobs. Head to thechangelog.com slash jobs to get started. If you'd like us to feature your job on this show, select advertise on the changelog when posting your job, and we'll take care of the rest. Our friend Zencoder, a startup focused on tools and services for video website developers. It's looking for a smart person who is also a Ruby and Rails engineer.
Starting point is 00:01:03 Perks include stock options and a growing startup, relocation assistance to the Bay Area, and freedom. They trust you. Check it out at lg.gd.com. And our friends over at Store Envy, the Tumblr for e-commerce, are looking for a lead champion of codes, a Rails engineer, and a president of beautiful things, a UI designer. Both are full-time positions, and based on a recent tweet, they're offering a 5K bonus. Check it out at lg.gd slash 9h and 9i. That would be our buddy John Crawford, who I ran into down at South by Southwest. We had a fun time in Austin.
Starting point is 00:01:38 Bailed a little early on the conference, but had to get back to some work stuff. But handed out a lot of stickers, met a lot of fans of the show, got to meet a lot of you in person. Some fun times down there, but I understand you had some fun times back home, interviewing John Long from Serve. Yeah, I went solo and I talked to John Long of
Starting point is 00:01:57 Radiant and Serve fame. We covered all things Radiant, the community, optimism and open source. We also talked a little bit about website prototyping with Serve, which is pretty awesome, and I hear you guys use it at HP. We do. I'm anxious to hear this episode because if you're building a Rails application and you've looked at Static Manic or some other prototyping tools,
Starting point is 00:02:18 take a look at Serve because it's by far the easiest drop-in replacement once you actually get to your Rails application. It's just the view layer that you can just snap right in there. Yeah, the server is awesome. It's perfect for those who love those common Rails front-end tools like Haml, Sass, and Compass. It's pretty easy to deploy to Heroku, but a simple brochure or website. It's production-ready, so it can deploy to Heroku. It's really, really awesome.
Starting point is 00:02:41 You guys also talked about Radiant and some of the backstory. Yeah, a lot about the first Ruby CMS. We also talked about John's stint into design and how he got involved with the RubyLang website and what that led to for Serve. Sorry, I guess ultimately it was Serve because Serve kind of came from Radiant, but it was really the kickstart for Radiant. Fun episode. Should we get to it? Let's do it.
Starting point is 00:03:14 I'm joined today by John Long, proprietor of Wiseheart Design. I'm running the show solo today. So John's with me. He's the creator of Radiant CMS. We're going to talk about this and a lot of fun front-end developer stuff in this wild world of open source. But John, how are you today? Doing well.
Starting point is 00:03:29 So John, for the folks who do not know who you are, I don't know why they wouldn't, but why don't you give a brief introduction about who you are and what you've been up to. Okay. I do freelance design work. I've been doing it for a number of years now. And I guess at the beginning of my freelance career, I was from that. And for Ruby Lang, I also created Radiant CMS, which is a content management system that is well-known in the Rails world. So, yeah, that's who I am. I live at home. I have a dog, Lily. Yeah.
Starting point is 00:04:25 Very cool. Well, that's actually how I know you from back in the day, and I love the design that you did for the Ruby website. It's definitely awesome, but I didn't know that Radiant came out of that project. What was that like? That was at a point in my life where I was really optimistic
Starting point is 00:04:43 about the value of open source contributions in the sense that I actually took about six months and programmed Radiant CMS. So I moved back and I thought, I want to do freelance stuff. So what would be better than like to have a content management system that you wrote for websites? You know, so I yeah, it was it was kind of like. Doing my own little startup that was kind of open source aims, I guess. And, yeah, during that year, launched Radiant. It ended up kind of paying off. I made contact with the Pragmatic programmers through that experience and was able to do some work for them,
Starting point is 00:05:43 which was another great sort of portfolio piece but as I look back on it probably wasn't the best way to start a freelance career I guess but developing a CMS you mean yeah well I mean I haven't actually ended up doing a lot of websites that are CMS-focused kind of thing. In my other job, we had done a lot of content management stuff, but that wasn't where I ended up carving out my little niche. I ended up more in the web app space rather than the website space. And Radiant's much more in the website space. So it's interesting.
Starting point is 00:06:35 So when you actually picked up the idea of the CMS, were you starting to work on Ruby Lang or was this a product that kind of started in parallel with it for a niche or a need that they needed? Well, at the time Rails had just kind of come out and Ruby Lang was, let's see, how did that all work? I was working in Chicago and at a certain point I was just like, man, the Ruby website is just really bad. I mean, it's very, like it used a lot of red in the header and different things like that. Red everywhere, red and pink. And it was hard to read.
Starting point is 00:07:21 It was basically just a blog. And I was getting to use Ruby at work as a developer and just felt like it needed something better. So I sent a post out to the mailing list and suggested that we form an identity team, much like the Mozilla Firefox identity team, which had just had great success in designing the Firefox icon and all those kinds of things. And the idea caught on and I ended up getting to be part of that team. We did the design and everything. We got all of that rolling. And then it was like, well, how are we going to deploy this thing? And why the lucky stiff was actually on the Ruby identity team at the time. And he gave a go at it using, he like a precursor to maybe Jekyll. It like generated and then I don't know if it FTP things over how it works exactly, but you ran it on your local box and we gave it a go with that and it like didn't work for what we were trying to do. So we were stuck with a lot of, I guess, Ruby-like solutions that just weren't really well done. And I had had some experience at my old job doing a text pattern site. I had written a custom... We used a lot of RHTML running on
Starting point is 00:09:08 mod Ruby, so it was really more akin to PHP or something like that because it was just ERB plus some custom classes that we had written. And so I had written kind of a templating system around that and was real intimidated over what I thought should be in a content management system. I saw that Rails was there and I thought, wow, I could just spend some time, a couple of months, hack this thing together. And so I kind of made a commitment to do it.
Starting point is 00:09:41 And it was sort of like once it was out of my mouth, I had to do it. And I don't think I really anticipated it was going to take like six months to do the major development on Radiant, or five months or something like that. But we were able to get that done, launch the Ruby website successfully. I think it ended up being around August by the time we had launched the Ruby website successfully. I think it ended up being around August by the time we had all the pieces in place. They had to do like a server upgrade so that it could run Rails and some different things like that. And so what was it that actually took Radiant to become, I guess, more of the more mainstream Ruby CMS available out there?
Starting point is 00:10:24 I mean, it was the first. And I think that being the first and also being... Well, we made a commitment kind of early on. David, the way that he talked about rails and the continued development and all those types of things, what rails was going to be and what it wasn, drinking the Kool-Aid, not breathing it. Yeah, exactly. And I was like, yes, yes, Radiant is going to just be focused on this one area. And the way that I'm going to serve those other things is I'm going to do a plug-in system from the beginning.
Starting point is 00:11:22 And having made that commitment after Luchy Radiant, it took like several more months to build the plug-in system for it. And I think I ended up writing the basic idea for it. And Sean Cribbs, at a certain point, started working on something he called Shards, which was a way of allowing programmers to declare where certain partials should be included in views. So you could monkey patch to insert controllers and things like that that you needed to, but Shards allowed you to make modifications to the view so that two plug-ins that overrode the same view wouldn't conflict.
Starting point is 00:12:10 Instead, you could plug in pieces into the view instead of overriding. So, yeah, it kind of grew like that. And once we had the plug-in system in place, it really sort of developed on its own. And since maybe the first eight months or so, there's been like just a group of people using it and developing stuff for it. We've done different things since then. We've got an extension registry with like over,
Starting point is 00:12:50 there's over 200 plugins for it. But because there's kind of this ecosystem there, even though I feel like there's, we're still learning a lot about, and frankly, just we don't have enough time to make Radiant what we want it to be, what we know it can be. Even though it's still green in some ways, there's a lot of people that are passionate about using it and enjoy it. So it's really the community that kind of formed around it. And it required a lot of effort in the beginning.
Starting point is 00:13:25 I don't think that I could have launched Radiant kind of successfully if I hadn't been pretty devoted to it in the beginning. But it's become sort of a self-sustaining community to where now I'm... I turned over the lead development to Sean Cribs. At one point, Sean has gone on. Jim Gay has taken up that mantle.
Starting point is 00:13:49 We've got several people that are on the core team. I mean, I really feel like I could step out of the picture and it would still, you know, continue to go. I haven't done that yet because I still have vision for where the product can go, and we haven't totally achieved what I was wanting to achieve with the product when we first introduced it. But I think that's the community itself is the main reason that Radiant has done so well in terms of being that go-to CMS within the Rails community. There are certainly other content management systems now, and I'm not real aware of the communities that are around those,
Starting point is 00:14:40 but it still seems that Radiant, it's the community that kind of holds it all together. So when you look at Radiant and what it is now, but you said a couple times there what you still have vision for, what is the vision in comparison to where it is now and where you'd like to see Radiant, whether you're part of the team or not? Yeah, I think for me a big sort of part of this is seeing it be able to compete head-to-head with tools like WordPress, particularly on a usability level.
Starting point is 00:15:17 I feel like we have some ground to cover there. Some of it, too, is just getting good pieces in place to handle, like, the asset management side of it and different things of that nature. Part of the push with the asset management... Asset management still hasn't made it into core. And one of the big development efforts right now is that we're going to begin launching into, particularly as we move to Rails 3, is dividing up the core so that different
Starting point is 00:15:56 parts are easy to take out. And once we have that kind of design in place, it'll be easier to have like a default asset management solution that if you'd like a different approach, you can plug in that different approach and it would still like work with the rest of the system. So some of that has to do with we've been working through the best way to build a modular plugin-type architecture within Rails. So there's a piece there and then there's a piece with just the usability, the friendliness of it.
Starting point is 00:16:41 I've actually been using WordPress a lot on one of our church's websites, and it definitely has... It's a lot more user-friendly to the end user. Radiant is a whole lot more powerful in terms of what it allows you to do with the code, which is where it's really fun to use. But it's still got a ways to go in terms of competing with something like WordPress head to head. So WordPress is more of a user-friendly kind of GUI kind of scenario where you can also
Starting point is 00:17:22 still develop plugins, but it seems like Radian is more of a hacker CMS, mostly that, like you said, underneath the code, you can really dive in and do a lot more with it. Is that about the case? Yeah. I mean, just for instance, the macro language that Radian uses for its templates, Radius, is accessible throughout
Starting point is 00:17:47 the system, whether you're on a page or you're in a layout or we've also got a concept calling Partials to become snippets. So you can use the macro language wherever you are. And part of Radiant's sort of ethos is that the idea that, like Ruby, we want it to be a system that provides a tremendous level of power, but it's very accessible to people that are coming on board and learning. So even though you might discover a page that has radius tags in it, for instance, if you're just a content editor, you can go in and make changes relatively easily with only understanding like markdown or textile, something like that. So there definitely is a lot more, I guess you could say, raw power in what Radiant allows you to do out of the box, but it's still not as user-friendly to the end user. And so as we continue to develop the interface,
Starting point is 00:19:02 I saw you had a blog post about having more design savviness in it, and you were doing some prototyping with the navigation and whatnot. How do you get more designers involved to not only make Radiant an awesome CMS from a backend standpoint, how you have asset management and ease of deployment and those kinds of scenarios, but how do you also design this interface in an open source community that makes sense? Yeah, I mean, that's really kind of an open question. It's the one area of Radiant that I have not been able to completely relinquish to someone else being the design piece of it. And it's something that we're experimenting with. One of the things that we're doing is we have a separate project where all the HTML development takes place.
Starting point is 00:19:58 We actually use Serve for that. And the idea being that a designer wouldn't have to understand Rails and all those things in order to contribute. You could just download the prototype project, say I've got this idea for something, and work it on GitHub or whatever,
Starting point is 00:20:18 and then everybody would be able to download it and check it out and see what it looked like before it went into development kind of thing. So, I think part of it for us... WordPress has definitely gotten a lot more exposure, for instance, and there's a lot of designers who use it. And so, they have had more input into the design itself from the community.
Starting point is 00:20:48 And the Radiant community is not that big yet in the same sense. So I think that part of it's just we haven't gotten to a point where we have a lot of designers that have spare cycles and want to contribute to the way that the CMS works. And part of it is we need to do a better job of bringing those people into the community, I guess. And still experimenting with different approaches and how design can take place in more of a collaborative kind of way. I think that's really difficult in this source world. I mean, if you're just a, let's just say a designer, not so much someone who dabbles in a lot of the code, maybe you're just the designer piece of it,
Starting point is 00:21:35 or maybe you're dabbling more into HTML prototyping, but you're not using tools like Camel, SAS, Compass. You're still kind of on the actual language itself, HTML and CSS. And then you enter this world of Git and GitHub, and it gets a little intensive, and now you've been introduced to the command line, if that's never been a place for you before. So it can be kind of hard to jump into these environments and use your true skills in this unusual world.
Starting point is 00:22:03 Yeah. true skills in this unusual world. Yeah, I mean, I think for sure, and particularly Rails is not an easy environment for a designer who doesn't know a lot to jump in and work with. I mean, when you compare it to stuff like WordPress and so many people out there that are using WordPress and don't know anything about AML or SAS or Git. They FTP the thing over to their server. FTP? Yeah, FTP. Who does that anymore? Most of the world does. Rails is awesome, but it's a foreign language to so many people.
Starting point is 00:22:52 If they're using FTP, they must not be even using any version control systems either. So just thinking Git, they're thinking, what about the version of my code? That doesn't make any sense. Yeah, I mean, getting a theme and just making modifications, you know the story. You make a change and you call index.old.html and all of that type stuff.
Starting point is 00:23:19 Your version and the actual ways you rename the files and whatnot, and then you even have an old directory above it so that you can put those old files after they've cluttered the file system that you're trying to mess with. So speaking of the designers and trying to prototype, you mentioned Serv as part of Radiant
Starting point is 00:23:38 and you use Serv to actually prototype the interface for Radiant. Looking also at Radiant, I see a lot of similarities in how you list pages and how that hierarchy kind of gets displayed in that UI. And in serve, it's more of like right there in TextMate. Was that just a natural extraction from the result of building a lot of content-heavy sites at my old job. And I began to think in terms of like a hierarchy of pages, and that was something that I was
Starting point is 00:24:22 at the time really frustrated with about a lot of CMSs. Does WordPress allow you to arrange things in a hierarchy now? I don't use it enough to know, but I think they have a pretty okay UI. I think you can order the pages, I think. Yeah, I think they use kind of a concept of menus, but maybe the pages are all flat or something. I'm not sure how it works exactly, but I know that when I was working on Radiant in particular, I was really wanting it to be something that kind of
Starting point is 00:24:59 reflected that concept of the URL and content being structured underneath URLs. And in a very similar way to the way that it works on the actual file system. So when I was working on Serve, a lot of the same concepts sort of fell out in that regard. So before we dive too deeply into talking about CERV and what it is, let's let the listeners actually know what CERV is. So a rating is a CMS. It's deployed. It's got a UI. It's got a whole different deploy structure. But what is CERV in comparison?
Starting point is 00:25:41 So at its smallest, CERV is a rack-based web server for files. It handles ERV, Haml, SAS. You can integrate Compass into it. So that's kind of the technical, like, what it is, being a web server. It's also, or the way that I would describe it is it's a rapid prototyping framework for web applications, and specifically Rails applications. And what I mean by that is that Rails applications have your model, your view, your controller, and serve is basically like having a Rails application without the models and the controllers. You just have the views. So as a designer, if that's the part that
Starting point is 00:26:45 you mostly work on, that serve allows you to just focus on the views without having to build out or have built out for you the other components, the models and the controller. So you're able to prototype what you want the application to be in HTML and CSS without worrying about how the back end can run and all that kind of stuff. Yeah. And so prototyping, this is obviously a fun thing anyways because I know that as a front end developer designer in the Rails slash Ruby world, trying
Starting point is 00:27:27 to iterate and trying to prototype before was always a pain in the butt. And now that I know about Serve, my life is so much happier now. Just being able to easily pick up a project with all my fun tools in it and build it out based on URLs and all that good stuff. So URL-based design, it seems like in Serve you pay a lot of attention to that. You have this notion of redirects. What are some other cool features that the listeners should know about for Serve? Well, in regards to URLs, one of the things that Serve does is, like some web servers do or can be set up to do, by default, it allows you to append a slash to a file name without the extension in order to get a slash-based URL instead of a URL that ends in an extension. So one advantage to it when you compare it to like normal HTML is that it actually allows you to begin to prototype those URLs in addition
Starting point is 00:28:35 to the HTML that you're going to want for the application. It does have redirects, a very simple syntax there. You just open up an empty file with an extension redirect on it and put the URL in that you want to redirect to, and then it will redirect over to that other URL. And that's handy because there's a lot of times when you're programming or doing an application and you want there to be kind of a create action or something of that nature that creates and then redirects to a new URL. So having the ability to put a redirect in the place of where that action will be is helpful. You can also do email templates for text-based emails for prototyping that aspect, which gets sent out from the server. And it's not that you couldn't just have a text file or something like that, but SERV's got it in
Starting point is 00:29:40 place so that you can put the headers that you want on that email. It just renders in the browser as HTML, but it would allow you to kind of specify specs for the developer. You know, this is the address that I want it to be sent from. This is what the subject should be. This is the text of the email, the URL, that kind of thing. So there's just a number of aspects that are particularly familiar to Rails developers that Serves tries to make easy for the designer to give hints to the developer as to how the application should work. And so do you also have tie-ins to helpers
Starting point is 00:30:22 and other tools that link to, and you've got a number of different helpers there that are just kind of baked into normal Rails, so porting your view code is pretty seamless. Yes. We do have a number of the really common view helpers from Rails. Link to, you have access to the request and the response params, a couple of text massaging ones for like escaping stuff, that kind of thing. And then you can also put your own view helpers in a module and those would get imported into
Starting point is 00:31:02 the application. And what's interesting about that, if you're a designer and you're working on an application and occasionally you want to write something to make it, you know a little bit about Ruby, but maybe not a whole lot, and you want to write something to sort of indicate a certain output or something like that, you throw it in a view helper, then the developer has that as a guide
Starting point is 00:31:30 as he pulls it into the application. And your view helper could be completely stubbed out and that it returns the same response every single time. But then the developer would go in and each actually make it work with rip data or whatever it is. And there's a nice decoupling essentially between what the designer is kind of focused on and what the developer can be focused on in the back end because the developer can also come in and put in some common view helpers to allow
Starting point is 00:32:05 the designer to be more flexible in the way that he's designing. But it doesn't have to be the same as what's currently in the application, I guess. So they can work a little bit more independently, the designer and the developer. Sometimes if you're working in a Rails application as a designer, you can change one line of code and it messes up something unintentionally.
Starting point is 00:32:36 So it's a little bit more guarded when you're working in your own space, which is a really nice aspect of Serv. So as a user of Serv, what are some of the fun things that you like best about it, and what are some of the fun ways that you use it? I really love prototyping in general as it relates
Starting point is 00:33:00 to applications, and particularly having the ability to do layouts and partials in that Ruby-friendly way that I love about Rails view templates. I think that's where a lot of the early applications I worked on sitting down with a client and we were working through the application and I had a layout designed for the application and we were like, what should go on this screen? What should the fields be? And he would tell me, and I would just type inputs in,
Starting point is 00:33:49 and it just came alive, like before our eyes kind of thing. So I already had some styles in there. And because I wasn't actually working with, like, static HTML files or something like that, there wasn't a lot of code that I had to write in order to prototype the idea of something. And I went back later after that time with the client and was able to dress up the forms a little bit, change the style, a couple of things. But just being able to capture that really rapidly, right in front of the client's eyes,
Starting point is 00:34:27 what they were thinking should go on that page kind of thing was really, really helpful. And that project itself went through... We actually went back and redesigned the look and feel of it, and that was a matter of swapping in a new layout, and it all flowed and worked in the separate prototype application. So I think the maintenance of your HTML mockups is probably the biggest thing that I like about Serve, in that it cleans that up, it allows me to use the patterns that I'm familiar with in Rails, but I'm not working directly in the Rails space either, so I'm not getting in the way of
Starting point is 00:35:25 the developer making the changes. It allows me to be a lot more conceptual, I think, in the sense of just sort of dreaming about what a feature should do instead of being worried, I need another controller here, that kind of thing. And actually, because I do both design and development, that's almost needed for there to be that separation, because I begin thinking too much about the back end, and pretty soon I've lost time where I should have just been writing HTML and CSS. Right, you probably generate a controller, and next thing you know, you're writing out
Starting point is 00:36:03 the view code in your controller and whatnot and then dropping it to the view instead of actually crafting the UI and thinking about that. Yeah. Kind of keeps you focused. And I mean, I work with a lot of web applications and we make changes, significant changes at times. And if I was having to think about or adjust the way the controllers worked and all that kind of thing, just to prototype out a new way of doing something, there's times when we decide not to go down that path,
Starting point is 00:36:38 not to spend the money to develop that feature that way. And because we're able to prototype it in HTML, get the feel for the flow, get the feel for the features, the way the feature is actually going to work, we don't end up having to spend those dollars on the development at that stage, too. Or even a separate branch that somehow gets merged and it's who kind of the mess
Starting point is 00:37:05 that causes right that's uh that's that tends to be the road that i'm in i end up being on a team and somehow i end up in my own redesign branch and i'm like the only person there i'm like the designer in the front end doing all the prototyping that you're talking about and i've got devs and in other corners of the of the get repo that are doing their own thing and it's like at what point do we merge and and what kind of havoc is this going to cause yeah and i mean you probably have to get somebody when you're in that situation to come like sit by you while you do the merge or whatever yeah you're kind of scared to do it yeah i was like i don't want to merge this branch because I don't know what's going to happen. Yeah, I always feel a little bit guilty
Starting point is 00:37:48 when I do that kind of stuff because I'm not in the code all the time and I just know that I'm going to break something unintentionally and then the developer is going to come back and be upset. I've had the good fortune of working with really nice developers, but it's still like, what am I going to do here? I appreciate Serve a lot from that perspective. It's my world.
Starting point is 00:38:14 I can feel free to break things as I'm moving stuff around, and it's not a big deal. So we talked about Serve as a rack app. We also talked about it being heavily guarded for prototyping. But what happens when your prototype graduates? Let's say you're not building a Rails app. You're just building a UI in general, just let's say a brochure website or a light website with maybe 15 pages, 10 pages, something like that, that isn't very dynamic. It's pretty static.
Starting point is 00:38:43 And what do you do when that kind of application grows up? Well, I mean, it is a rack application service, so you can deploy it just like you can any other rack application, which means you can deploy it on Heroku or whatever Ruby host you like. So it is useful that way. You can also use things like Rack Cascade with a Rails application, for instance, running on Rack to cascade.
Starting point is 00:39:20 If the application itself doesn't have that URL, then it goes to the serve application to fetch that content, essentially. So there's some nice, because it is a RAC app, there's some really nice things that you can do in terms of integrating it with existing stuff or running it on its own at a different place. I almost see serve as kind of like the perfect pages control that I've always wanted in my Rails app. And it's almost kind of you want to see the two play hand in hand because you have this Rails app that has got a full backend, but you also have this lightweight marketing slash brochure website on the front of it to pin up to. But how do you build those in a normal MVC kind of schema in a Rails app?
Starting point is 00:40:10 Yeah, I think that there's actually some room there for serve to grow. It would be great one day to be able to share layouts between your serve application and your Rails application without a lot of work. There actually is some old, crusty code in there, I think, that ran on Rails 2 that allows you to... Yeah, you could mix in to a controller in Rails to serve functionality, basically. And then it would become your page controller and have access to the same things that Rails does. It hasn't been worked on in a while.
Starting point is 00:41:00 It probably would break if you tried it. Oh, boy. Yeah. Well, you mentioned that when you tackled the Grand project, which was Radiant back in 06, that you kind of felt like you were trying to really tackle something big. But then not long ago, you started a project called Acoustic, which intends to kind of bridge the gap between a Ruby slash
Starting point is 00:41:25 natural world and maybe even kind of bring some of the things we know about in Django and Rails into a more lightweight Ruby web framework. What is Acoustic? What is this about? Yeah, this is really, Acoustic is sort of my, like, pipe um web framework kind of thing um it's it's one of those things that i almost feel like foolish working on because like everybody has rails is such an awesome framework and sinatra is amazing that's small stuff like there's a room for anything else kind of thing and I feel like Rails has come a long way in terms of modularity particularly with Rails 3 but it still seems really heavy at times
Starting point is 00:42:16 and I've written a little bit about this on my blog. I wrote a post, what Rails could learn from Django, different things like that. And really trying to remove maybe the number of files that you have to create in order to work within the application, give you more flexibility in terms of where things are. One of the things that Acoustic allows you to do is have your controllers and your views all in the same directory. So what's the advantage of that? Well, if you're trying to structure something in a modular way, you could essentially have a part of the application that was like a Git submodule
Starting point is 00:43:12 because you're able to have just that folder, those controllers, those views, all of that in a separate repository. So Acoustic, its aim is to be maybe a more modular Rails-type framework, but it's still very much a toy. It's not fully implemented in any way. You couldn't download Acoustic and run anything on it right now. It's got a router in it. It's got a basic controller structure, but I'm still building out like major portions of functionality. And so, and it's really right now, it's kind of a back burner project. The hope with it would be that maybe it would either someone would adopt it and it would become something real or that it would influence the design of stuff like Rails maybe eventually. You mentioned earlier in the call, really early in the call, that you were highly optimistic about open source back
Starting point is 00:44:30 in the day when you were starting to work with Ruby Lang on the redesign and Radiant. Has your focus changed towards being highly optimistic because you just said that you hope that it kind of influences or maybe somebody adopts it and assumes that the open source world is just... Yeah, that's kind of optimistic. It's got three watchers. Yeah. It assumes that the open source world is just, yeah, that's kind of optimistic.
Starting point is 00:44:46 It's got three watchers. Yeah. Well, I am very optimistic about open source in general. I guess what I meant in reference to that was that open source is valuable to, extremely valuable to the person who is starting a freelance business. And the thing that I learned is that, yes, it can be, but it can also be, it can sort of take over your life, which is what it did with me and Radiant for a number of months. I was committed to not letting
Starting point is 00:45:27 our question go unanswered on the mailing list and things like that. And it just, you know, I couldn't have done it if I wasn't living at home with my parents at the time kind of thing. So I think that when I say I was really optimistic about open source back then, I was really optimistic that it was going to bring in business and let me do some cool things. And I feel like I was fortunate to get the projects and things that I did, and some of it was a result of my open source work, but my time could have probably been spent way better, even just cold calling people, offering my services than working on a open source product for six months. But I'm glad I did it too. I mean,
Starting point is 00:46:12 it was a great experience. So I don't know. It's just more in terms of thinking about where I put my energy in and all of that kind of stuff in the future, I'm much more aware of the effort that it takes to run a successful open source project. And maybe I'm a little more jaded than I should be about that as a result of working on something that's kind of as large as Radiant. But yeah, that's kind of what I meant. Yeah, I know that Radiant has done really well, and it's got a huge community. I mean, you even got your own GitHub group to manage that.
Starting point is 00:46:56 And I think inside of that group, you've got, you know, 49 members of that group. You've got 39 repos in that group. So obviously we should be optimistic about open source and you did a great job with leading this and starting this. But speaking towards the community that's prompted around Radiant, what were some of the things that you think you and the community did right to enforce and help elevate and provide support to the Radiant community and Radiant as a project? I think the early success of Radiant was the result of the plug-in system.
Starting point is 00:47:38 I was very, very dogmatic about what would go in and what wouldn't go in. And I look back on that dogmatism now, and I'm grateful for it in some ways, but I also realize that one of the important things about an open-source project is that you have a way for people to be able to make contributions. And in the beginning, I was really, really guarded about stuff. And part of it was that the tools that were available, subversion,
Starting point is 00:48:13 we had our own subversion repository, and the tools just didn't allow you to take contributions like in the way that it happens on GitHub. Now on GitHub, if you trust somebody, you can press a single button and their changes get merged in kind of thing. Now, you should be running the test on that before you do that. But the point is that it's that easy now to pull in changes from other people. So at the time, I can remember when Sean started using Git and GitHub came out, and this was before Radiant was doing that. At the time, we were a whole lot more guarded about, like, who could commit stuff and how. And there's definitely, It's a challenge because you want to be clear about the direction you're going in, but you also don't want to, like, discourage creativity and
Starting point is 00:49:16 contributions because there's going to come a time if your open source project is successful when you just get burnt out if you're doing all of the work, right? So I think one of the things that I think about more is, like, how can I allow someone else to take over this responsibility? And it's hard because, like, well well I'm a perfectionist I'm a perfectionist in terms of the way that I look at code I'm a perfectionist in the way I look at interfaces and all that kind of stuff
Starting point is 00:49:55 and so like if something is not perfect when it goes into the application there's a part of me that like dies it's so important to me that like dies you know um it's just it's so important to me that it like it be right and yet i i've had to kind of learn to to back down from that and recognize you know what this is the the way that like it works when you're on a team you know one person contributes something it may not be like the best but it's like filling a gap and it's progress yeah it's progress it's going in the right direction and um so i think in some ways as far as the way that Radiant went, I was really fortunate that Sean Cripps came along in particular, in that he was able to slowly kind of wrench the code away from my fingers and start submitting stuff. And then at a different point, Sean gave other people
Starting point is 00:51:05 some of their rights to the project. You know, at some point, you kind of realize that, like, you can't do it all yourself. And that if anything's going to happen, you've got to, like, turn over the reins and let people go with it. And people grow into these things, which is really neat to me, watching the way that open source works.
Starting point is 00:51:32 We've definitely seen on Radiant our developers grow in the way that they interact with people and the way that their coding style improves and various things like that. And giving them kind of a home, a place where they can do that is really vital to successful open source, I guess. So it's been a learning experience working with RADIAN. I think I've been really fortunate the way that things have fallen out. My dogmatism could have killed the project in the beginning. I recognize that now. But, I mean, it came really close at a certain point.
Starting point is 00:52:29 And it was just because we decided, you know, we're going to do an extension system that, you know, that didn't happen. Because people had a place where they could work out their frustrations with the way that Radiant was in a different way. So when you're not hacking on the client projects that you do, you'd mentioned that you work with Tralien and a few other client projects that you work on. But when you're not doing that and you're not hacking away at Serve or this fun dream called Acoustic or maybe even managing or working on Radiant.
Starting point is 00:53:05 What other open source projects got you excited that you like to mess around with? I am very excited about Compass right now. That's a big one. I am not as much of a contributor to other open source projects as I probably should be. I did commit some or work on some different parts that were in early versions of Rails. Definitely having fun with RAC, just getting to delve into that a little bit with CERV has been fun. I find it really fascinating that such a simple interface can be extended in so many cool ways. There's
Starting point is 00:53:58 a little application out there and actually it's a RAC handler called Rack Lobster, which is a web application that prints out a lobster on the screen. And I can remember when I discovered that thinking that was the most hilarious thing. Yeah, doing a little bit with jQuery plugins occasionally, writing some of my own. I've done a lot with Prototype, and there's a library by Dan Webb that adds some class selector stuff to Prototype that I enjoy. That's called LowPro. Yeah. That would be a couple. I think one of the fun ones that I'd like to dive
Starting point is 00:54:55 deeper in with you would be what you like about Compass. And you said Compass specifically and not Sass. I'm kind of curious why you just said Compass. Oh, I guess I kind of think of Compass and SAS as being sort of the same thing now. Right. I kind of do too.
Starting point is 00:55:16 I just wondered if there was, you know, you kind of like what was happening in Compass more so than SAS. Yeah, I mean, both of those projects are definitely evolving. I guess the joy that I get out of it on a daily basis, just the stuff that Chris Epstein has put into Compass, all the CSS3 stuff, being able to take advantage of that in a way that, like, works across browsers, I love that stuff. I don't think I would be messing around with CSS3 if it wasn't for Grills and Compass because it's just a pain to write all of those attributes like 80 times. Yeah, it is probably the biggest. I think that there's any CSS developer listening to this podcast right now,
Starting point is 00:56:00 if you haven't touched SAS or Compass, you owe it to your future career to go get started right now. But yeah, especially when you're talking about CSS3. I just saw a tweet today from one of our good friends. Let me see if I can refresh my tweet screen so I don't recall his name. Jeez, he's so well-known, too, and I can't recall why his name isn't coming to my mind, but he works at Intridia, is really well known for writing tons and tons of plugins. He's more of a developer than he is a designer, but he's also a designer. And his name is Mike.
Starting point is 00:56:40 Can't recall his last name. So horrible. Anyways, sorry, Mike. But he had said basically that... Geez, I totally lost the train of thought that I was even talking about. Basically, he was just saying that because of SAS and because of Compass, or because of CSS3, he's never touching Photoshop ever anymore. He's pretty much just having fun in Illustrator and right in the browser. And that's kind of my take too, is like as soon as I picked up CSS3, I pretty much don't even do that.
Starting point is 00:57:12 And I probably am like, QHUD wouldn't have picked up CSS3 sooner as I have or even have as much fun with it if it weren't for just writing one line to, you know, put out border radius versus eight. Yeah, I love that aspect of it. SAS, I could say a lot on SAS too, just the way that it allows me to kind of write my own,
Starting point is 00:57:39 to structure my code well as I'm writing CSS. I haven't so much developed, I wouldn't call it a library of SAS code that I use so much as I tend to copy modules from project to project. So I have a typography module that's got a lot of defaults in it for the way that I like to do the style, you know, my typography. And being able to do that, share the code in that way is huge. And the way that I'm able to create small little modules that do one thing and then use that everywhere throughout my code. Yeah, I love it. It's great. Yeah, I think Compass being able to framework in general,
Starting point is 00:58:30 people might be misguided with what Compass is, and when you say it's a CSS frameworking tool, in the end, the libraries within it aren't really frameworks. Like, for example, Blueprint and 960GS, those aren't really frameworks. Those are more so libraries, as Chris would say. And Compass, theoretically, is the frameworking tool because it allows you to truly create a framework of your working style. Like, I'm sure you have a structure for your SaaS that makes sense within working with
Starting point is 00:58:59 SaaS and Compass, and I do too. And that's really what I love about it. It's like you can kind of get into your grooves find your optimizations find your ways that you streamline the way you do things and you can just like pattern that with compass and sass and just go yeah yeah um i mean i think fancy buttons is a good example of a um of a framework i I guess, within... that's being distributed with Compass. Well, with Compass in mind, just so... For those of you that don't know,
Starting point is 00:59:35 Fancy Buttons contains a lot of CSS code for styling buttons in a bulletproof way. And if you use it on a project, you get access to a couple of mix sounds that would allow you to create buttons with a single line of code. You just tell it the color that you want, pass a couple of options in,
Starting point is 00:59:58 and it does the rest. I almost think you should have made that project called, it should have been called Magic Buttons or something like that. Yeah, I don't know. Because it's like magic. If you know Brandon, Fancy's kind of cool. It's the most excellent Fancy Buttons project.
Starting point is 01:00:17 Yeah. Now, we love Brandon. He's been on the show before. You know that. But Brandon's awesome. I met him a couple years ago at my friend's conference, Les Conf, and he's a good guy. And I certainly look up to him and his code and what he does.
Starting point is 01:00:31 And he's big in the SaaS and Compass world, and he's done a lot. And Fancy Buttons is super, super cool. But that's what I love a lot about Compass and a lot about SaaS. So I echo whenever I'm not doing pretty much anything i do do is is in and around the compass ecosystem like i've got a bootstrap for serve that i do that's got a lot of my fun things in it because i've been using serve quite a bit um so yeah sass compass is always in my projects and hamill as well but uh i don't cry when I can't have Hamill, but I can certainly feel the pain.
Starting point is 01:01:07 Yeah, I think I could live without Hamill, but I probably couldn't live without FAST now. So much is a part of what saves me time on my projects. Well, John, we certainly appreciate you coming on the show and sharing your feelings about open
Starting point is 01:01:23 source and your continued optimism for open source, as well as the work that you've done with Radiant and building that community and the work you're doing on Serve and all the stuff that you bring to the community and the ecosystem. I know that Wynn and I both certainly enjoy what you do, and I think you're an awesome designer, and it was fun having you on the show. So thanks for coming on. Yeah. Well, I really appreciate the invite. It's just great. I love what the changelog does, and it's fun to be on the show. Awesome, thanks. See you next time.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.