DragonRuby's Partnership Grows to Four, And Goals For 2020
by: Amir Rajan
In 2019, I made the decision to grow the leadership (and ownership) of RubyMotion from myself, to three more people. This entry covers the following:
- Introduction Of The Newest Partner: Alex Denisov
- The Role Of Community Members
- How The Roles Of The Partners Have Evolved
- Why I Waited Until 2019 To Make This Change
- What's Next
This news entry assumed you have read The Sleeping Dragon Has Awoken, And Is Filled With A Terrible Resolve, so take a moment to skim that if you haven't.
Introduction Of The Newest Partner: Alex Denisov
Alex has been working on RubyMotion as an independent contractor since November 2017. Just like Aaron and Ryan, I trust this guy a lot, a whole lot. He's pretty much a rocket scientist.
Here's his bio:
Alex is a software engineer with a decade of professional experience ranging from fancy mobile apps, to compilers, to spacecraft software (literally). As an open source enthusiast, he has a number of contributions to LLVM and Clang with one of them presented at WWDC. As an independent researcher, he got his work published in one of the IEEE journals. As a volunteer, he organizes LLVM User Group in Berlin, and serves as a program committee member at a number of industrial and academic venues. Once in a while he also writes some cool stuff in his blog https://lowlevelbits.org.
The Role Of Community Members
We Are Dragon Riders
In April, I announced the transfer of RubyMotion out of my personal corporation into a new company called DragonRuby LLC. With this change, the Slack Channel has been renamed from "Motioneers" to "Dragon Riders". A Discord Channel has also been created (for game devs). This is strictly a means to consolidate the branding of all the products that DragonRuby provides:
- "RubyMotion, a DragonRuby Product"
- "DragonRuby Game Toolkit"
- "The DragonRuby Runtime"
Note: "DragonRuby RubyMotion" doesn't sound too great, which is why we are going with "RubyMotion, a DragonRuby Product".
Note 2: DragonRuby is one word. So is RubyMotion (it makes it easier to Google/SEO optimize in case you want to blog about DragonRuby related stuff).
With the consistent branding, I'm hoping that the reply to the question:
"Hey, so what tech stack do you use?"
Has the commonplace/ubiquitous response of:
"I am a Dragon Rider."
Note: I understand that http://dragonruby.org going directly to an Itch page is confusing, but this is temporary. Aaron is working on the new site, which will present all of the DragonRuby products. Our current (soft) deadline for the new site is March 2020.
Product Sustainability Through Community Involvement
I don't feel that large companies are sustainable. Working for free (like most OSS developers do) is also not sustainable. The Unix philosophy of "make each program do one thing well" is sustainable.
Given the statements above, DragonRuby's one thing is: expanding the use of Ruby past the server.
As we "bring Ruby everywhere else," other products/services will be needed: training, mentorship/consulting, sponsored OSS, device manufacturing, and pretty much anything else you can think of. The goal is to provide these needs through collaborations with community members (not by growing DragonRuby).
I am already working with Lori Olson and directing anyone who needs training to WNDX School. I will continue to reach out to trusted community members who want to build complementary products that they can sustainably maintain: by charging money for licensing, or through OSS sponsorship.
Here are some ideas for things a motivated community member can provide:
- A Themes/Sample App Site that makes your app look good.
- AWS Marketplace offerings to support server-side needs (like crash logging and telemetry).
- A DragonRuby IDE written with DragonRuby.
- Raspberry PI storefront for purchasing "DragonRuby kid-dev machines".
You'll notice that "more training" isn't on the list above. We already have that covered. So, having an endorsement by DragonRuby is essentially exclusive.
How The Roles Of The Partners Have Evolved
Around the end of June, Aaron, Ryan, and I started to settle into our routines/responsibilities. I still felt a key role was still missing within the company.
Alex came on board in October to round out the team. Our "Enterprise TM" titles are as follows (ordered by when each partner joined the company):
- Chief Executive Officer (CEO): Amir Rajan
- Chief Information Officer (CIO): Aaron Lasseigne
- Chief Gaming Officer (CGO): Ryan Gordon
- Chief Technology Officer (CTO): Alex Denisov
With regards to the tounge in cheek comment of "Enterprise TM":
- DragonRuby is a tech company, so we all code and are damn good at it.
- We are small by design (which makes the grand C* titles seem silly).
- We all work on all parts of the DragonRuby: The Runtime, RubyMotion, and Game Toolkit.
- We all are equal partners and any decision must be unanimously agreed on.
The four of us provide an equilibrium within DragonRuby. We all keep each other in "check" and make sure the most important task is what's worked on to achieve DragonRuby's goal: bring Ruby everywhere.
- I (Amir) am an advocate for existing customers and an advocate for "the business of software". The products we provide cannot be demoware. We eat our own dogfood and I'm responsible for ensuring that this is true.
- Aaron's responsibilities are focused on new customer acquisition and new product development that would be beneficial to Ruby shops.
- Ryan's responsibilities are to ensure portability across all of our target platforms: iOS, Android, PC, Mac, Linux (include Raspberry PI), Web Assembly, Consoles (such as the Switch, PS4, Xbox), and VR (such as the Index, Occulus, and Vive).
- Alex's responsibilities are to ensure our investment in our LLVM based toolchains stay healthy and innovate.
Why I Waited Until 2019 To Make This Change
Back in 2008. Laurent (an Apple employee) made a bet on a brand new compiler called
clangand its underlying virtual machine called
LLVM. He wanted to create a Ruby implementation that leveraged this new, cutting edge compiler technology. Here's the time stamp for the first commit of MacRuby:
commit 91e697cb7665dad7192cd02ed4370a0731ed849d Author: Laurent Sansonetti <email@example.com> Date: Tue Feb 12 22:02:16 2008 +0000
It took twelve years for this bet to finally pay off.
Becuase of the success of the iPhone, chipset manufacturers had to "get on board" and provide backend compilers for
LLVM's Intermediate Representation. From there the dominoes began to fall:
- 2005: Apple hires Chris Lattner (the main author of
- 2007: Apple launches the iPhone. The launch went well to say the least.
- 2008: Work on a
clangcentric Ruby within Apple is started by Laurent.
- 2013: Sony adopts
clangfor the Playstation 4.
- 2014: Microsoft starts working on .Net Core (leveraging
- 2017: Chris Lattner goes to Tesla, then Google (looks like those companies are on board too now).
- 2017: Nintendo release the Switch which uses
- 2018: Google Chrome is built using
- 2019: Microsoft's Visual Studio Build Tools ships with
clangand completes .Net Core 3.0.
- 2019: Google Android API 26 requires 64 bit support and compiles using
LLVMgains a Web Assembly back end compiler.
- 2020: "Everything" uses
LLVMwith DragonRuby having the longest investment in the compiler toolchain.
When I aquired RubyMotion in 2016, I had to wait for
clangto "take over the world". If/when it did, the initial bet that was made by Laurent would pay dividends. In 2019, it finally happened. And so here we are :-)
The DragonRuby Runtime (and by extension Ruby) is positioned to go everywhere. There was quite a bit of work done last year in teasing apart some of the underlying Mac dependencies. This work will continue this first quarter and allow for the execution Ruby code that will work on mobile and desktop without any prerequisites/installed rubies.
Hold on to your butts.