Cuttlesoft: You studied music in college, when did you get into programming?
Rob: I got into programming when I was about 8 years old and I got into music when I was 11 or 12, so those were always my two big loves. I went to school to do music, I’m a percussionist and I studied jazz drum set at FSU. I did two bachelor’s degrees, one in music composition, and one in music theory. Then I did 2/3rds of a masters in composition before I decided the academic route what not what I wanted to do in respect to music. I realized that music wasn’t the most stable careers in general, and I got back into software development. I had the opportunity to work with a friend, really cheaply, out of an extra room in this guy’s house doing R&D for product development. I took that job making very low dollars, and I was still teaching music at the time but I eventually phased into doing software development professionally.
Do you find similarities between the process of composing music and writing software?
Absolutely. You have to approach writing music from a very technical perspective and also from a very aesthetic perspective. You have to think about the big picture but you also have to think about the individual notes. And if you’re writing music there’s not just melody, there’s harmony and various orchestrations, different instruments, lots of different things happening at one time that interact with one another. The sum is greater than the individual parts, and the same thing happens with computer software. You have to think about big picture, UX, developer APIs, things that are happening simultaneously and how they interact, every little detail, every semicolon and logical expression, but you also have to think about this bigger picture of what you’re building.
In both cases, there’s an engineering aspect as well as a very human element. That mixture of art and reasoning that has to go on when creating music and similarly in writing software results in this combination of art and engineering that plays together. I wonder if I had not studied music and studied software instead if I would I have the same understanding of computer software. I’m inclined to think that I’ve been more successful because of this experience in music composition that let’s me approach writing software in ways that are unique or different.
You guys work a lot with the open source community at Durandal, what are some of the advantages of using open source?
There are a lot of advantages. I think one of the biggest is actually being part of a community. It means you can have comradery, you're part of a group, and you can get help from people all over the world. There are more use cases and more scenarios and perspectives feeding into that open source which help it to grow and make it better. It means there can be a closer relationship between the people that are producing the open source and the community that's consuming it. I think that the fact that the source is open helps it to be improved. More eyes on it are going to discover more issues, more bugs, more hands on it means more people can share the workload of developing it and fixing those things over time. Because it’s open it’s not locked behind somebody’s gateway, developers have a lot more freedom to not worry about what happens if they go in a direction the owners don’t want to go.
How does that community play into the enterprise side of Aurelia?
So on the enterprise side with Aurelia we have a core platform that’s all open source and free in addition to some commercial add-ons, but on the enterprise side of things we have enterprise support. So what we'll do is say, you can take this open source piece, and we’ll support you commercially, meaning you can pay us X dollars and we’ll basically put your developer team in touch with our experts. You can submit tickets and we’ll prioritize them and give you a support level agreement that says we’ll get an answer to you in a one day turnaround. So that’s added value we can provide on open source. A number of businesses that are enterprise will say “that’s worth it for us” because they can get all the advantages of open source but also get this additional assistance or safety net. In addition to all these resources I now have direct access to these developers. And even when we’ve moved on to version 2, if they’re still on version one, we still support them for a year after version 2 has been released and we help them migrate. That means they’re not in a bind when we release 2.0.
Last year was a big one for open source software, with Microsoft and Apple releasing Swift and .Net respectively. Where do you see the idea of an open-source moving in the future?
I see it as slowly growing. Various organizations have been hesitant, but we’re actually at a point now where you almost can’t write software without using some open source. And I think that some of these organizations that have been resistant to are realizing that that’s the case and have started to open up, and they’re hopefully starting to understand some of these benefits. Adoption is on the rise and the developers want it, so it’s really an issue of management, CTOs, and bureaucracy and internal politics. It’s gotten to a point now that companies like Microsoft and Apple have made such huge moves that nobody can really ignore it and say “we’re not doing this” anymore. I really am very happy about what Microsoft and Apple have done because it helps to push the community and companies in that direction.
Now, if you look at Google there’s a completely different thing going on. Microsoft historically has been very tied to developers in terms of how they've done their business. But at Google, their revenue has almost nothing to do with developers whatsoever, they make money from ads. So the open source that they're doing on the side takes a very different approach. They might be working on a visible open source project but from Google’s perspective, it’s not connected to their business. For example, with Polymer, a web platform being worked on at Google, if you go to the team and ask “is this a Google product,” they will say no. If you say “I’m a developer building my business on top of this technology would you consider me a customer?” they will tell you no. Whereas if you go to Microsoft they will say yes, .Net is a Microsoft project and yes you are our customer. These two different business perspectives have a lot of implications for the companies and that’s why I say not all open source is created equal.
You were part of the team at Angular, and you talk about “irreconcilable differences” between yourself and the team, could you talk a bit about that?
We disagreed on various technical choices which I felt wouldn't be tenable in the real world, wouldn't be flexible enough. But coming back to the business side of things, what I began to see when I worked there was that the entire development process was completely disconnected from the community. There was a lot of speak that went out that was “Thank you, we love our community...” and that was genuine, they really do, but when they went back to build version 2, there were no use cases or case studies coming from anyone, not even from inside Google. There were groups inside of Google using things that they could have done an official case study with, and that didn't happen there and it didn't happen publicly.
If you do a bit of research you’ll find that Angular is actually a subteam inside of something called GreenTea which is an internal app (specifically Google’s Adwords CRM). Really, that is the driver for Angular, and if Angular does anything at all, it’s going to be this one app. Because of how they’re set up there, Angular isn't really this independent Google product that exists to do what people think it does. It does some of those things, but that whole business side is missing. It really exists because it’s funded internally by this other thing that has it's own agenda.
What did you take away from that experience at Angular?
I came to realize people are spending millions of dollars in software development building on top of these JS platforms and the platforms that they're building upon are not officially supported. If you had a million dollars you couldn’t go to Google and say “fix this bug for me.” You can't pay for that kind of support. It would probably happen, but in a way that’s a bit shady, you would pay a core team developer on the side to do it and he would take that money, and that would be a breach of all kinds of things. It’s just not set up to allow for those kinds of things.
I started to think through these kinds of things and think ‘oh my goodness,’ this is actually pretty serious from a business perspective. One of the reasons I left is because I said ‘there’s a significant problem here that almost nobody is solving,’ and it can’t be solved while I’m working as part of the Google Angular team. In order for it to be solved, a company and a product has to be created and the business side of things has to be constructed correctly to be in a position to solve that problem. If you think about the kind of money that companies are spending and potentially losing, because of changes that may be made by company X that doesn't have that kind of accountability, it’s huge. So I said ‘we can solve this problem, but I can’t do it at Google.’
Rob Eisenberg and his various projects can be found online at http://bluespire.com/, http://durandaljs.com/, and http://aurelia.io/.