Couple of interesting things we can learn from Ruby


#1

Recently in the Ruby community 2 blog posts have been written

first

and then

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 :wink:

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.

the author then go into the case of JavaScript

Fragmentation is no stranger to the Javascript world. But it’s a different kind of value generation. Facebook, Google, Microsoft, they all want to be the thought-leaders in the fast evolving Millenials generation. It’s a long term strategy. And one of the elements of this game is the Browser. But not only in terms of Chrome vs Firefox vs IE, but also on how applications are implemented.

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 :smile:

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 :smile:

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 :smile:

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
  • Processing
  • Microsoft Silverlight
  • Asynchronous Javascript And XML (AJAX)

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.
This single paragraph absolutely illustrate one of the main JavaScript problems.

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

and

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

You can understand that most of the JavaScript industry want something like TypeScript
(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.

Read something like State of the Art JavaScript in 2016, I guarantee you it will be different in 2017, then 2018, etc.

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.

If you into Javascript backend development, well… that’s Node.js, that’s it.
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 Google, like FaceBook, then chose React
and by extension to target “not the browser” you will go with React Native

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.”.

etc.

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 ?
wrong!
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 :smile: but possible.


Couple of interesting things we can learn from JavaScript
#2

I love your articles :wink:
Keep them coming zwetan!


#3

The technology seems to moving backward , The unity game engine have nothing more than director had ten years ago . and so the other that they just an uncomplete version of flash and action script . Some times i think that adobe failed all the macromedia product . If macromedia continued on his way , maybe we were in a better situation .


#4

thank you :slight_smile:


#5

we will never know for sure

the thing is Adobe acquiring Macromedia was not all bad, in fact it was pretty good
it’s the mood swing later that was quite bad

Macromedia engineer were good but not as good as their strength combined with Adobe engineer strength.

Adobe brought their dev in the balance and that what gave us a new runtime: Flash Player 9 with a new runtime (AVM2) and a new language AS3, without Adobe resources I’m no so sure that could have seen the light of day.