Milyn Smooks 0.1 Released : Browser-Aware Content Delivery

Discussions

News: Milyn Smooks 0.1 Released : Browser-Aware Content Delivery

  1. The Milyn Project has released version 0.1 of the Smooks "Browser-Aware J2EE Web-Content Delivery Adapter," a component framework for browser profile (or DTD) based content delivery. It's a mechanism by which you can have one request receive based on what the browser is, and what platform it runs on.

    The framework is composed of two products, called Tinak and Smooks. Tinak is a tag library that allows or restricts content based on what browser is being used. Smooks is a servlet filter that can compose content based on a number of factors. Neither is meant to compete with web frameworks such as Struts or WebWork or Spring MVC.

    What do you think of this? How does it compare to other technologies - such as the portlet specification - that has some of the same capabilities?

    Threaded Messages (13)

  2. Sitemesh[ Go to top ]

    Sitemesh already does this in a fairly flexible way. Not sure what using this buys over using Sitemesh.

    Sanjiv
  3. Sitemesh[ Go to top ]

    I hope the CNN.com sample doesn't lead people to think of this as a bad attempt at another web framework. For that reason I'm a little uncomfortable doing comparisons.

    I had thought of these components as something that can be used in conjunction with (or by) something like Sitemesh.

    As far as Sitemesh is concerned (and from what I know about it), it can select a single decorator page for the requesting browser based on the User-Agent (and/or a combo of some other) headers.

    If that is accurate, and comparing it with the sample provided with Milyn, I guess the similarity is that Tinak also performs a similar browser recognition function and applies a decorator (template). The difference is that it takes the recognised browser and “maps” it into a set of profiles so that instead of treating the browser as being just e.g. MSIE6.0 it can treat it as being e.g. html + html32 + Openwave + small etc. It can then use this info to construct and apply a template. Perhaps used in conjunction with Sitemesh it could dynamically build a decorator page, so reducing the number of decorator pages that need to be maintained. Excuse me if this is a bad example of how Sitemesh could be used.

    What I see as being the real power of something like Tinak is how it’s used by Smooks. The idea behind Smooks was that the recognition and profiling info provided by Tinak could be used to perform lower level content manipulations. The example I used in the docs (good or bad) is where the requesting browser doesn’t support Xforms markup – transform it into something the browser does understand.

    I’d just like to reiterate – I always envisaged these components as being something that might compliment other frameworks such as Sitemesh. The sample may lead people to think otherwise but it was developed in this way purely due to time pressures. The primary goals of the sample are to illustrate how these components are configured in a Servlet container, and to provide some samples of how to develop the Smooks extensions (Content Delivery Units).

    Hopefully this makes sense.

    T.
  4. What about Web Standards[ Go to top ]

    Why not output valid XHTML and CSS instead? A few IE hacks here and there in your CSS and your web applications will be readible across all standards-compliant browsers - and those that are yet to come.

    Kim Pepper
  5. What about Web Standards[ Go to top ]

    Why not output valid XHTML and CSS instead? A few IE hacks here and there in your CSS and your web applications will be readible across all standards-compliant browsers - and those that are yet to come.Kim Pepper

    You tell'em Kim! I'm tired of developers that are so focused on the Java end of things that they basically 'blow' off the HTML in a mess of add-hoc utilities and taglibs.
  6. What about Web Standards[ Go to top ]

    Thanks Kim.

    I guess I'd agree with that if:
    * All browsers were fully standards-compliant in terms of HTML/XHTML/CSS etc.
    * All browsers had the same capabilities with no added value features that people might like to take advantage of on those browsers, and dumb down for others.
    * If everyone was in "total" control of all the content they presented such that they could guarantee standards-compliance.
    * If everyone was writing content using authoring tools that guaranteed standards-compliance.
    * If there wasn't a time cost to creating standards-compliant content.
    * If the Internet wasn't already full of badly formed, non standards-compliant content.
    * If people weren’t human and didn't make mistakes etc

    I'd hope that I'm not "blowing off" standards. I had thought of tools such as Smooks as being a mechanism for manipulating non-compliant content into something that is standards-compliant for strict browsers. It's obviously not even nearly there yet, and may never get there.

    Thanks again.

    T.

    PS: I hope the bullets points appear as bullets! How do you do that?
  7. The same as WURFL?[ Go to top ]

    The idea is great but I have difficulties in distinguising Milyn Smooks from WURFL.
    Can you explain the difference?
  8. The same as WURFL?[ Go to top ]

    Thanks Michael.

    I hadn't come across this before. So WURFL is a maintained DB of browser capabilities?

    If yes, then Tinak Profiling is something that could use this information as input and make it available to both the Tinak JSP tags and Smooks. See http://www.milyn.org/tinak/device-profiling.shtml#implementing_a_pstore re implementing a Profile Store.

    Looking at the website it would appear as though WURLF is geared primarily at wireless.
  9. The same as WURFL?[ Go to top ]

    Yes WURFL maintains DB of browser capabilities.
    It's true WURFL is geared towards wireless markup since this is where all the challenges lie.

    Have you thought about incorporating it into JSF?

    I'm currently developing prototypes JSF components geared towards achieving device independence using JSF+Tiles+Spring+WURFL+XDoclet+Hibernate+XML metadata
  10. The same as WURFL?[ Go to top ]

    I've been trying to keep Smooks as independent of web frameworks as much as possible (as a ServletFilter), allowing it to be used with any of these technologies. Smooks just providing the tweaks etc to the content based on the requesting device profile-set (e.g. the info in the WURFL DB).

    I'd be interested in seeing/hearing more on your work.

    T.
  11. Already made (?)[ Go to top ]

    Aaron Roller and I already made a "plug-in" for Tiles (the subpackage of Struts) that allows to deliver different pages to different devices/browsers.
    If anyone is interested:
    http://mutidimensions.sf.net/
    Ciao
  12. Already made (?)[ Go to top ]

    Aaron Roller and I already made a "plug-in" for Tiles (the subpackage of Struts) that allows to deliver different pages to different devices/browsers.If anyone is interested:http://mutidimensions.sf.net/Ciao

    Looks like a different approach to the same problem. As I said earlier, I've been trying to keep Smooks independent of Struts etc
  13. Already made (?)[ Go to top ]

    I have had a look at the website and it looks promising. However I'm in doubt about the following things are covered:

    Which device repository do you use CC/PP, UAProf, WURFL? are other plugable?

    How do you get Device Independent Markup? Struts only support HTML and maybe XHTML.

    How do you adapt media (picutures, video etc.)

    Do you know of any actively using it?

    Sorry about all the questions but as you mentioned yourself on the web page the documentation is lacking a bit ;0)
    Regards,
    Michael
  14. Already made (?)[ Go to top ]

    Which device repository do you use CC/PP, UAProf, WURFL?
    Though I never used it actually, it should support CC/PP. But anyway I really use simple-analize-of-http-request, and identify the nearest device that uses that kind of HTTP request.
    How do you get Device Independent Markup? How do you adapt media (picutures, video etc.)

    Well I mentioned Struts but, in fact, it is most connected to Tiles. There is no device-independent markup. That is, you have to write different pages for different devices (or user-device pairs in the current release), or reuse them whenever possible. Dimensions takes care only of identifying the device (and the user's role if you want) and then deliver the correct Tiles definitions. So there is no adaptation but you have to do replication.
    Do you know of any actively using it?
    AFAIK version 0.5 is used in motionbased.com applications for GPS driven devices (Aaron Roller is one of the founder). Version 0.6 is used within WAPS.App, an application generator for multi-user and multi-device web applications developed by University of Lecce (Italy) in which my work was the most important part, though there is no documentation online (I am no more at the University, I have to update the site).
    Sorry about all the questions but as you mentioned yourself on the web page the documentation is lacking a bit ;0)

    No problem, but I think this is not the place to post your questions about Dimensions, please send me e-mails (you can find my address in the "Authors" page in mutidimensions.sf.net)
    Ciao