1 of 62

Slide Notes

DownloadGo Live

RUBYVÄRLDENS FÖRESTÅENDE KOLLAPS

Published on Nov 21, 2015

Presentation at Nordic Ruby, 2013

PRESENTATION OUTLINE

FÖRESTÅENDE KOLLAPS

RUBYVÄRLDENS

Thesis:

Photo by August G

Kollaps

Distant Thunder: The ecosystems appears healthy or even growing just before collapse.

Disruption Threats: The ecosystem is vulnerable to becoming irrelevant because the platform is sustains is becoming irrelevant.

Insidious Pragmatism: The passion is forced out by pragmatists attaining critical mass, so it ceases to innovate and capture imagination.

Kollaps

Disruption

New platforms can obsolete a language overnight. Java Applets, HTML, and JavaScript killed Visual Basic.

Pragmatism

There's a certain person who culturally hates innovation. They might be a laggard in the "crossing the chasm" model. They often call themselves "pragmatists."

They are good for one reason and bad for two reasons.
Photo by bskolb

Low Volatility

Pragmatists value
Basically, death. Progress drops to zero and the ecosystem becomes a legacy platform.

There's no tolerance for risk such as breaking backwards compatibility. Microsoft has had one post-Windows hit, XBOX. The one that doesn't run Office or have "Windows" in its name.
Photo by cobalt123

The social dynamics of pragmatism

Photo by tranchis

Industrialization

Trite (and false!) definition: "Trading quality of result for lowering volatility, then scaling the output."

This is the pragmatic way. It's not just Java and its programmer hordes, it's also futzing with RVM and Bundler instead of rethinking Ruby :-)

Untitled Slide

Pragmatists are good because they bring the money. They get "results people can measure."

Which means, that quite often metrics like the number of companies hiring Ruby talent or the types of contracts available can slowly morph from tracking the ecosystem's health to tracking its penetration by pragmatists.
Photo by c_ambler

Tottering tower

The
Photo by sbluerock

cheeky bastard.

AND then he said, "Ruby sucks sweaty goat testes"
Photo by lovelornpoets

Development is going to move to tablets, and we don't have a good story here. Again, somebody needs to come up with a good story here.
Photo by Enthuan

There's more Of everything Ruby than ever before

Solved problems

These are all pragmatic issues, they look backwards.

We've built up, not out

Photo by Alex J White

What base problems are we ignoring?

Photo by fridgeirsson

COUPLING

Ruby has beautiful, but static coupling

Photo by Andres Rueda

Gems scale awkwardly

The global namespace is this century's "goto"

Another problem that needs hard thinking

Photo by ianturton

CODE HAS A TIME DIMENSION

QUOD ERAT DEMONSTRANDUM

Photo by yukop

THE very NOTION OF A STATIC PROGRAM IS FLAWED

Untitled Slide

programs are in constant motion, development is a process, not a project.
Photo by smith_cl9

A SPECIFICATION

WE DON'T IMPLEMENT
Photo by Eric Fischer

TRANSFORMATION QUEUES

WE MANAGE
Photo by blambarde

But reg,

Ruby tooling decouples apps from gems
Photo by tim ellis

And Reg,

Ruby tooling supports code changes

Right!

interesting things happen in TOOLing
Photo by Jsome1

What else do we learn from our tooling?

Photo by JmZ Florent

WE FEAST ON NUTRITIOUS AND TASTY TESTS

Photo by gautsch.

PROGRAMMING IS EMPIRICAL

Photo by Leo Reynolds

WE OBSERVE, NOT PROVE

Photo by drewgstephens

hmmm...

Coupling, temporality, and testing
Photo by akrabat

ruby Smells"

Proposition: "Pervasive TOOLS are
Photo by Don Burkett

What would a pragmatist say about this?

Photo by psgreen01

the past

Pragmatism holds onto

What would adventurers say?

The audacious"

"the future belongs to

We need to talk this over.
Photo by mikecogh

Components

Let's get serious about
Photo by marcus-e

Anonymity

Should be the default
Binding should be done much later than it is now. Code should have its own nicknames for things, it shouldn't know their global names.
Photo by Atropos91

Names are important for people to communicate, but not for programs.
Photo by pvsbond

It's the behaviour we care about.
Photo by Chris Arneil

We were playing in the fields and this boy said to me, "See that bird standing on the stump there? What's the name of it?"

I said, "I haven't got the slightest idea."

He said, "It’s a brown-throated thrush. Your father doesn't teach you much about science."

I smiled to myself, because my father had already taught me that [the name] doesn't tell me anything about the bird. He taught me "See that bird? It's a brown-throated thrush, but in Germany it's called a halsenflugel, and in Chinese they call it a chung ling and even if you know all those names for it, you still know nothing about the bird--you only know something about people; what they call that bird. Now that thrush sings, and teaches its young to fly, and flies so many miles away during the summer across the country, and nobody knows how it finds its way," and so forth. There is a difference between the name of the thing and what goes on.

http://youtu.be/05WS0WN7zMQ
http://www.fotuva.org/feynman/what_is_science.html

Bind-by-contract

This is the big idea.
Photo by NIAID_Flickr

We should write specs for the components we bind to, and refer to the spec versions, not the component versions.
Photo by jremsikjr

Bonus: a working time machine

Why bother working so hard?

Photo by ralphrepo

Why not move on to the next hip thing?

New languages rarely solve mature problems

Photo by Ben Cooper

Adoption

New languages optimize for
Which means selling people faster horses.
Photo by geezaweezer

People buy what they think they know

Photo by CARLOS62

But Progress requires rethinking

Photo by Motor74

Ruby has problems that shiny-PL can't have

The wheel

Let's stop reinventing

Important problems

Let's solve new and
Photo by maxf

Tack!

Photo by mandiberg