Slide 1

Slide 1 text

Lotus & The Future Of Ruby @jodosha / #lotusrb

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

The future of Ruby

Slide 7

Slide 7 text

Will Ruby die?

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

Programming Languages Rank 0% 0,75% 1,5% 2,25% 3% Ruby Erlang Haskell Go Rust Elixir Clojure Source: TIOBE

Slide 11

Slide 11 text

Let’s imagine the future

Slide 12

Slide 12 text

The future is polyglot

Slide 13

Slide 13 text

Modern system languages are more developer friendly than C/C++

Slide 14

Slide 14 text

Maintenance costs for infrastructure will be less and less relevant

Slide 15

Slide 15 text

Ruby isn’t used anymore for components that require improved performances

Slide 16

Slide 16 text

Web applications will still use Ruby

Slide 17

Slide 17 text

Ruby is here to stay

Slide 18

Slide 18 text

Ruby is desperately trying to catch these new languages’ features, but this is a mistake

Slide 19

Slide 19 text

“We can’t make promises” - Matz

Slide 20

Slide 20 text

We need to find a new sense of purpose for Ruby

Slide 21

Slide 21 text

Ruby has to become the first-class solution for a well defined set of problems

Slide 22

Slide 22 text

Let’s have a look at the present

Slide 23

Slide 23 text

Homebrew

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

Thanks to a beautiful DSL, Homebrew has become a successful project with ~4000 formulæ

Slide 27

Slide 27 text

ORMs

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Sonic Pi

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Thanks to its expressiveness, Ruby can build bridges that reach complex systems

Slide 32

Slide 32 text

Docker uses raw BASH commands

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

MRuby

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

Let’s talk about humans

Slide 37

Slide 37 text

Like a natural language, a programming language is dead without people using it

Slide 38

Slide 38 text

Kids creating music with Sonic PI Credit: sonic-pi.net

Slide 39

Slide 39 text

Kids playing with “Hello Ruby” Credit: helloruby.com

Slide 40

Slide 40 text

People learning Ruby & web development Credit: railsgirls.com

Slide 41

Slide 41 text

Ruby can be an entry point for life changing careers

Slide 42

Slide 42 text

I hope that the Ruby Community of the future will be a safe place where everyone can feel welcome

Slide 43

Slide 43 text

We should improve Ruby ecosystem in order to attract experienced engineers from other languages

Slide 44

Slide 44 text

Web

Slide 45

Slide 45 text

Why not Rails?

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

Lotus Philosophy

Slide 50

Slide 50 text

Lightweight

Slide 51

Slide 51 text

Features as of v0.5.0 • Thread-safety • Full featured HTTP router • RESTful resources • Actions and views as objects • Actions callbacks • Code sharing • Exception handling • Sessions • Secure Cookies • HTTP Caching • Automatic MIME Types • 20+ Template engines • Partials and layouts • Presenters • Routing helpers • Form helpers • HTML helpers • Automatic markup escape • CSRF and XSS prevention • Force SSL • Entities • Repositories • Data Mapper • SQL and Memory adapters • Dirty Tracking • Reusable validations • Mailers • Multiple environments • Static assets • JSON body parser • Params whitelisting and validation • Code generators • Rack servers support • Application console • Database console • Powerful CLI • Migrations • RSpec, Minitest and Capybara support • Several architectures • And more..

Slide 52

Slide 52 text

0 17,5 35 52,5 70 Ruby Rack Sinatra Lotus Rails Dependencies Memory

Slide 53

Slide 53 text

On average, we use only a fraction of the features that a gem provides.

Slide 54

Slide 54 text

Lotus depends on a few gems. You can be sure that all the loaded code is useful for your application.

Slide 55

Slide 55 text

A complete framework

Slide 56

Slide 56 text

Lotus goes beyond “Flat-MVC” by providing a set of collaborators for “Full-MVC”.

Slide 57

Slide 57 text

Future plans

Slide 58

Slide 58 text

Lotus::Assets • Helpers • Third Party Gems • Preprocessors • Deployment

Slide 59

Slide 59 text

“Today’s good practices are HTTP/2 antipatterns” - Ilya Grigorik

Slide 60

Slide 60 text

Experimental HTTP/2 support

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

GitHub: jodosha/panther jodosha/instants

Slide 64

Slide 64 text

http://lotusrb.org/hackday

Slide 65

Slide 65 text

http://lotusrb.org/mailing-list Subscribe to the mailing list at:

Slide 66

Slide 66 text

http://lotusrb.org

Slide 67

Slide 67 text

http://lucaguidi.com

Slide 68

Slide 68 text

Q&A

Slide 69

Slide 69 text

https://speakerdeck.com/jodosha/ lotus-rubyday-2015 Slides available at:

Slide 70

Slide 70 text

Thank you

Slide 71

Slide 71 text

Credits Ruby picture by Orbital Joe https://flic.kr/p/79UqQM