Hopefully someone will be able to address your main questions
before I find the time, but I do have a quick note:
Excerpts from bluescreen303's message of Sat Jul 18 03:11:11 +0300 2009:
> On the performance part:
> I'm switching to ruby1.9 for newly started apps.
> I think at least waves & ramaze support 1.9 at the moment (not sure
> about sinatra?), but I would like to use 1.9's native threads as well.
> So my choice needs to have full concurrency support.
> In other words, I would like requests to be handled in threads so I
> don't need to run many instances.
1.9 MRI uses a global interpreter lock, GIL. You will not be
getting full parallelism. JRuby's threading maps to JVM threads,
so theoretically you will be seeing actual parallel execution.
(Strictly speaking, all implementations including 1.8 have full
concurrency support -- but not parallelism. Yes, whoever thought
those two terms were different enough to use for the two related
components was an idiot.)
That said, 1.9 is a fine target.
Eero
--
Magic is insufficiently advanced technology.
This is probably a hard and opinionated subject, I don't want to start
a flamewar of any kind.
I don't have a specific use-case in mind, but since I'm moving more &
more towards rich client(ajax, comet) applications, and different
storage solutions( like couchdb ), I want a more lean-and-mean
solution which acts mostly as a authentication / validation layer,
In my experience, I found that rails is too monolitic (for now, 3.0
will change that). Not using activerecord (I like sequel for
relational stuff, couchdb for more document-like data) is a bit of a
pain for rails, as stuff like automatic routing, forms, validations
and other things won't work. Many people have done excellent work on
providing interoperability layers to ease this, but still I get the
feeling the system is working against it.
So I would like my next framework of choice to be a whole lot less
monolithic and domain-model agnostic.
I think this applies to all 3 frameworks but correct me if I'm wrong.
On the performance part:
I'm switching to ruby1.9 for newly started apps.
I think at least waves & ramaze support 1.9 at the moment (not sure
about sinatra?), but I would like to use 1.9's native threads as well.
So my choice needs to have full concurrency support.
In other words, I would like requests to be handled in threads so I
don't need to run many instances.
And architecturally:
I'm a big fan of REST. Not so much of MVC. Basically I think REST made
controllers almost obsolete. In some projects, I switched to MVP where
P stands for presenter/conductor, which basically handles the mapping
between view data/forms and Models. Stuff like multi-model forms were
handled here, among other things, as were permission-rules (which
fields are viewable/editable by current_user).
While my client-applications (javascript) became more & more powerful
and intelligent, mapping models became less needed. Also I'm mostly
just passing json back & forth, so I'm basically looking for a thin
layer between my models and client apps that handles permissions, thus
validating client requests to the model and controlling what can flow
back. Also, since the javascript application handles most view
building, I don't really need much of a view layer with lots of
helpers and templating options.
I know that ramaze wants to enforce MVC, which I don't really like.
What's waves' vision on overall architecture?
Like I said,
I'm very interested in the differences between the 3 frameworks on the
points I mentioned above.
Also overall vision of the projects is important to me (I like how
rails 2 took a firm stand on becoming restful all the way). Any
comment on overall design/architecture are very welcome.
Excerpts from bluescreen303's message of Sun Jul 19 21:12:15 +0300 2009:
>
> Maybe it's worth looking into jruby or rubinius for me, but I've never
> used anything java-ish, and I don't know if rubinius is
> production-ready yet.
Rubinius is not production-ready (although we are getting
*really* close.)
You do not really need to know anything about Java to run
JRuby: it is intended as essentially a drop-in replacement
of MRI. The few things you need to twiddle (CLASSPATH etc.)
are covered in the installation instructions. JRuby's perf
is pretty solidly a bit better than 1.8 and in most cases
1.9. Be aware, though, that JRuby's 1.9 "mode" is not fully
featured yet, but it will get there. The other caveat is
that JRuby does not support the MRI C extension API (but
Rubinius will), so they have ports of the most crucial C
extensions and theirs is currently the de facto reference
implementation for FFI, which may squeak you by.
> I know rubinius has some kind of bytecode. Do you know of any plans to
> make those compatible (or an extension of) MRI 1.9 bytecode?
Absolutely not. I actually expanded on this topic a bit
recently in a ruby-core thread, so peek at the archives
if you are interested!