Posts Tagged News
3 days ago, I announced the Merb Open Source Book project. I expected that few people would be interested as we heard complaints about the lack of documentation.
What I did not expect, was more than 60 emails and pull requests in 2 days, people committing pages of content, fixes and offering their services to translate the book. The mailing list already has 60+ members and the GitHub repository is being watched by 150+ people and has 50+ forks.
While this could be almost overwhelming, I think this is very encouraging. I have to say that since 1.0 got released we heard a lot of praises and and lot of complaints. The Merb team has been trying to prioritize and address reported challenges one after the other. We recently announced that user documentation was our top priority and we decided to work on two projects:
- better access to the code documentation
- Open Source book
Good news, we have an early beta of the new code browser: http://docsbeta.merbivore.com/
This is still an early beta and only works properly on FireFox and Safari. You’ll notice that currently, only merb-core’s public methods are available. merb-more addition is coming soon.
So what’s special about this code browser?
Contextual search and API filtering. In lay terms, you can see what public methods are available to you based on what you are doing. (are you in a controller, model, the console?)
Open Source Book
I put an early beta online: http://book.merbist.com
This is not a static version yet meaning that the markdown files get converted for every single request. I’m waiting for Geoffrey Grosenbach to finish his merb_static plugin. Once he will be done with the spidering, his plugin will automatically export the site as static HTML. The PDF version will be exported using a gem called UFO written by wycats. UFO is a JRuby bridge to Flying Saucer, an awesome Java library which can convert HTML to PDF.
As you can see if you browse the book, we don’t have a lot of content yet. However, you need to realize that we just started 3 days ago! That is what’s so amazing. People didn’t sit back and wait for some core team members to write the content. To the contrary, they have been submitting content and have already started the book translation into 10 languages:
I expect to receive the first Italian translations early next week and I was promised some Indian languages too.
Props to the entire community for putting its money where its mouth is!
- update_attributes regression fixed
- JRuby fixes
- perf boost
Thanksgiving is a big thing in America, and after few years I got used to it and I even learned to enjoy this special holiday.
For non North American readers, Thanksgiving is a non-religous/family oriented celebration where people get together, eat a lot of food and usually watch an American football game. It’s followed by “black-friday” the first day of X-mas shopping celebrated by huge sales and more recently “cyber-monday”, the black firday for the web.
Anyways, I’ve been visiting family in Florida and didn’t have much time to work on side projects, including Merb
Qcon was also an awesome event where I met a lot of very interesting people and could measure the Merb interest in the “Enterprise” community.
Merb and the enterprise
37signals, the company known for giving Rails to the Ruby community often talked about the “Enterprise” world and the fact that they want to stay far away from it, here is a quote from 37signals blog:
This is one of the reasons we think enterprise is a dirty word. Itâ€™s also why itâ€™s an absolute pleasure to design products for what we call the Fortune 5,000,000.
On the other hand, Merb was mainly written by people working at EngineYard, a company dealing with a lot of so call “enterprisey” companies. Because we believe we all have different needs we are willing to help you out with your own needs. That’s also the reason why, even though none of the core team members use NetBeans for their day to day coding, we decided to help NetBeans add Merb support in their next release.
Interesting enough, during the preparation of my talk, I did a simple “hello world” benchmark and got some really interesting results:
Note that Django was tested with mod_python and I was told I could get slightly better results with mod_wsgi.
It was interesting to hear Tim Bray, known for his implication with XML and ATOM, mention Merb, DataMapper and CouchDB during his keynote!
Actually, the day before, Yehuda and I had supper with Tim Bray and Nick Sieger from JRuby to discuss few topics but particaluarly how could we improve the framework and of course take advantage of JRuby.
Merb and the Brazilian community
Nevertheless, there was a lot of Brazilians during Qcon and especially a team from LocaWeb, the biggest Brazilian web hosting!
We also sat down for a little while and went through creating a new Merb app, I think Fabio was pretty impressed He was so impressed he mentioned the possibility of aÂ Merb book in Portuguese!
LocaWeb also mentioned their interest in offering better Merb hosting with the possibilty to have their own stack for people who decide to host their apps there.
Congrats to the Rails team for releasing Rails 2.2! The new features are:
- HTTP validators
- Thread safety
- JRuby/1.9 compatibility
I heard a lot of questions about the new Rails features and where does Merb stand. So let me take them address them one by one:
- Internationalization. I, myself was involved with the Rails i18n project so you might be surprise to hear that Merb doesn’t have a built-in i18n solution.Â Well, the fact of the matter is that Merb is modular and we don’t want to force anyone to have to use a i18n solution which will slow down your app. Instead we offer modules to do that. Of course, Merb itself offers hooks to l10n helpers and other stuff you might need. By default, Merb doesn’t offer UTF-8 string manipulation like ActiveSupport does, however, few months ago, I extracted AS’s feature and you can use the extracted gem without the rest of AS while we wait for 1.9 to save the world
Merb makes everything easy for i18n/l10n plugin developers, merb_babel and merb_global are just 2 of the Merb localization plugins, you’ll find many more and some more are coming up.
- HTTP validators/etags. Merb already had this feature for a little while, I put a quick example in the wiki, check it out to see how to use etag and last-modified tags. Note that you can easy add other custom headers by just doing: headers["
Cache-Control"] = “max-age=N”
- Thread safety. Well, unlike Rails which added thread safety as an after thought, Merb was built with the concept of thread safety in mind. What does that mean? Well, by default, Merb requests don't go through any locks. How? simply because we do not share any data between requests. thread safety is really hard to deal with. However remember that even though your framework is thread safe, your plugins and your code also need to be thread safe. Watch Jim's talk about threads if you want to know more.
Merb bug fix releases
You might have noticed that Merb is at 1.0.3. We fixed few tiny bugs as well as bumped the generated app dependency to the latest version of DM. (DataMapper's do_sqlite3 had a conflict with ruby-sqlite3 because of the windows dll pacakged with the gem. Everything has been fixed since.)
Yehuda Katz, explained the release plan in an email to the mailing list:
We plan to release point-releases to 1.0 as fixes become available, so there may be more such releases than in Rails. The goal is to release often enough to keep the list of changes in each release relatively small and understandable, and you can feel free to upgrade to the latest point release every 2 weeks if you don't want to go through the upgrade process every week (or more frequently). Keep an eye out for point releases that reflect security fixes, because those upgrades should be considered mandatory.
Merb's documentation is getting better and better, here is a selection of few blog posts I think you might want to read. (hopefully all the info are or will be available in the wiki)
- Good news regarding Merb slices: the new router allows you to mount a slice directly as: /the-slice-action (previously it had to be /the-slice/something)
- On IRC, Nagash came up with an interesing snippet allowing you to easily serve static views (like Django’s generic views) (Merb::Template.template_for is PRIVATE so use it at your own risk) The Core team is investigating simpler/cleaner ways of achieving the same result and a built-in solution should be available in Merb 1.1
- Merb 0.9.8 will be optimized for Ruby Enterprise Edition and will be supporting a new way of handling gems without wasting so much memory. (more news coming up soon)
- Merb 0.9.8 has a new efficient way of dealing with clusters (more news coming soon)
- Merb’s new caching system will make it to 1.0
- Merb is going into a feature freeze and the team will focus solely on bug fixes and making the Merb experience more pleasant.
- A turn key deployment solution is planned for Merb 1.x (deployment recipes plugin)
- DataMapper benchmarks show it’s now way faster than ActiveRecord (on average) Benchmark scripts available in the dm-core repo.
It’s hard to believe that in less that 20 days, Merb 1.0 will be released! We are all really happy to to be almost there but we have to be honest and admit that we are also under pressure.
We are all dreaming of a post 1.0 world but in the meantime we have to focus on last minutes bugs and optimization.
During the last week or so, we made a lot of progress, the API is now “almost” frozen and General Katz is focusing on making sure everything will be fine for D Day.
That reminds me that Katz showed me something amazing yesterday! I shouldn’t really talk about it but I’m sure it will stay between us. He was been working on optimizing the general memory consumption and my testing app (real app) went from 120MB of Private Memory used, to 70MB (using 4 processes). I can’t wait to use that on the field. I also hope my old Rails comrades will realize that running ~100Mb processes (x4) really isn’t efficient and event dangerous for the free Ruby world!
I also heard rumors that the higher officers are now using a new strategic tool called http://www.pivotaltracker.com which should help us streamline the process. We are still using LightHouse to track bugs and patches though. I’m not sure if this new “agile” tool will help, but I thought the approach is pretty interesting. What do you think?
You probably also saw my early report on bundling Merb apps, I’m quite happy about the process. Do you think you will deploy bundled/frozen apps or just use the system-wide gems?
Ohh before I forget, some courageous privates went to HEAD and use the 3rd party plugin called merb-auth. What they don’t know is that they need to change their routes to use the slices with the new router. (the new router requires no block variable) Also, if they look at the merb-auth branches they will notice a new mauth branch which is the new version of merb-auth, even better, more flexible than the previous version.
I hope everything is well for you, say Hi! to our friends for me.