Impression of RIFE Web Framework

I have been spending time on and off looking at various web frameworks available for a little more than a year. A lot of this has to do with keeping track of what’s going on in the web framework arena and keep in sync with the technologies. Another focus of mine is to see how the new (at least for me) frameworks affect the productivity of a developer.

I first looked at RIFE last year and I have been very impressed by the concepts.The developers of RIFE, Geert Bevin and others have been very helpful when I had some questions. I was even able to get answers on the IRC channel for RIFE. It was not until recently that I tried to write an application using RIFE that I really got a feel of it.



Here are some of the good and bad that I encountered:

Pros

  • A complete framework. It includes basic web framework, ORM, Content Management, Validations, Templates etc.
  • Good support from developers
  • A nice quick start application to get you running quickly
  • Good support for constraints for adding validations
  • Continuations - ability to pause, rewind, jump through transaction steps

Cons

  • Templates are really weird to work with. The syntax for the templates really did me. It is not really designer friendly like Tapestry or Wicket
  • The concept of flowlink and datalink is just too verbose and not clear
  • Using annotation didn’t do me any good as well for defining the flow and data links. There isn’t enough documentation for annotations
  • The only way for form validations I could find was to define the a MetaData class equivalent to the domain object representing the form and define the validations in there. This just seems like way too much of work for simple validations.
  • I could not figure out how to customize the error messages for form validations

In the end, I feel that it’s the lack of documentation that prevented me from really exploring it. I know Geert is a very sharp guy and if he ever gets to read my blog, I welcome his comments. I think the learning curve is too much for RIFE and lack of documentation adds to it and I am not sure if the return is proportional to the effort compared to other frameworks.

Share and Enjoy:
  • Digg
  • del.icio.us
  • description
  • Technorati
  • Reddit
  • Facebook
  • blogmarks
  • YahooMyWeb
  • Ma.gnolia

5 Comments »

  1. Geert Bevin said,

    April 10, 2007 @ 3:43 pm

    Hi Atif,

    thanks a lot for writing down your impressions, and you see that I did get to your blog entry :-)

    Which template syntax did you use? If you want the designer-friendly version, you have several to choose from, like the comment based syntax and the real XML syntax. I suppose that this is a matter of being aware of them, which is not easily solved (there’s a wiki page about them though: http://rifers.org/wiki/display/RIFE/Alternative+tag+syntax)

    The flowlinks and datalinks verbosity are easily solved through different manners. They’re like the finest grained possibility. For a lot of people, globalvars and globalexits are totally sufficient and only require one declaration. Another good solution is ust to use autolinks (http://rifers.org/wiki/display/RIFE/Autolink+declaration+to+simplify+datalink+and+flowlink+declarations), if you combine these with annotations, there’s very little setup to do for the logic flow and data flow to work.

    I agree that there’s some lacking in the documentation, the best thing usually is to try to combine what’s on the wiki with the Javadocs and the examples. For the annotations, there’s some kind of overview here: http://rifers.org/wiki/display/RIFE/Best+Practices. You can also have a look at the javadocs for them: http://rifers.org/docs/api/com/uwyn/rife/engine/annotations/package-summary.html. I agree though that there should be more information about them, however they are a quite recent addition, so in time this will certainly become better documented.

    It’s a pity that you didn’t see the real value of the validation framework, the MetaData classes actually generation the statements for the real validation framework underneath, which is totally customizable. Information about that can be found here: http://rifers.org/wiki/display/RIFE/Validation, this also contains information about how to customize the error messages and many ways. The javadoc for the Validated interface might be helpful too: http://rifers.org/docs/api/com/uwyn/rife/site/Validated.html. You can basically create any ValidationRule or ValidationError that you want, using MetaData just automates it all.

    Please don’t hesitate to tell me where you find holes in the documentation. I think that a lot of it is documented, it’s mainly an issue of finding the right content. Shooting of a message to the mailing list will often get me or someone to point you in the right direction. There were some books in the writing, but sadly I had to cancel them due to time constraints. There might still be some coming up in half a year or so, but it really will be very bound to my availability.

    Again, thanks a lot for having gone through the trouble of looking at RIFE.

    Geert

  2. Geert Bevin said,

    April 10, 2007 @ 5:02 pm

    I also posted this comment on my blog. The content is a bit better written since I re-read it a couple of times ;-)
    http://rifers.org/blogs/gbevin/2007/4/10/re_impressions_of_rife

  3. Atif Khan said,

    April 10, 2007 @ 6:58 pm

    Thanks Geert. I will look at the information you provided. As I said, I think I didn’t get what I wanted due to steep learning curve. May be your links will help me locate the information. Also, I did look at all the template syntax and I must say that I was still uncomfortable with it.

  4. Geert Bevin said,

    April 10, 2007 @ 8:24 pm

    What particular part makes you uncomfortable? I know of several people that were not thrilled about the templates until they started to look at them as being entirely different to what they expect from other templating solutions. You really heave to compare RIFE’s templates with PowerPoint templates where you provide all content elements and placeholders and then assemble the final result from the template inside your application (which is in Java in this situation). Your comment about the template syntax not being designer friendly is not true however since this is totally up to you. I’ve been using the comment syntax for years and created many templates that look just fine in the browser. Of course, if you really want the design to show up correctly in a visual manner, you do have to add template content that will not be used in the final result. This is similar to Wicket’s template inheritance where they just mark up which part of a child template has to be considered for inclusion in a parent template. With RIFE there’s nothing explicitly created for that since block values and block solve all of this implicitly. RIFE 1.6 has a new tag however, which is the comment tag, that allows you to really remove a chunk of content from template processing.
    Of course, some of this can also be attributed to taste, but many users that didn’t like the template syntax at first end up really loving it after using it for a while. It’s just totally different from what you’ve come to expect from other solutions.

  5. Atif Khan’s Blog » Blog Archive » Is RIFE dead? said,

    April 28, 2009 @ 1:52 pm

    [...] wrote a blog entry in April 2007 about RIFE. It has been 2 years since I wrote that entry. I had mentioned that RIFE [...]

RSS feed for comments on this post · TrackBack URI

Leave a Comment