Bindings, Platforms, and Innovation
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
Tracking change and innovation in the enterprise software development community
Posted by Mirko Stocker on Oct 14, 2008 04:50 PM
Release Candidate 1 for Merb 1.0 is now available. Merb's goal is to provide a minimal but powerful core that can be extended through plug-ins, rather than "trying to produce a monolithic library with everything in the core", as stated on its website.
InfoQ talked to Merb's maintainer Yehuda Katz, to give us a picture about Merb:
The main thing to remember about Merb is that we focus on providing a strong set of core features that make very few assumptions. On top of that, we add a set of defaults that can be granularly removed. We spend a lot of time making sure that the defaults are not entangled and very easy to remove should you want to make different assumptions than we have made.
This makes it a lot easier to adapt to new techniques or paradigms (like cloud computing, changes in JavaScript technologies, improvements in Ruby's database support, etc.).
From our perspective, the biggest difference between Merb and Rails is that Merb believes in extremely granular opt-out of defaults that we provide, while Rails requires fairly large opt-out decisions. The Merb stack is more like a stack built of lego blocks, while the Rails stack is like a stack built of Duplo blocks (if you opt-out of an assumption, you're opting out of a lot).
With that said, Merb agrees 100% with Rails' ideas around convention over configuration; we want developers who use Merb to be able to get up and running quickly with a similar set of opinionated assumptions.
Switching frameworks usually takes some time and effort, so we wanted to know how Merb helps a Rails developer with the migration:
The good news is that you can still use your ActiveRecord models, and that controllers and views are similar enough to make a port relatively straight-forward. That said, there are some syntactic and conceptual differences between Merb and Rails, and we should have a list of the differences on the Merb wiki before we release Merb 1.0 final at the end of this month.
There are also two upcoming books on Merb:
I'm working on a book on Merb for Manning, which is already starting to become available via their MEAP program. Foy Savas is also writing a book for Addison Wesley.
In an InfoQ interview in January, a "central plug-in site" was mentioned, what is the status on that?
Part of the 1.0 release involves making the Merb project include a number of common plugins, like authentication, caching, and exception notification, as first-class citizens. We may, at some point, revisit a central plugin repository.
Yehuda recently blogged about improvements in Merb Server, so we asked him to elaborate on that:
Both Merb and Rails have mechanisms for starting themselves up and serving pages. In Rails, this mechanism is script/server. In Merb, it is the merb command. For 1.0, we significantly improved merb's version of the server to add features that were sorely missing in Merb 0.9.
Some examples:
In the future, we'll be further improving the merb deployment solution.
- Starting up a cluster of Merb servers to bind to specific ports that are already in use does not cause Merb to crash. Instead, Merb prints a notice and waits for the ports to become available. This allows the following deployment solution: (1) update new code on the remote server; (2) load up new merb cluster; (3) kill the old cluster gracefully.
- It's now fast, easy, and foolproof to reload your code at production time if you have not added additional gems or modified init.rb. Simply run merb --fast-redeploy in the directory in question and all code will be reloaded.
- If a merb worker process is killed (even via kill -9) it will be instantly respawned. This allows you to have monit kill bloated processes without having to worry about downtime.
Now that 1.0 is almost out, what is planned for Merb 2?
The plan is to release several 1.x releases over the next year or so that preview features that will be in 2.0. Instead of dropping a big 2.0 release with all of the new features, we will treat 1.x releases as releases that people can use to get familiar with 2.0 features, and as a way to develop Merb 2.0 incrementally, in the Agile spirit.
The big story of Merb 2.0 will be improved support for rapid prototyping, learning from frameworks in the Python community and from other programming languages to make it even easier to get up and running with Merb. We plan to provide further integration with JavaScript libraries, making it as easy as possible to install libraries like jQuery and their related plugins, CSS, and images.
We also plan to further improve the Merb server, to further optimize the memory usage of Merb applications, decrease the overhead of clusters of merb processes, and possibly make it possible to expand and contract clusters of merb processes on the fly.
Merb 1.0 is expected to be released in the coming weeks. The Merb website has installation instructions.
Usage Landscape: Enterprise Open Source Data Integration
Download the Free Adobe® Flex® Builder 3 Trial
The Role of Open Source in Data Integration
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.
This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.
This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.
This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.
After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.
IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.
Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.
1 comment
Watch Thread Reply