<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6070431505753481976</id><updated>2012-02-29T17:13:02.422+01:00</updated><title type='text'>The Qworum Blog</title><subtitle type='html'>Cloud computing, SaaS, Integration, Standards, Enterprise software, Software as a Service, Web development, Web-based services.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://qworum.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://qworum.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Doğa Armangil</name><uri>http://www.blogger.com/profile/03335185535879016714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-IYVydroMKhc/To9L-dZSZII/AAAAAAAAAWU/pkO4gY-f_Y4/s220/Doga_portrait.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6070431505753481976.post-8838684382850792086</id><published>2012-01-16T12:16:00.001+01:00</published><updated>2012-01-16T12:16:28.481+01:00</updated><title type='text'>We are at Cloud Expo Europe 2012</title><content type='html'>We are pleased to announce that we will be attending&amp;nbsp;&lt;a href="http://www.cloudexpoeurope.com/"&gt;Cloud Expo Europe&lt;/a&gt;, which starts on January 25th and ends on January 26th. Come and visit us at stand 825.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6070431505753481976-8838684382850792086?l=qworum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qworum.blogspot.com/feeds/8838684382850792086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qworum.blogspot.com/2012/01/we-are-at-cloud-expo-europe-2012.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/8838684382850792086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/8838684382850792086'/><link rel='alternate' type='text/html' href='http://qworum.blogspot.com/2012/01/we-are-at-cloud-expo-europe-2012.html' title='We are at Cloud Expo Europe 2012'/><author><name>Doğa Armangil</name><uri>http://www.blogger.com/profile/03335185535879016714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-IYVydroMKhc/To9L-dZSZII/AAAAAAAAAWU/pkO4gY-f_Y4/s220/Doga_portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6070431505753481976.post-1253428651564811413</id><published>2011-11-12T00:37:00.001+01:00</published><updated>2011-11-15T16:15:29.326+01:00</updated><title type='text'>What HTML5 can't do</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-KHdT2YGuKxQ/Tr2xwf5w8CI/AAAAAAAAAW8/UhEfu1Ru4q0/s1600/Qworum+logo+145x34.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img alt="Qworum logo" border="0" src="http://3.bp.blogspot.com/-KHdT2YGuKxQ/Tr2xwf5w8CI/AAAAAAAAAW8/UhEfu1Ru4q0/s1600/Qworum+logo+145x34.png" /&gt;&lt;/a&gt;&lt;/div&gt;Since the early days of the World Wide Web, new capabilities were being added to browsers in order to better support web applications. This effort was started by the Netscape team, notably with HTTP-based cookies and the Javascript language. Nowadays, that activity largely takes place under the HTML5 umbrella, where browser providers and standards bodies define new browser features.&lt;br /&gt;&lt;br /&gt;An important need that these efforts do not address, however, is application modularity, and that's where &lt;a href="http://www.qworum.com/specs/core/1.0"&gt;Qworum&lt;/a&gt;&amp;nbsp;comes in.&lt;br /&gt;&lt;br /&gt;So, how can web applications leverage Qworum?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;First, web developers can use Qworum for implementing more complex web applications with less effort.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Qworum is currently the only technology that enables modular web applications. Consider how important code re-use is for developer productivity, and how difficult it would be to develop even the simplest desktop application without readily available software libraries in the form of classes, functions, etc. Amazingly, this is the situation that web developers found themselves in before Qworum.&lt;br /&gt;&lt;br /&gt;Let me add that Qworum is free when used internally by internet web applications (that is, when Qworum services are hosted on the same domain as the web application that calls them).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Second, web applications can be better integrated with each other using Qworum.&lt;/b&gt;&lt;br /&gt;For example, internet websites can use Qworum for providing user authentication services (i.e. OpenID) or payment processing services (i.e. PayPal, Google Checkout) to other internet websites. Qworum greatly facilitates these types of scenarios.&lt;br /&gt;&lt;br /&gt;Currently, internet websites can provide paid services to other internet sites and businesses. If you would like to provide free Qworum services to internet websites, and if the services will be widely used,&amp;nbsp;&lt;a href="http://www.qworum.com/about"&gt;contact us&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6070431505753481976-1253428651564811413?l=qworum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qworum.blogspot.com/feeds/1253428651564811413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qworum.blogspot.com/2011/11/qworum-on-internet-circa-2011.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/1253428651564811413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/1253428651564811413'/><link rel='alternate' type='text/html' href='http://qworum.blogspot.com/2011/11/qworum-on-internet-circa-2011.html' title='What HTML5 can&apos;t do'/><author><name>Doğa Armangil</name><uri>http://www.blogger.com/profile/03335185535879016714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-IYVydroMKhc/To9L-dZSZII/AAAAAAAAAWU/pkO4gY-f_Y4/s220/Doga_portrait.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-KHdT2YGuKxQ/Tr2xwf5w8CI/AAAAAAAAAW8/UhEfu1Ru4q0/s72-c/Qworum+logo+145x34.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6070431505753481976.post-42496538415205487</id><published>2011-10-29T22:56:00.000+02:00</published><updated>2012-02-29T17:13:02.460+01:00</updated><title type='text'>How browser providers are compensated by Qworum</title><content type='html'>I have briefly mentioned our partner program in a&amp;nbsp;&lt;a href="http://qworum.blogspot.com/2011/10/deploying-qworum-on-web-browsers.html"&gt;previous post&lt;/a&gt;. In this post, I will delve into actual numbers, including revenue projections for various browser providers.&lt;br /&gt;&lt;br /&gt;Our compensation program is structured in a way that rewards:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Senior partners (browser providers have an incentive to become our partners early on),&lt;/li&gt;&lt;li&gt;Partners with bigger browser market shares,&lt;/li&gt;&lt;li&gt;Partners with higher quality Qworum implementations.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;A word on that last point:&lt;/div&gt;&lt;div&gt;The&amp;nbsp;Qworum specification defines some features whose implementation is problematic in browser add-ons, due to the restrictive APIs that are available to them. We chose to make these features optional, so that an implementation can lack these features and still be valid.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In order to encourage our partners to implement those optional features, we have introduced the concept of implementation quality, which is an important factor in partner compensation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Quarterly payments&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Our partners are compensated on a quarterly basis, so that public companies can include their Qworum earnings in their results announcements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Up to 20% of Qworum revenue allocated to partners&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Up to 20% of our DRM revenue, and up to 20% of our Enterprise revenue goes to our partners. The revenue received by a given partner depends on their seniority coefficient (=0.75^(seniority-1)), their DRM and Enterprise market shares coefficient for the quarter (as measured by the percentage of requests received on user-agent.qworum.com), and the quality coefficient of the Qworum implementation in their latest browser at the moment of payment.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The implementation&amp;nbsp;quality coefficient is currently determined as a sum of the weights of the following implemented features (these may change from quarter to quarter):&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;[&lt;i&gt;weight: &amp;nbsp;0.50&lt;/i&gt;] &amp;nbsp;Implement the&amp;nbsp;&lt;a href="http://www.qworum.com/specs/core/1.0"&gt;Core 1.0&lt;/a&gt; specification (mandatory for all partners),&amp;nbsp;&lt;/li&gt;&lt;li&gt;[&lt;i&gt;weight: &amp;nbsp;0.15&lt;/i&gt;] &amp;nbsp;Prevent end-users from choosing target frames (&lt;a href="http://www.qworum.com/specs/core/1.0#optional6"&gt;1&lt;/a&gt;),&lt;/li&gt;&lt;li&gt;[&lt;i&gt;weight: &amp;nbsp;0.12&lt;/i&gt;] &amp;nbsp;Transform bad responses into faults (&lt;a href="http://www.qworum.com/specs/core/1.0#optional3"&gt;1&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.qworum.com/specs/core/1.0#optional4"&gt;2&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.qworum.com/specs/core/1.0#optional5"&gt;3&lt;/a&gt;),&lt;/li&gt;&lt;li&gt;[&lt;i&gt;weight: &amp;nbsp;0.09&lt;/i&gt;] &amp;nbsp;Clear tab history (&lt;a href="http://www.qworum.com/specs/core/1.0#optional9"&gt;1&lt;/a&gt;),&lt;/li&gt;&lt;li&gt;[&lt;i&gt;weight: &amp;nbsp;0.06&lt;/i&gt;] &amp;nbsp;Use application/xml for POSTs (&lt;a href="http://www.qworum.com/specs/core/1.0#optional1"&gt;1&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.qworum.com/specs/core/1.0#optional2"&gt;2&lt;/a&gt;),&lt;/li&gt;&lt;li&gt;[&lt;i&gt;weight: &amp;nbsp;0.05&lt;/i&gt;] &amp;nbsp;Send correct referrer headers (&lt;a href="http://www.qworum.com/specs/core/1.0#optional7"&gt;1&lt;/a&gt;),&lt;/li&gt;&lt;li&gt;[&lt;i&gt;weight: &amp;nbsp;0.03&lt;/i&gt;] &amp;nbsp;Prevent bookmarking (&lt;a href="http://www.qworum.com/specs/core/1.0#optional8"&gt;1&lt;/a&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Here is the percentage of Qworum revenue that would go to a particular browser provider depending on seniority (supposing perfect implementation quality, and DRM and Enterprise market shares equal to their current browser market share):&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Mozilla (Firefox):&lt;/div&gt;&lt;div&gt;&amp;nbsp; 1: 4.3 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 2: 3.2 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 3: 2.4 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 4: 1.8 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 5: 1.4 %&lt;/div&gt;&lt;div&gt;Google (Chrome):&lt;/div&gt;&lt;div&gt;&amp;nbsp; 1: 2.4 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 2: 1.8 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 3: 1.3 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 4: 1.0 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 5: 0.8 %&lt;/div&gt;&lt;div&gt;Opera:&lt;/div&gt;&lt;div&gt;&amp;nbsp; 1: 0.4 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 2: 0.3 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 3: 0.2 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 4: 0.2 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 5: 0.1 %&lt;/div&gt;&lt;div&gt;Apple (Safari):&lt;/div&gt;&lt;div&gt;&amp;nbsp; 1: 1.4 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 2: 1.1 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 3: 0.8 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 4: 0.6 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 5: 0.5 %&lt;/div&gt;&lt;div&gt;Microsoft (Internet Explorer):&lt;/div&gt;&lt;div&gt;&amp;nbsp; 1: 11.0 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 2: 8.3 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 3: 6.2 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 4: 4.6 %&lt;/div&gt;&lt;div&gt;&amp;nbsp; 5: 3.5 %&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Human languages have a tendency to be imprecise, so I am including here a ruby program that implements the compensation algorithm:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;#! /usr/bin/env ruby&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;class QworumPartnerCompensation&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; def initialize&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; @PARTNER_SHARE = 0.20&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; #&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; # Calculates the percentage of DRM revenue that goes to a particular browser provider partner&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; #&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; def partner_drm_share partner_seniority=1, partner_drm_usage=1.0, partner_implementation_quality=1.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; @PARTNER_SHARE * seniority_adjustment(partner_seniority) * partner_drm_usage * partner_implementation_quality&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; #&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; # Calculates the percentage of Enterprise revenue that goes to a particular browser provider partner&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; #&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; def partner_enterprise_share partner_seniority=1, partner_enterprise_usage=1.0, partner_implementation_quality=1.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; @PARTNER_SHARE * seniority_adjustment(partner_seniority) * partner_enterprise_usage * partner_implementation_quality&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; def seniority_adjustment seniority=1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; return 0.0 if seniority&amp;lt;1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; 0.75**(seniority-1)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;exit 0 if __FILE__ != $0&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;q=QworumPartnerCompensation.new&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "---------------------------------------------------"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "Partner revenue adjustment coefficient by seniority"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;(1..5).each do |n|&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; puts format "#{n}: %.3f ", q.seniority_adjustment(n)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "---------------------------------------------------------------------------------------------"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "Total percentage of Qworum revenue that would be received by the 5 leading browser providers,"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "depending on partnering order"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "(hypothesis: browser DRM usage == browser Enterprise usage == current browser market share)"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;browser = []&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;browser &amp;lt;&amp;lt; ['Mozilla (Firefox)', 0.2163]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;browser &amp;lt;&amp;lt; ['Google (Chrome)', 0.1194]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;browser &amp;lt;&amp;lt; ['Opera', 0.0214]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;browser &amp;lt;&amp;lt; ['Apple (Safari)', 0.0715]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;browser &amp;lt;&amp;lt; ['Microsoft (Internet Explorer)', 0.5511]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;min=1.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;max=0.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;(0..(browser.size-1)).each do |n1|&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; (0..(browser.size-1)).each do |n2|&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; next if n2==n1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; (0..(browser.size-1)).each do |n3|&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; next if n3==n2 or n3==n1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (0..(browser.size-1)).each do |n4|&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; next if n4==n3 or n4==n2 or n4==n1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (0..(browser.size-1)).each do |n5|&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;next if n5==n4 or n5==n3 or n5==n2 or n5==n1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;percentage_paid=q.partner_drm_share(1, browser[n1].last)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;percentage_paid+=q.partner_drm_share(2, browser[n2].last)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;percentage_paid+=q.partner_drm_share(3, browser[n3].last)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;percentage_paid+=q.partner_drm_share(4, browser[n4].last)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;percentage_paid+=q.partner_drm_share(5, browser[n5].last)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;min=percentage_paid if min&amp;gt;percentage_paid&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;max=percentage_paid if max&amp;lt;percentage_paid&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts format "Min: %.1f %%", 100.0*min&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts format "Max: %.1f %%", 100.0*max&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "-------------------------------------------------------------------------------------------"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "Qworum revenue that would go to a particular browser provider, depending on seniority"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "(hypothesis: browser DRM usage == browser Enterprise usage == current browser market share)"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;(0..(browser.size-1)).each do |provider|&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; puts "#{browser[provider].first}:"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; (1..browser.size).each do |seniority|&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; puts format " &amp;nbsp;#{seniority}: %.1f %%", 100.0*q.partner_drm_share(seniority, browser[provider].last)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "-----------------------------------------------------------------------------------------------"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "Browser market shares as of april 2011;"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "these are used in the partner revenue projections displayed above"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts "(source: http://arstechnica.com/web/news/2011/05/web-browser-market-share-upgrade-analysis.ars)"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;puts&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;(0..(browser.size-1)).each do |provider|&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp; puts format "#{browser[provider].first}: %.2f %%", 100.0*browser[provider].last&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt;&amp;nbsp;We also share up to 20% of our Service Provider revenue with our partners (providers of Qworum APIs need to purchase&amp;nbsp;Service Provider subscriptions from their hosting providers). Technically, our DRM revenue includes both marketplace commissions and Service Provider subscriptions.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6070431505753481976-42496538415205487?l=qworum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qworum.blogspot.com/feeds/42496538415205487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qworum.blogspot.com/2011/10/how-browser-providers-are-compensated.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/42496538415205487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/42496538415205487'/><link rel='alternate' type='text/html' href='http://qworum.blogspot.com/2011/10/how-browser-providers-are-compensated.html' title='How browser providers are compensated by Qworum'/><author><name>Doğa Armangil</name><uri>http://www.blogger.com/profile/03335185535879016714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-IYVydroMKhc/To9L-dZSZII/AAAAAAAAAWU/pkO4gY-f_Y4/s220/Doga_portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6070431505753481976.post-1490430839424924672</id><published>2011-10-19T21:03:00.000+02:00</published><updated>2011-10-22T18:34:13.980+02:00</updated><title type='text'>Browser providers as Qworum partners</title><content type='html'>I will briefly talk about the benefits of having Qworum implemented natively by browsers.&lt;br /&gt;&lt;br /&gt;Currently,&amp;nbsp;&lt;a href="http://www.qworum.com/specs/core/1.0"&gt;Qworum&lt;/a&gt;&amp;nbsp;is only available as&amp;nbsp;&lt;a href="http://www.qworum.com/products"&gt;add-on for various web browsers&lt;/a&gt;. While this situation might be satisfactory&amp;nbsp;in controlled environments such as private enterprise networks where deployment is less of an issue, this makes Qworum use on internet websites problematic.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Our position regarding Qworum deployments is this:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Qworum interpreters really need to become as commonplace on browsers as HTML renderers. For that, browsers would ideally implement Qworum natively.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Encouraging native implementations is core to our strategy:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Qworum specifications are open, so that browser providers can contribute to them. They can suggest bug fixes for the current versions, as well as new features for future versions.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Qworum specifications are free to implement on the client-side. In fact, they are better than free - we have a revenue sharing program that browser providers can &lt;a href="http://www.qworum.com/partners"&gt;participate in&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The role of Armangil Software primarily consists of operating the back-end servers that handle monetary transactions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is a&amp;nbsp;&lt;a href="http://www.quora.com/Could-browser-providers-diversify-their-revenue-with-Qworum"&gt;Quora question on this subject&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt;&amp;nbsp;To further clarify the way our revenue sharing program works, compensation is structured in a way that rewards early partners, as well as partners with more market share. Our goal is to incentivise browser providers to take swift action on our business proposal.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6070431505753481976-1490430839424924672?l=qworum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qworum.blogspot.com/feeds/1490430839424924672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qworum.blogspot.com/2011/10/deploying-qworum-on-web-browsers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/1490430839424924672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/1490430839424924672'/><link rel='alternate' type='text/html' href='http://qworum.blogspot.com/2011/10/deploying-qworum-on-web-browsers.html' title='Browser providers as Qworum partners'/><author><name>Doğa Armangil</name><uri>http://www.blogger.com/profile/03335185535879016714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-IYVydroMKhc/To9L-dZSZII/AAAAAAAAAWU/pkO4gY-f_Y4/s220/Doga_portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6070431505753481976.post-7943158690350632959</id><published>2011-10-11T17:46:00.000+02:00</published><updated>2011-10-15T18:33:09.711+02:00</updated><title type='text'>Hybrid applications and Google's Native Client</title><content type='html'>&lt;br /&gt;I don't think there is any doubt that Google is a force to be reckoned with, in terms of browser innovation. Case in point: the&amp;nbsp;&lt;a href="http://code.google.com/p/nativeclient/"&gt;Native Client&lt;/a&gt;&amp;nbsp;platform, which allows native code to run inside the browser. Native Client offers a clear path for porting desktop applications to the browser.&lt;br /&gt;&lt;br /&gt;Google's main arguments for selling the Native Client platform to developers is security and ease of deployment (through the&amp;nbsp;&lt;a href="https://chrome.google.com/webstore/search?hl=en-US&amp;amp;q=native+client"&gt;Chrome Web Store&lt;/a&gt;). The jury is still out on how well these arguments will be received - Windows users have lived with security issues forever, and there are rumours of an upcoming Windows application store.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;My suggestion for improving Native Client:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;The Native Client platform should become more web-friendly, by supporting hybrid applications. It&amp;nbsp;&lt;/i&gt;&lt;i&gt;could so gain a definitive edge over desktop platforms.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;To clarify: hybrid applications are Native Client applications that can call interactive web services (and so use individual features of online web applications).&lt;br /&gt;&lt;br /&gt;Interactive service calls would execute in browser tabs, as follows:&lt;br /&gt;&lt;br /&gt;1. An overlay would appear in the browser tab containing the Native Client application making the call, thereby temporarily preventing its use.&lt;br /&gt;2. A new browser tab would be created, where the service would execute.&lt;br /&gt;3. The end-user would interact with the service through regular web pages.&lt;br /&gt;4. When the service call terminates, the new tab would close.&lt;br /&gt;5. Finally, the tab containing the Native Client application would have its overlay removed, and the application would again become responsive.&lt;br /&gt;&lt;br /&gt;Probably the only service technology available today for enabling this scenario is &lt;a href="http://www.qworum.com/specs/core/1.0"&gt;Qworum&lt;/a&gt;, so it arguably deserves a look from the Native Client team.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt;&amp;nbsp;Posted a&amp;nbsp;&lt;a href="http://www.quora.com/Will-Native-Client-support-hybrid-applications"&gt;Quora question&lt;/a&gt;&amp;nbsp;on this subject.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6070431505753481976-7943158690350632959?l=qworum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qworum.blogspot.com/feeds/7943158690350632959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qworum.blogspot.com/2011/10/hybrid-applications-adn-googles-native.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/7943158690350632959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/7943158690350632959'/><link rel='alternate' type='text/html' href='http://qworum.blogspot.com/2011/10/hybrid-applications-adn-googles-native.html' title='Hybrid applications and Google&apos;s Native Client'/><author><name>Doğa Armangil</name><uri>http://www.blogger.com/profile/03335185535879016714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-IYVydroMKhc/To9L-dZSZII/AAAAAAAAAWU/pkO4gY-f_Y4/s220/Doga_portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6070431505753481976.post-4523367174120191984</id><published>2011-10-10T18:01:00.000+02:00</published><updated>2011-10-10T18:01:18.480+02:00</updated><title type='text'>Of humans and machines</title><content type='html'>Since the early days of computing, there has been a dichotomy, or at least a continuum, between data that is intended for human consumption, and data that is intended for machine consumption.&lt;br /&gt;&lt;br /&gt;Here is a sample of how that continuum manifests itself in web formats, ordered by human-friendliness:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Web page (primarily intended for humans);&lt;/li&gt;&lt;li&gt;Web page with microformats (human-friendly data that contains machine-friendly data);&lt;/li&gt;&lt;li&gt;RSS feed (machine-friendly data that contains human-friendly data); and&lt;/li&gt;&lt;li&gt;XML-RPC result message (primarily intended for machines).&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Similarly, there is a continuum between services that are intended for human consumption, and services that are for machine consumption. Here is a sample:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Website / Web application (primarily intended for humans);&lt;/li&gt;&lt;li&gt;Qworum service (for both humans and machines);&lt;/li&gt;&lt;li&gt;XML-RPC service (primarily intended for machines).&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;While this argumentation might seem philosophical, it is in fact of practical use for systems design. For example, this line of thinking has allowed Qworum to support both web browsers and RPC clients for consuming services.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6070431505753481976-4523367174120191984?l=qworum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qworum.blogspot.com/feeds/4523367174120191984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qworum.blogspot.com/2011/10/of-humans-and-machines.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/4523367174120191984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/4523367174120191984'/><link rel='alternate' type='text/html' href='http://qworum.blogspot.com/2011/10/of-humans-and-machines.html' title='Of humans and machines'/><author><name>Doğa Armangil</name><uri>http://www.blogger.com/profile/03335185535879016714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-IYVydroMKhc/To9L-dZSZII/AAAAAAAAAWU/pkO4gY-f_Y4/s220/Doga_portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6070431505753481976.post-1494624499676175959</id><published>2011-10-10T00:12:00.000+02:00</published><updated>2011-10-10T00:23:13.575+02:00</updated><title type='text'>The end-user as a resource</title><content type='html'>I will briefly talk about the way the end-user is modeled in Qworum, and the benefits of the Qworum approach.&lt;br /&gt;&lt;br /&gt;In Qworum, the end-user is considered as a resource that services can make use of during their execution.&lt;br /&gt;&lt;br /&gt;Here is how a Qworum service "calls" the end-user resource:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It sends back a web page as response to a request,&lt;/li&gt;&lt;li&gt;The request which is in turn generated from this page (e.g. through an end-user click) is effectively the result of the end-user call.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Considering the end-user as a resource has one immediate benefit: it becomes possible for services to continue their execution in the end-user's absence. In fact, Qworum has a built-in mechanism for that:&lt;br /&gt;&lt;br /&gt;Qworum user-agents throw a "user"&amp;nbsp;&lt;a href="http://www.qworum.com/specs/core/1.0#fault"&gt;fault&lt;/a&gt;&amp;nbsp;(i.e. exception, in Qworum-speak) when they receive a web page, and&amp;nbsp;the end-user is not present. Services can catch and handle that fault to continue their execution.&lt;br /&gt;&lt;br /&gt;This approach allows Qworum to support both interactive user-agents such as &lt;a href="http://www.qworum.com/products#browser"&gt;web browsers&lt;/a&gt;, and non-interactive user-agents such as &lt;a href="http://www.qworum.com/products#rpc"&gt;RPC clients&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6070431505753481976-1494624499676175959?l=qworum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qworum.blogspot.com/feeds/1494624499676175959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qworum.blogspot.com/2011/10/end-user-as-resource.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/1494624499676175959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/1494624499676175959'/><link rel='alternate' type='text/html' href='http://qworum.blogspot.com/2011/10/end-user-as-resource.html' title='The end-user as a resource'/><author><name>Doğa Armangil</name><uri>http://www.blogger.com/profile/03335185535879016714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-IYVydroMKhc/To9L-dZSZII/AAAAAAAAAWU/pkO4gY-f_Y4/s220/Doga_portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6070431505753481976.post-5529217662481888792</id><published>2011-10-07T20:23:00.000+02:00</published><updated>2011-10-09T17:03:47.500+02:00</updated><title type='text'>A next-generation service platform named Qworum</title><content type='html'>I would like to briefly present here a service platform which I have been working on.&lt;br /&gt;&lt;br /&gt;Simply said, Qworum is a platform that supports interactive web services. In other words, Qworum services can interact with the end-user through conventional web pages, while still showing RPC service behaviour (i.e. they receive call arguments and they return a result).&lt;br /&gt;&lt;br /&gt;So Qworum is neither a web technology, nor an RPC technology; it is both!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Qworum compared to the World Wide Web&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The World Wide Web was designed as a system of interlinked documents.&amp;nbsp;In contrast, Qworum is a system of interlinked services.&lt;br /&gt;&lt;br /&gt;I believe that in today's web, which is increasingly being used to provide applications, there is a currently unmet need for a technology such as Qworum which allows for modular web applications.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Qworum compared to XML-RPC&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;XML-RPC may well be the most practical RPC system available today, so my observations will be based on that.&lt;br /&gt;&lt;br /&gt;Qworum is a service technology that supports point-to-point RPC calls,&amp;nbsp;as does XML-RPC. Additionally:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It&amp;nbsp;has support for interactive services,&lt;/li&gt;&lt;li&gt;It supports many types of clients: services can be called by web applications and other services, as well as by RPC clients,&lt;/li&gt;&lt;li&gt;It supports XML data: services can receive and return raw XML, as well as RPC-style data that can be deserialized into native constructs for various programming languages.&lt;/li&gt;&lt;li&gt;It identifies services by their URL, instead of providing its own identification mechanism.&lt;/li&gt;&lt;/ul&gt;The reason for Qworum's ability to offer such an extensive list of&amp;nbsp;features is its leveraging of all existing web standards.&lt;br /&gt;&lt;br /&gt;Read the full Qworum specification&amp;nbsp;&lt;a href="http://www.qworum.com/specs/core/1.0"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6070431505753481976-5529217662481888792?l=qworum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qworum.blogspot.com/feeds/5529217662481888792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qworum.blogspot.com/2011/10/next-generation-service-platform-named.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/5529217662481888792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6070431505753481976/posts/default/5529217662481888792'/><link rel='alternate' type='text/html' href='http://qworum.blogspot.com/2011/10/next-generation-service-platform-named.html' title='A next-generation service platform named Qworum'/><author><name>Doğa Armangil</name><uri>http://www.blogger.com/profile/03335185535879016714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://1.bp.blogspot.com/-IYVydroMKhc/To9L-dZSZII/AAAAAAAAAWU/pkO4gY-f_Y4/s220/Doga_portrait.jpg'/></author><thr:total>0</thr:total></entry></feed>
