{"id":42,"date":"2006-03-13T16:19:11","date_gmt":"2006-03-13T23:19:11","guid":{"rendered":"http:\/\/www.redmonk.com\/cote\/wp\/?p=42"},"modified":"2006-03-13T16:19:11","modified_gmt":"2006-03-13T23:19:11","slug":"web-20-ides-and-constraint-based-design","status":"publish","type":"post","link":"https:\/\/redmonk.com\/cote\/2006\/03\/13\/web-20-ides-and-constraint-based-design\/","title":{"rendered":"Web 2.0 IDE&#039;s and Constraint-based Design"},"content":{"rendered":"<p><a href=\"http:\/\/www.monkchips.com\">James<\/a> sent over <a href=\"http:\/\/blogs.msdn.com\/johnmont\/archive\/2006\/03\/11\/549552.aspx\">a post from John Montgomery wondering out-loud what a web based IDE would look like, or if it&#8217;s even possible and\/or desirable<\/a>.<\/p>\n<p>I know: it sounds crazy to all us developer types out there. The web is way slow for coding. Then again, maybe the problem is that the web is too slow for the <i>way<\/i> we code. New way and different ways of coding may work perfectly on the web. As some thought-yeast, <a href=\"http:\/\/www.writely.com\">Writely isn&#8217;t a perfect word processor, but <a href=\"http:\/\/www.redmonk.com\/sogrady\/archives\/001379.html\">it&#8217;s good enough for most of my word processor tasks<\/a>.<\/p>\n<h2>The Wiki Model<\/h2>\n<p>In the short to medium term, a successful web-based &#8220;IDE&#8221; would be something like a wiki. Wikis &#8212; such as the [in]famous <a href=\"http:\/\/wikipedia.org\/\">wikipedia<\/a> &#8212; draw their power from their simplicity. A wiki is a collection of web pages (with text and images) that allow you to edit the content of each wiki page by clicking an &#8220;Edit&#8221; link on each page. After clicking, you edit the text on the page, and click save. The page is instantly updated. There&#8217;s no work-flow or uploading to go through. Whiz-bang! It just works.<\/p>\n<h2>Side-note: Do You Know Wikis?<\/h2>\n<p>If you&#8217;re developing software, and you&#8217;re <i>not<\/i> familiar with the architecture and usability of wikis, I&#8217;d strongly recommend taking some time to pick it up. The abstract design think behind wiki&#8217;s is brilliant and can improve usability in other web applications.<\/p>\n<h2>Refactor Me<\/h2>\n<p>Getting back to web based IDE&#8217;s, the key jump to make is that an IDE could be baked into the actual application itself. For example, you might have a web application where each page has a link\/button that says &#8220;Refactor Me.&#8221; Clicking on that button would bring up whatever code in some IDE&#8217;ish page that you could edit. Once you clicked save, it&#8217;d re-compile\/re-deploy or re-whatever needed to happen to get those changes in effect.<\/p>\n<p>Sites like <a href=\"http:\/\/www.ning.com\">Ning<\/a> are probably good inspiration. I also suspect that there are, or will be, some <a href=\"http:\/\/www.techcrunch.com\/2006\/03\/06\/salesforce-announces-new-developer-community-and-business-mashups\/\">SalesForce mashups<\/a> along these lines. Frameworks like <a href=\"http:\/\/www.seaside.st\/\">Seaside<\/a> are also interesting in this area.<\/p>\n<h2>Constraint-based Design: Exploit the Powers, Ignore the Weaknesses<\/h2>\n<p>As <a href=\"http:\/\/www.redmonk.com\/cote\/archives\/2006\/03\/redmonk_radio_e.html\">all of us at RedMonk have pointed out<\/a>, the Writely&#8217;s powers are the multi-user, collaborative features: keeping track of revisions, who&#8217;s edited what, concurrent editing, centralizing the document so there&#8217;s only ever one document (no emailing around different copies of a .doc file), and the portability that comes from a web-app that isn&#8217;t bound to an end-user platform&#8230;among other features.<\/p>\n<p>When it comes to a web-based IDE, instead of focusing on duplicating the exact feature-set of desktop IDE&#8217;s, web-based IDE&#8217;s should focus on those types of key features that desktop IDE&#8217;s can&#8217;t touch.<\/p>\n<p>This same pattern, of course, emerges as application cross mediums: from mainframe to desktop, from desktop to web, from web to mobile, etc. Each type of system that an application runs in brings it&#8217;s own set of core competencies, to borrow a biz-term. One moniker for this type of thinking is <a href=\"http:\/\/www.redmonk.com\/jgovernor\/archives\/001286.html\">&#8220;constraint-based design&#8221;<\/a>, and it&#8217;s a great, <a href=\"http:\/\/www.amazon.com\/exec\/obidos\/ASIN\/0321150783\">lean-ish<\/a> way of understanding the idea. It&#8217;s always tragic to see an application wallow in what it can&#8217;t do, fighting it&#8217;s constraints, instead of reveal in what it can do, profiting from it&#8217;s constraints.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>James sent over a post from John Montgomery wondering out-loud what a web based IDE would look like, or if it&#8217;s even possible and\/or desirable. I know: it sounds crazy to all us developer types out there. The web is way slow for coding. Then again, maybe the problem is that the web is too [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,13,23,36],"tags":[],"class_list":["post-42","post","type-post","status-publish","format-standard","hentry","category-collaborative","category-ideas","category-programming","category-the-new-thing"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/posts\/42","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/comments?post=42"}],"version-history":[{"count":0,"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/posts\/42\/revisions"}],"wp:attachment":[{"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/media?parent=42"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/categories?post=42"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/tags?post=42"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}