RubyMotion's Guiding Principles
About eight months ago, I acquired RubyMotion. It's been a very busy time. Apple released High Sierra and the iPhone X. Both iOS and Android are pushing for mandatory 64-bit support on their platforms (iOS 11.0 is 64-bit only, in fact). With a lot of the work to support all these changes behind us, I finally got a chance to think about RubyMotion's guiding principles and what sets this platform apart from others out there. These guiding principles will provide the framework for future RubyMotion work. Here they are. Give them a read. Talk about them in the Motioneers Slack Channel (I'm always there, so feel free to DM me if you need to).
Note: For those that have been active in the Slack Channel and Community Forums, this list should be no surprise. I've tried to be as candid as possible with my thoughts and the bright future for this platform :-).
The Business of App Development
I have spent an immense amount of time understanding what it takes to make a good app. And have answers to a lot of the hard business centric questions.
- What is a good mobile experience?
- What's the right way to solicit in-app purchases?
- How do you get a high conversion rate for push notification and reviews?
- Among other things.
These are hard questions to answers (which is further complicated by a continually changing landscape). So, while the "tech" of RubyMotion is important, the business of app development is what will help you create a successful mobile experience.
People Over Entities
RubyMotion lifts its community up. It prioritizes its people over faceless companies. This mindset is an intrinsic part of the broader Ruby community. I want the devs that use RubyMotion to be known by name (along with the skills they bring to the table). This philosophy is incredibly important to me. RubyMotion isn't an insignificant line item for some large company. The devs that use this platform aren't some form of "commoditized corporate resource."
Aesthetics of Ruby
It's hard to put into words why it's such a joy to work in Ruby. In the past, I've presented about the "aesthetics" of the language, but it remains one of those things you have to experience it for yourself. The mobile landscape is in sore need of tools that provide developer happiness. Frameworks such as Fastlane help with bringing sanity to the madness, but we need more. RubyMotion will continue to provide pleasant experiences (from the first installation all the way to a production deployment).
No Walled Gardens
A greater mobile ecosystem exists, much larger than any single language+platform variant. RubyMotion will not take a "not invented here" mentality and attempt to boil that ocean. There are so many great libraries out there that should be leveraged. Work will be put into providing a curated set of these widely supported libraries.
Real World Over Tech Demos
It's fun to have a "cool" demo. It's fun to show "look at all the things I'm not doing." Some of these demos apply to real world app development. Most do not. The RubyMotion tutorials and code samples will be heavily motivated by real world, incremental, productive app development. Not demo-ware.
Sustainable Open Source
There is a significant learning curve with regards to supporting something like a compiler (what RubyMotion is). It's not enough to just open up RubyMotion's source code, and let contributors sink or swim. We have seen time and time again how much open source developers give out freely, with so little support from those that use what they build (OpenSSL for example).
I don't want this "thankless" mindset to happen to RubyMotion. My goal is to start opening up parts of the codebase, but sustainably. Where those that are interested in contributing, have a means to go from a "beginner" compiler engineer, to someone that would get hired by Apple, Google, or any of the massive companies (all of which desperately need devs with skills to support a product like RubyMotion).
Stewardship and Collaboration
I want those that use RubyMotion to have agency in the platform. I have no brilliant ideas. I'm just some guy who is in the business of building apps (day in, day out). App development is a trial by fire, with quickly evolving tech, ops, and monetization strategies. Every developer that uses RubyMotion is "in it together." The ideas and techniques that are found by real devs solving real problems they care about, will be "brought into the fold" of RubyMotion (taking the form of documentation, CLI commands, tutorials, etc.). Each person plays a role in helping those that are new to the platform get up to speed, build apps, contribute to open source, and succeed. It's this sense of stewardship and collaboration that sets RubyMotion apart from the other options out there.
Honesty Over Market Speak
I won't lie to you. It's odd that you have to hear this. But that's the day and age we live in. We are bombarded by marketing and grandiose promises that always fall short. You ask me a question; I won't shy away from giving you the (sometimes difficult) truthful answers. I mean that.
With regards to the broader growth initiatives, RubyMotion is essentially sponsored by my personal "studio." Given this, I get the luxury of doing tasteful marketing: reaching out to charities; having candid, meaningful partnerships with startups; and continued support (stewardship) of those that currently use the platform. This matters. Real, honest connections with developers, matters.
More to Come
The principles above will lead to concrete work items (which will be covered in future entries). For now, I just wanted to take a moment to set the stage.
- RubyMotion will help you make successful apps.
- RubyMotion will make you happy.
- RubyMotion will take a sane, sustainable approach to open source.
- RubyMotion's guidance, samples, and toolchain will be applicable to real world development.
- RubyMotion is here to help devs through their app development journey, not sell something and run away.