README.md in voom-presenters-0.1.11 vs README.md in voom-presenters-0.1.12

- old
+ new

@@ -1,14 +1,43 @@ # Voom::Presenters +## TLDR; +Presenters are to HTML/User Interfaces what C is to assembly. + A Ruby DSL for describing user interfaces. The semantics are adopted from [Material Design](https://material.io/). A presenter generates a Presenter Object Model (POM). A POM fully describes a user interface. A POM client can fully render user interface from POM. +## What are voom-presenters? + +* A Ruby user interface abstraction. +* A Ruby DSL to build a user interface. +* A power washer for building user interfaces. + +## Why? + +Building a user interface should like Ruby itself: +> ... a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write. + +Instead building a user interface has turned into: +> How many languages/technologies/frameworks do I need to learn to build a rich user interface/experience?" + +A typical web client requires at a minimum the following: HTML, CSS, Javascript, in addition we need Ruby on the server, plus some SQL. +That is 5 technologies/languages. +Now lets talk about a new client like an iOS or Android client. If we go native, we can now add Java and Swift to that list. We are up to 7 technologies/languages! +We didn't even add any popular extras like coffeescript, haml, sass, and we left out frameworks. + +What if you could write all my user interface in Ruby and have it rendered natively in ANY client? The voom-presenters _enable_ that. It is a Ruby DSL that describes a user interface. +It generates an intermediate Presenter Object Model (POM). +The POM is a declarative user interface that can be rendered by a POM client. +The core presenters gem provides a Web client as a fully functional reference implementation. + +This concept was initially inspired by the Presenters concepts of Ivar Jacobson as presented by Robert Martin. + ## Demo [Demo](https://powerful-bastion-96181.herokuapp.com) Or to run locally: @@ -16,25 +45,25 @@ git clone git@github.com:rx/presenters.git cd presenters/ bundle install rackup - open htt://localhost:9292 + open http://localhost:9292 To see the POM: - open htt://localhost:9292/pom + open http://localhost:9292/index.pom ## User Interface Engine The POM + A POM Client is an interface engine. This example downloads the POM of the index page. Then posts it to the reference web client. That result is then saved to a file and opened up with a browser. - curl localhost:9292/pom/index > $TMPDIR/index.json && curl -d "@$TMPDIR/index.json" -X POST localhost:9292/index > $TMPDIR/index.html && open $TMPDIR/index.html + curl localhost:9292/index.pom > $TMPDIR/index.json && curl -d "@$TMPDIR/index.json" -X POST localhost:9292/index > $TMPDIR/index.html && open $TMPDIR/index.html ## Status This project is in a pre-beta status. It is changing frequently as the first user interfaces are being built with it. Any use should be for internal use only until the status becomes beta.