Rarely do the words "open source" come to mind when the Microsoft Corporation is mentioned. As the maintainer of the SQL Server stack for both Ruby & Rails, and a long time Apple/UNIX fan, I have been engineering solutions to make working with SQL Server as easy as possible. Often times the work has required outside in hacks to a closed & proprietary set of technologies. That changed last week.
Both Sean Griffin and I were invited to represent the Ruby/Rails community at Microsoft's first #OSSDataCamp. The idea is simple; to open up and engage our community at an intimate level. The results so far are incredibly positive and these new relationships feel lasting and honest.
This post contains interesting details if you want to learn more about Microsoft's Azure platform. We were lucky enough to be exposed to some candid inner workings of their latest service offerings which look to be a strong competitor to Amazon's Web Services.
We Want To Learn From You
That sentiment was echoed by everyone I met. From engineers to leadership and various product managers in-between, Microsoft is hungry to learn and this time it does not feel like the old consume & conquer strategies from the IronRuby days. Instead their new culture closely reflects that of CustomInk's own Inkers. Our hosts were the most upbeat and polite folks I have seen.
Windows Support - A Diversity Issue
As Sean Griffin put it, we cannot require new engineers to buy a MacBook Pro to learn Ruby. Be it a Rails Girls workshop or your local meetup group, a poor Windows experience can literally lose good, diverse talent in our community. Thanks to projects like RailsInstaller, and the modern replacement RubyInstaller, we are stronger than we have historically been. But we can do better.
To that end, Microsoft has kindly agreed to provide key projects like Rails, TinyTDS, and the ActiveRecord SQLServerAdapter with funded continuous integration using AppVeyor services. Such a small cost can greatly impact our feedback loop and identify pain points quickly.
A Changing Culture
Change is hard on all sides. For me, getting into the mindset that Microsoft can help was a big step. When Sean found issues with execjs that led back to Windows Script Host, they introduced us to that team. Likewise, the SQL Server adapter has always needed a bullet-proof cross platform binary to dump the schema. "We can help and here are the engineers..." was the reply. Wow!
Some issues sit well in Microsoft's sphere to solve. What most impressed me was how eager they were to address them. Being a large company, often times the immediate answer was to schedule a series of 1-on-1s with the team(s) responsible. Connections and conversations like this quickly led to even pondering if Ruby could be installed on Windows by default. Or maybe even build cross platform SQL Server development binaries! 😱
Quid Pro Quo
So what did Microsoft learn most from us? Other than Rubyists keep it weird? Likely their biggest takeaway was that Sean Griffin loves to play the Keep Talking and Nobody Explodes game. I mean he really loves to play this game.
It's simple, use 2-way, fast-paced, verbal communication to quickly identify and defuse a virtual ticking time bomb. As it turned out, this is a great team building exercise. Becoming a bomb defusing expert is high on my list and I can not wait to play with a group of my fellow Inkers. Thanks Sean!
Coming Soon To Ruby/Rails
We got a lot of work done along with establishing some big milestones for those using Windows and/or SQL Server with Ruby. Here are some things you can look forward to:
- Upgrade TinyTDS to the latest FreeTDS v0.95 which supports the TDS v7.3 protocol.
- Making the adapter pass all tests for Rails 5 under active development.
- Allow TinyTDS to be statically compiled on every platform w/OpenSSL for easier Azure support.
- ActiveRecord JSON support via a v4.2 update. Leverages SQL 16 Box/Azure built-in JSON.
- Binstub wrappers for all statically compiled FreeTDS binaries.
- First class Azure support for Rails which includes proper DB setup and clone tasks.
- Allow the rails-sqlserver adapter to use an alternate jTDS connection mode.
These items are tracked in the TinyTDS and/or the SQL Server Adapter milestones on GitHub. Follow along or contribute if anything interests you.
Microsoft Azure In Brief
Azure != SQL Server, it is much more. Think AWS (Analytics, IoT, CDN, Etc) with a better frontend portal. Microsoft's Azure platform and PaaS offerings are amazing and accessible for anyone looking to rapidly build out their new web application suite of microservices. Seriously, you really should consider it next time you are looking for a Heroku-style marketplace. Here is a quick brief:
- 1 out of 4 VMs are Linux.
- 7 million requests a second.
- 1.6 million SQL databases.
Command Line & Application Interfaces
Portal smortal, who wants GUIs? The real power is in the command line and automation. Just like Heroku's toolbelt, Azure has cross platform binaries that are open source on GitHub. This client has rich 2FA and is packed with interfaces. Services can even be stood up with a simple JSON template hosted on GitHub. Need an application interface? They have a Ruby SDK too.
Their marketplace and open source service offerings are seriously impressive. One that stood out is their Elasticsearch service and how well it can integrate with any data source. They literally built an entire frontend GUI that can help you build out super impressive search indexes.
The message, "We give you 99.99% uptime, you worry about how search works, and we take care of the rest." really stood out to me as a market differentiator. Maintaining shard strategies and the complexities of Elasticsearch is not what I want to do.
SQL Server 2016
I can't even begin to go into all the amazing features of SQL Server 2016 now available on Azure. A quick list includes:
- Built-In JSON Support.
- Always encrypted data with transparent app/client usage.
- Data Lake infinite storage with built-in Revolution-R analytics.
- Diverse sharding and multi-tenant structures.
One feature that stood out was SQL Server's ability to stretch or archive historical data transparently and securely. This can be done entirely via their hosted service or coupled with your on-premises SQL Server databases. All without the application caring about managing that cold <=> hot data.
Special thanks to Microsoft as a whole. Especially to Andrea Lam and Meet Bhagdev for their personal & professional support during our trip. You made us feel right at home. Also in attendance for the first #OSSDataCamp were Michael Manfre, Michiya Takahashi, and Tim Graham. All of whom represented the Python/Django community and helped our open source cause.
This is a process and one that I hope continues with Ruby and other languages. It will succeed if Microsoft actively contributes back to open source and in some cases, champions certain projects with an earnest level of excellence.
To the right is Tobias Ternstrom and myself. The reason I am so happy in that photo is that Tobias literally helped make FETCH happen in SQL Server. Supporting a sane limit/offset model allowed projects like the ActiveRecord adapter to delete hundreds of lines of code while becoming more maintainable. Thanks so much Tobias! All ORMs everywhere love you.
And lastly, I want to give a shout out to Lars Kanis who has been a huge contributor over the past many months by making TinyTDS work well on Windows. Let him know it if you see his pull requests.