<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Throw out your frameworks! (forms included)</title>
	<atom:link href="http://blog.ianbicking.org/2010/03/01/throw-out-your-frameworks-forms-included/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ianbicking.org/2010/03/01/throw-out-your-frameworks-forms-included/</link>
	<description></description>
	<lastBuildDate>Fri, 06 May 2011 07:16:39 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Foxhound Design</title>
		<link>http://blog.ianbicking.org/2010/03/01/throw-out-your-frameworks-forms-included/comment-page-1/#comment-168691</link>
		<dc:creator>Foxhound Design</dc:creator>
		<pubDate>Mon, 26 Jul 2010 01:30:39 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/?p=164#comment-168691</guid>
		<description>I can&#039;t wait for HTML5 to finally do away with frameworks. I&#039;ll leave all the Tempita and other languages to the programming professionals like yourself. As mainly a front-end designer it&#039;s interesting to see where the future is going with the both ends of the web and frankly it can&#039;t come any sooner.</description>
		<content:encoded><![CDATA[<p>I can&#8217;t wait for HTML5 to finally do away with frameworks. I&#8217;ll leave all the Tempita and other languages to the programming professionals like yourself. As mainly a front-end designer it&#8217;s interesting to see where the future is going with the both ends of the web and frankly it can&#8217;t come any sooner.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sergey Schetinin</title>
		<link>http://blog.ianbicking.org/2010/03/01/throw-out-your-frameworks-forms-included/comment-page-1/#comment-155847</link>
		<dc:creator>Sergey Schetinin</dc:creator>
		<pubDate>Sat, 13 Mar 2010 02:17:36 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/?p=164#comment-155847</guid>
		<description>Related: http://pypi.python.org/pypi/mext.htmlgen</description>
		<content:encoded><![CDATA[<p>Related: <a href="http://pypi.python.org/pypi/mext.htmlgen" rel="nofollow">http://pypi.python.org/pypi/mext.htmlgen</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tavis Rudd</title>
		<link>http://blog.ianbicking.org/2010/03/01/throw-out-your-frameworks-forms-included/comment-page-1/#comment-155844</link>
		<dc:creator>Tavis Rudd</dc:creator>
		<pubDate>Sat, 13 Mar 2010 01:52:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/?p=164#comment-155844</guid>
		<description>Ian, I&#039;ve been exploring some similar thoughts regarding the need for templates languages in Python web dev.  I approached the arguments for using templates with a clear mind and concluded they were mostly antiquated / invalid dogma.  Here&#039;s a little rant / example module arguing that Python developers would be much better off writing their presentation layer in plain Python: http://bitbucket.org/tavisrudd/throw-out-your-templates/  I couldn&#039;t figure out what to name it until seeing this blog post today ;)</description>
		<content:encoded><![CDATA[<p>Ian, I&#8217;ve been exploring some similar thoughts regarding the need for templates languages in Python web dev.  I approached the arguments for using templates with a clear mind and concluded they were mostly antiquated / invalid dogma.  Here&#8217;s a little rant / example module arguing that Python developers would be much better off writing their presentation layer in plain Python: <a href="http://bitbucket.org/tavisrudd/throw-out-your-templates/" rel="nofollow">http://bitbucket.org/tavisrudd/throw-out-your-templates/</a>  I couldn&#8217;t figure out what to name it until seeing this blog post today ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jorge Vargas</title>
		<link>http://blog.ianbicking.org/2010/03/01/throw-out-your-frameworks-forms-included/comment-page-1/#comment-154847</link>
		<dc:creator>Jorge Vargas</dc:creator>
		<pubDate>Sat, 06 Mar 2010 03:43:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/?p=164#comment-154847</guid>
		<description>@Nicolas, I&#039;ll love to see that released as Open Source.</description>
		<content:encoded><![CDATA[<p>@Nicolas, I&#8217;ll love to see that released as Open Source.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Carl Meyer</title>
		<link>http://blog.ianbicking.org/2010/03/01/throw-out-your-frameworks-forms-included/comment-page-1/#comment-154680</link>
		<dc:creator>Carl Meyer</dc:creator>
		<pubDate>Thu, 04 Mar 2010 15:54:00 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/?p=164#comment-154680</guid>
		<description>That sounds like an interesting project. Except I&#039;d have to part ways immediately with design principle #1 (the rest are excellent). If you accept schema-definition as a mental model for what your form toolkit is doing (clearly some don&#039;t prefer it), declarative classes are a natural and intuitive way to declare a schema. And why shouldn&#039;t schema-definition to be a static module-level concern?

Nor am I concerned about intermingling code and data; in fact I think the less distinction there is between the two, the better.</description>
		<content:encoded><![CDATA[<p>That sounds like an interesting project. Except I&#8217;d have to part ways immediately with design principle #1 (the rest are excellent). If you accept schema-definition as a mental model for what your form toolkit is doing (clearly some don&#8217;t prefer it), declarative classes are a natural and intuitive way to declare a schema. And why shouldn&#8217;t schema-definition to be a static module-level concern?</p>

<p>Nor am I concerned about intermingling code and data; in fact I think the less distinction there is between the two, the better.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nicolas Grilly</title>
		<link>http://blog.ianbicking.org/2010/03/01/throw-out-your-frameworks-forms-included/comment-page-1/#comment-154658</link>
		<dc:creator>Nicolas Grilly</dc:creator>
		<pubDate>Thu, 04 Mar 2010 07:58:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/?p=164#comment-154658</guid>
		<description>In my company, we were used to develop our forms using a home grown form generation framework. But what Ian mentioned many times in his blog happened. We were constantly trying to work around the limitations of our library to correctly handle side cases, constantly fixing bugs, and constantly wondering how to document a such complex library.

Then we have read &quot;On form libraries&quot;, the Ian&#039;s post. It convinces us to ditch our form generation library. We replaced it by a more &quot;low level&quot; solution:

- We code forms in standard XHTML, in Genshi templates.
- We use Genshi macros to create and reuse complex widgets.
- We use HTMLFormFiller, a Genshi feature, to automatically fill the form (this the Genshi version of htmlfill).
- We validate inputs server side using FormEncode.
- Forms are submitted in AJAX using jQuery. The server response is a bit of Javascript executed by the client. If the input is valid, the server returns something like &quot;window.location = ...&quot;. If the input is invalid, the server returns something like &quot;showErrors(dictProducedByFormEncodeEncodedInJSON)&quot;. The Javascript function showErrors shows an error message (like &quot;Please complete or correct highlighted fields&quot;) and highlights invalid fields. Thanks to the AJAX form submission, we have eluded the problem of regenerating the form server side when a validation error occurs, which requires to redisplay data entered by the user and inject error messages in the form template.

Conclusion: We are very pleased by the solution Genshi + HTMLFormFiller + FormEncode + jQuery + AJAX submission. The code is easy to read and to maintain by a third party. It is highly flexible. And it is well documented and almost bug free.</description>
		<content:encoded><![CDATA[<p>In my company, we were used to develop our forms using a home grown form generation framework. But what Ian mentioned many times in his blog happened. We were constantly trying to work around the limitations of our library to correctly handle side cases, constantly fixing bugs, and constantly wondering how to document a such complex library.</p>

<p>Then we have read &#8220;On form libraries&#8221;, the Ian&#8217;s post. It convinces us to ditch our form generation library. We replaced it by a more &#8220;low level&#8221; solution:</p>

<ul>
<li>We code forms in standard XHTML, in Genshi templates.</li>
<li>We use Genshi macros to create and reuse complex widgets.</li>
<li>We use HTMLFormFiller, a Genshi feature, to automatically fill the form (this the Genshi version of htmlfill).</li>
<li>We validate inputs server side using FormEncode.</li>
<li>Forms are submitted in AJAX using jQuery. The server response is a bit of Javascript executed by the client. If the input is valid, the server returns something like &#8220;window.location = &#8230;&#8221;. If the input is invalid, the server returns something like &#8220;showErrors(dictProducedByFormEncodeEncodedInJSON)&#8221;. The Javascript function showErrors shows an error message (like &#8220;Please complete or correct highlighted fields&#8221;) and highlights invalid fields. Thanks to the AJAX form submission, we have eluded the problem of regenerating the form server side when a validation error occurs, which requires to redisplay data entered by the user and inject error messages in the form template.</li>
</ul>

<p>Conclusion: We are very pleased by the solution Genshi + HTMLFormFiller + FormEncode + jQuery + AJAX submission. The code is easy to read and to maintain by a third party. It is highly flexible. And it is well documented and almost bug free.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Krish</title>
		<link>http://blog.ianbicking.org/2010/03/01/throw-out-your-frameworks-forms-included/comment-page-1/#comment-154551</link>
		<dc:creator>Krish</dc:creator>
		<pubDate>Wed, 03 Mar 2010 17:33:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/?p=164#comment-154551</guid>
		<description>I, myself burnt my finger with toscawidgets dynamic forms when I am developing a pylons application. I could have used simple html tags. There was no way to bend the form, the way I like. 

But I learnt the hard lesson when I want to modify the form contents. I have spent more time to hack and learn the spec.

Simple hand written html form is easy to maintain and easy to read at the end of the day if we have isolated html and css/styles.</description>
		<content:encoded><![CDATA[<p>I, myself burnt my finger with toscawidgets dynamic forms when I am developing a pylons application. I could have used simple html tags. There was no way to bend the form, the way I like. </p>

<p>But I learnt the hard lesson when I want to modify the form contents. I have spent more time to hack and learn the spec.</p>

<p>Simple hand written html form is easy to maintain and easy to read at the end of the day if we have isolated html and css/styles.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian Bicking</title>
		<link>http://blog.ianbicking.org/2010/03/01/throw-out-your-frameworks-forms-included/comment-page-1/#comment-154325</link>
		<dc:creator>Ian Bicking</dc:creator>
		<pubDate>Tue, 02 Mar 2010 17:16:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/?p=164#comment-154325</guid>
		<description>Honestly, to really figure this out I&#039;d want to sit down with maybe a dozen fully thought out examples from realistic situations, both simple and complex, and start to brainstorm ways to solve that whole set -- satisfying the complex ones without sacrificing the simple ones.  And without shying away from ad hoc code in the hard situations.  Combine that with a few design principles, and I&#039;d be curious what would come out...

* No module-level declarations (that can&#039;t be trivially moved into a function).  Classes can technically be moved into a function... but somehow it seems quite wrong.  Mostly because of the structure of declarative classes, they tend to make data into code (e.g., strings become variable names).
* Has to take into account agile HTML design.
* Javascript is on the table.  Ideally jQuery, definitely not Dojo or GWT or any frameworky Javascript.  I carry my framework bigotry with me when I visit other lands.
* Pushback on requirements is acceptable.  Pushback should always be acceptable, it just has to be justified.

With further thought, I think another tension I feel is that I like things to be what they are.  For instance, I hate stuff that compiles into Javascript.  Similarly HTML is the canonical form of HTML forms.</description>
		<content:encoded><![CDATA[<p>Honestly, to really figure this out I&#8217;d want to sit down with maybe a dozen fully thought out examples from realistic situations, both simple and complex, and start to brainstorm ways to solve that whole set &#8212; satisfying the complex ones without sacrificing the simple ones.  And without shying away from ad hoc code in the hard situations.  Combine that with a few design principles, and I&#8217;d be curious what would come out&#8230;</p>

<ul>
<li>No module-level declarations (that can&#8217;t be trivially moved into a function).  Classes can technically be moved into a function&#8230; but somehow it seems quite wrong.  Mostly because of the structure of declarative classes, they tend to make data into code (e.g., strings become variable names).</li>
<li>Has to take into account agile HTML design.</li>
<li>Javascript is on the table.  Ideally jQuery, definitely not Dojo or GWT or any frameworky Javascript.  I carry my framework bigotry with me when I visit other lands.</li>
<li>Pushback on requirements is acceptable.  Pushback should always be acceptable, it just has to be justified.</li>
</ul>

<p>With further thought, I think another tension I feel is that I like things to be what they are.  For instance, I hate stuff that compiles into Javascript.  Similarly HTML is the canonical form of HTML forms.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Istvan Albert</title>
		<link>http://blog.ianbicking.org/2010/03/01/throw-out-your-frameworks-forms-included/comment-page-1/#comment-154322</link>
		<dc:creator>Istvan Albert</dc:creator>
		<pubDate>Tue, 02 Mar 2010 15:56:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/?p=164#comment-154322</guid>
		<description>In my opinion your code&#039;s apparent simplicity comes primarily from the simplicity of the problem that needed to be solved - and not from the methodology itself.

Jacob Kaplan Mosses example has a logical layout with a self documenting nature and an internal structure that another programmer can pick up on and work with. 

Your code on the other hand can only be modified once someone has read an understood every line of code.</description>
		<content:encoded><![CDATA[<p>In my opinion your code&#8217;s apparent simplicity comes primarily from the simplicity of the problem that needed to be solved &#8211; and not from the methodology itself.</p>

<p>Jacob Kaplan Mosses example has a logical layout with a self documenting nature and an internal structure that another programmer can pick up on and work with. </p>

<p>Your code on the other hand can only be modified once someone has read an understood every line of code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Martijn Faassen</title>
		<link>http://blog.ianbicking.org/2010/03/01/throw-out-your-frameworks-forms-included/comment-page-1/#comment-154294</link>
		<dc:creator>Martijn Faassen</dc:creator>
		<pubDate>Tue, 02 Mar 2010 00:35:43 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/?p=164#comment-154294</guid>
		<description>I totally agree with those gripes. Especially of course the complexity and hackability one - form frameworks tend to be very magic. I think that&#039;s Ian&#039;s point: there are so many edge cases and special features that form frameworks can&#039;t handle them all or is buggy and you end up with more complexity than hand-rolling something instead.

I just wanted to move away from framework hating to actual considerations about what makes a form library/framework/architecture work better.</description>
		<content:encoded><![CDATA[<p>I totally agree with those gripes. Especially of course the complexity and hackability one &#8211; form frameworks tend to be very magic. I think that&#8217;s Ian&#8217;s point: there are so many edge cases and special features that form frameworks can&#8217;t handle them all or is buggy and you end up with more complexity than hand-rolling something instead.</p>

<p>I just wanted to move away from framework hating to actual considerations about what makes a form library/framework/architecture work better.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.497 seconds -->

