<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AdaRuby &#187; Fluid Web</title>
	<atom:link href="http://www.adaruby.com/category/fluid-web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adaruby.com</link>
	<description>Rich Dynamic Applications with Ruby on Rails</description>
	<lastBuildDate>Fri, 02 Jul 2010 09:06:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Quest for The Fluid Web Framework</title>
		<link>http://www.adaruby.com/2010/01/08/quest-for-the-fluid-web-framework/</link>
		<comments>http://www.adaruby.com/2010/01/08/quest-for-the-fluid-web-framework/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 10:52:20 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Fluid Web]]></category>

		<guid isPermaLink="false">http://www.adaruby.com/2010/01/08/quest-for-the-fluid-web-framework/</guid>
		<description><![CDATA[
			
				
			
		
During my experience developing web applications, it&#8217;s challenging to find the “best” web development approach of them all.I like these principles:

POJO approach. No inheritance, interfaces, minimal annotations. Configuration is all that&#8217;s necessary.
Convention over Configuration. Even with POJO, some configuration is needed. Minimize configuration by using conventions. And document the conventions! Because conventions can sometimes be [...]


Related posts:<ol><li><a href='http://www.adaruby.com/2009/12/21/three-ways-you-can-speed-up-your-fresh-rails-development/' rel='bookmark' title='Permanent Link: Three Ways You Can Speed Up Your Fresh Rails Development'>Three Ways You Can Speed Up Your Fresh Rails Development</a> <small> A Ruby on Rails web application I&#8217;ve been developing...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2010%2F01%2F08%2Fquest-for-the-fluid-web-framework%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2010%2F01%2F08%2Fquest-for-the-fluid-web-framework%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Quest for The Fluid Web Framework" alt=" Quest for The Fluid Web Framework" /><br />
			</a>
		</div>
<div><p>During my experience developing web applications, it&#8217;s challenging to find the “best” web development approach of them all.I like these principles:</p>
<ul>
<li><strong>POJO approach.</strong> No inheritance, interfaces, minimal annotations. Configuration is all that&#8217;s necessary.</li>
<li><strong>Convention over Configuration.</strong> Even with POJO, some configuration is needed. Minimize configuration by using conventions. And document the conventions! Because conventions can sometimes be confusing.</li>
<li><strong>REST approach.</strong> This is not anti-SOAP or anti-WS-*. It means designed for the web, and embrace resource-oriented and stateless principles.</li>
<li><strong>Use JSON.</strong> For browser-server communication JSON is preferable. Atom+XML is more suited for documents and server-server communication.</li>
<li><strong>Decentralized.</strong> Rather than one big app, decompose as much as possible. Decentralization means a more robust infrastructure is needed, and yes it means looking for trouble.</li>
<li><strong>Resource-oriented.</strong> Contrasts with page-oriented or procedural. Somewhat similar to object-oriented but with resource semantics. Kind of Objects than implement IResource.</li>
<li><strong>Interoperable.</strong> Services are exposed via JSON-REST API, AtomPub, or other mechanism. Can also consume other services easily</li>
<li><strong>Robust security infrastructure.</strong> Provides sufficient authentication and authorization mechanisms, and easily programmable.</li>
<li>“ <strong>Native”.</strong> Blends with the host environment, even if just a simulation. jQTouch, Qt, Swing, are all good examples here.</li>
<li><strong>Lightweight.</strong> Prefers lightweight specialized frameworks, like Merb, Sinatra, than Ruby on Rails. Spring than Java EE. Heavy full-stack framworks (some call it “bloated”, though I don&#8217;t believe that term anymore) does have its plus sides though, less headache is one of them.</li>
<li><strong>Scalable.</strong> Runs on a scalable clustered system like Google Apps Engine or Heroku. Also means dictated by scalability restrictions of the respective environments (more headaches).</li>
<li><strong>Reasonably Reusable.</strong> I wanted cross-platform, but now it has expanded to cross-environment (with mobile devices and other stuff). So now I think some sort of reusability is desirable. For example, JavaScript logic that can be used by server-side desktop web application, server-side mobile web application, and client-side applications with embedded browser component.</li>
</ul>
<p>The  <em>Fluid Web framework</em> (I made up that term) provides most of the benefits with a reasonable level of complexity and learning curve.</p>
<p>Fluid Web will also use the best programming model for the task at hand. Divided broadly, there are three programming models in question:</p>
<ol>
<li><strong>POJO Model.</strong> to Spring Programming Model. Also used in JavaScript and all Object-oriented programming languages. It&#8217;s RPC and object-oriented.</li>
<li><strong>REST Model.</strong> The “Web programming model” as Google calls it. This is less of an API and more of a protocol(s). It&#8217;s resource-oriented or document-oriented.</li>
<li><strong>Comet model.</strong> Asynchronous programming model. Data is passed through several message channels. Everybody are clients, they can publish and subscribe to the channels. XMPP belongs here too.</li>
<li><strong>SQL model.</strong> Great for accessing data stores declaratively. Also in this category: SPARQL for RDF triplets, YQL for web resources, GQL for Google Big Table, Microsoft&#8217;s LINQ. Resulting data is document-oriented.</li>
</ol>
<p>I have been somewhat obsessed by this quest since a few years ago, and haven&#8217;t yet found the true answer. Betting on it on a commercial project is also too risky. So I decided that I will do more experiments on it on a research basis, and share my experiences here.</p>
<p>Feel free to share your ideas.</p>
</div>


<p>Related posts:<ol><li><a href='http://www.adaruby.com/2009/12/21/three-ways-you-can-speed-up-your-fresh-rails-development/' rel='bookmark' title='Permanent Link: Three Ways You Can Speed Up Your Fresh Rails Development'>Three Ways You Can Speed Up Your Fresh Rails Development</a> <small> A Ruby on Rails web application I&#8217;ve been developing...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2010/01/08/quest-for-the-fluid-web-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
