Recently in the Ruby community 2 blog posts have been written
What, are we not talking about ActionScript 3 anymore ?
Yes we are, but as any other programming languages and ecosystem for programming,
we can also learn from others
So, in the second article “Rails has won: The Elephant in the Room”,
you can read quite many interesting things from my point of view.
I would say read the whole article, but here the interesting bits
After writing on how Wordpress, even if originally a blog system, is used as a CMS massively
and how frameworks are isolated island, eg. Wordrpess plugins work only with Wordpress,
Magento2 plugins work only with Magento2, etc.
Do Wordpress plugins work with Magento? Nope. They are 2 fragmented, independent and isolated communities. But they both generate a lot of revenue, which is what covers the cost of redundancy between them. And this is not even counting Drupal, Joomla. PHP is one big ocean of disconnected islands. Countries with severe immigration laws.
Facebook came up with React. Google came up with Polymer and Angular. The Node guys went through a power struggle with Joyent which almost resulted in further fragmentation but they settled for the Node Foundation.
All that is very true, every big players have their own way of doing things and this create different frameworks and different communities
and from there …
Apple went all on war against Adobe’s Flash and then only now Google is turning them off in Chrome, but they are all looting on the consequences for all the attention it brings in the Web Development communities.
see we are talking about Flash
and yeah that’s also very true, Apple by banning Flash bring even more attention to it,
and now with Google planning to block it because remember “HTML5 is mature”
have the very same effect to bring attention to it, or at least bring up the debate around
“what is best for web development”.
That’s the interesting things about this article, it really show well how all those languages
and their associated framework are in fact just big players protecting their turf.
Apple wants native to succeed and Swift to be the one language to lead it all. Google has conflicting strategies because they want native Instant Apps to succeed but if it fails, plan B continues to be for them to dominate HTML5/CSS3 based web apps with Angular. Facebook don’t want to have their fate being decided by the power struggle between Apple and Google.
I never seen it expressed so well, it’s all true
if FaceBook build something like React and React Native it’s because they don’t want to be dependent either on Apple or Google, as they all compete with each others.
It’s a complex power struggle unfolding, and you can see that it’s not about technical prowess, it’s not about value generation. It’s about ego, influence and power. Very fitting for the YouTuber generation. And the web technologies are being held hostage in this siege, if you havent’s noticed.
it’s so very true (yeah I repeat that a lot but the guys is right)
let’s skip some parts about Ruby and Microsoft .NET, and have more quote where we can see the real meaning of all that
So, first of all, I will always prefer tools that solve a real problem made by those that actually depend on them. Otherwise, the shoemaker’s son will end up barefoot. Case in point: I will definitely use Angular, if I have to. But I would never, ever, begin a new business that depends solely on Angular to survive. Why? Because Google doesn’t need it. It didn’t blink to give up GWT, it didn’t have to think twice to decide to rewrite Angular 2 in an incompatible way to Angular 1, and so on.
again that’s true. GWT that was all the rage at some time has been abandoned by Google.
And it’s where I bring up the Flash argument
Why do you think Adobe does not promote Flash and/or Adobe AIR?
because ultimately Adobe does not need them
As a business Adobe is about building designer application and tools,
when they bought Macromedia to acquire Flash, their goal was to add
a tool that all designers were using but was not theirs in the first place.
And remember, Adobe did try to build a couple of “Flash Killer”,
and they all failed
originally found here http://labs.almerblank.com/2011/10/a-review-of-flash-killers/
but only available trough the web archives now
A Review of Flash Killers
In the list you can see
- Scalable Vector Graphics (SVG)
- Adobe Live Motion
- Microsoft Silverlight
The conclusion about HTML5 is quite interesting, anyway my point here is that after SVG and Live Motion, Adobe ended up buying Flash by acquiring Macromedia.
What Adobe did not plan is that Flash was not only a designer tool, it was also a programming ecosystem and so was “forced” to continue providing what developers and designers wanted: an upgraded version of Flash with a new language (AS3), a new Virtual Machine (AVM2), new API, new tools and workflow (Flash CS and components like SWC) and many other things like new way of publishing (the Out Of Browser experience that is Adobe AIR).
But make no mistake, Adobe goal is to build DESIGNERS tools, not to entertain the ecosystem around a programming language, there is no business case for them in that.
And it’s not only Flash, where is Director ? where is ColdFusion ?
also out of of the picture
But let’s continue reading this article
Second of all, I will always see what other external factors will influence the fate of the technology. Imagine that I spent a whole lot of time writing scripts, libraries, tools for Grunt. Then people decide it’s bad. Now Gulp is the better choice - and you will find plenty of technical reasons. Now you invest a lot of time writing everything you had for Grunt to Gulp. Then, for plenty of other reasons people decide that Webpack is the best choice. And there you go again. NIH (Not-invented-here) syndrome gallore.
One word: beautiful.
Grunt -> Gulp -> WebPack -> next one -> next one -> next one, etc.
As long as a big player doesn’t pull his weight behind such tools, those tools are condemned to reinvent themselves over and over and over
This is clearly a small bubble. It’s tulips all over again. There are too many big players (Facebook, Google, Apple, Microsoft, Mozilla, etc) with big pockets, plenty of time and resources. This is how an experimental lab works in public. Lots and lots of experimental alternatives and several businesses blindly choosing depending on the best sales pitch of the week.
yep, very true, all those big players focusing on the web platform, the competition is fierce
and also why Adobe decided to not go further with Flash.
See, as a business it is much more in the interest of Adobe to not fight with all those other big players,
it’s much better to provide tools that work with their tech than to propose an alternative tech.
That’s why you see now a Flash CC renamed to Animate CC that focus on being an animation tool and that exports to HTML5 or have such plugin which works with Dart.
And from there the author of the article continue on his main subject: Ruby.
But in the conclusion you can read one more interesting thing
But you can’t change the architecture of Rails too much, otherwise you risk breaking down very big chunks of the projects that are deployed in production now. And when someone has to rewrite big chunks of a project you might as well consider rewriting it in something else entirely.
Many people are doing exactly that, specially for APIs and web applications implemented as SPAs talking to APIs. The APIs can be written in Go, Elixir, Scala and avoid Ruby altogether. You lose the fast turn around of the Rails ecosystem, but if you can afford it (you’re a Unicorn startup with deep pockets), why not?
The author is again totally right, when come the time where the technology stack change and you start to think you could rewrite some parts of it and sometimes big parts of it, well…
That’s where you can seriously consider changing the whole technology stack.
And for Flash … it is exactly what both Google and Adobe wants.
Google is about “HTML5 is mature” and stop writing Flash for the web
because it’s all in their interest to have a developers writing for HTML5
Adobe is in the position that even if they have to keep supporting Flash
they would rather stop doing that as it’s not anymore part of their plan.
Even before the recent events (Google deciding to block Flash in Chrome),
we could see this strange association of Adobe with Google
when they proposed the Flash Professional - Toolkit for Dart.
So, I would not say that Dart is dead, but humm I don’t see it going anywhere.
When you watch this video
TypeScript and Angular 2
(eg. they want types to write big apps)
that Google with AngularJS 2, even if they keep proposing a Dart-based solution,
have no problem and are pretty happy with a TypeScript-based solution.
In fact, Google invested quite a lot of efforts into TypeScript, people may interpret that
as the “end” for Dart; also Google push MicroSoft to develop TypeScript in some directions they did not plan, eg. the compiler/optimiser part.
And oh surprise, Google advice is if you start a new app to directly use Angular 2,
even if they still plan to support Angular 1 for some time, this clearly indicate that for them
Angular 2 (and by association TypeScript) is the future of HTML5 app development.
So from this article about Ruby which provide a firm light on how the industry works,
from this video “TypeScript and Angular 2” and from a bit of personal experience
(eg. I do know JS, I was coding JS before Flash came along, and in the last few years I did work with numerous JS frameworks and other tools) here some conclusions and maybe advices:
Every single JS framework out there, if it’s not backed by a big player, is a pure waste of time
Things like Knockout.js, backbone.js, etc. they are bound to either be replaced by the next best shiny thing or bound to be replaced by a big player solution.
OK maybe I’m a bit harsh about the “pure waste of time”, but really whatever JS framework you go with, unless it is backed by Google / FaceBook, Mozilla, etc. it will be replaced.
Except when the framework is the only player in town, like RoR with Ruby.
Look at how you install Angular or TypeScript you do a
npm install ...
because Node.js own the backend development it also own the tools development,
when someone want to distribute something related to JS, it is a no-brainer they distribute it with npm.
You don’t chose a technology stack, you chose a big player
Don’t like FaceBook, like Google, then chose Angular
and by extension to target “not the browser” you will go with Angular 2
which promote “One framework. Mobile and desktop.”.
But there is a catch: be ready to change your whole technology stack based on the big player decision.
Example: Angular 1 vs Angular 2.
Other example is: CommonJS.
Thought that CommonJS was a community effort to create a standard ?
CommonJS have been killed by Node.js
People still refer to it as “CommonJS” but it’s not CommonJS,
it’s whatever Node.js decide it to be
last example: Parse
FaceBook bought it, then FB decided to close it
that’s it, it’s gone, and there is nothing you can do about it
What about Flash then ?
You have a mixed situation with technically 2 big players: Adobe and Starling.
As long as Adobe see a business interest in developing the runtimes they will do it, but it mainly concern Adobe AIR, Flash Player is more about “we keep supporting it because we have no other choices”.
And yeah Starling is a big player in the same vein as Node.js is a big player,
it is the framework that lead the “we reuse Stage3D goodness for 2D”,
which was the plan of Adobe for their ASnext that was abandoned.
They are not the only one, but they are the bigger one which also put the developers that depends on it to accept whatever decision is taken by the people behind Starling.
It is the same situation as Ruby on Rails with Ruby, really.
Yep, even if the whole thing is open source.
I’m not saying it is super bad, I’m saying as a developer you have to be clearly conscious of the situation and the pros and cons to go “with it” or “against it” depending on what you try to do.
In some case I would say there is also a 3rd option to explore which is the server-side,
but it will not work for everything like highly interactive games, but the same way you could replace some part of a framework by a REST API and/or other micros-service, you could move some part of the logic of your heavy GUI client to the server, and maybe develop another client with another technology to consume that server API.
But here we are in the case, “hey let’s rewrite this part of the application”, if the part is a little too big you may in fact want to completely rewrite it with another technology (HTML5 for ex).
Voila, what we can learn from Ruby and RoR, is that in general you want to follow the big player, wether it is a the big corporation promoting the tech (like Google, FaceBook, etc.) or the open source project that is leader in the community (like Node.js, RoR, etc.).
Or you can ignore all of them and build your own tech, which is quite risky but possible.