<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">That is an interesting question - I've taken a run with magritte once or twice and did not make satisfactory progress and abandoned it.<div> <div>I found the method of defining the meta model in magritte to be rather ponderous and awkward.</div><div><br></div><div>Not that it isn't expressive, but I don't know all the parts/mappings/kinds of things - I spent all this time looking at the docs or examples. Also the documentation is non-existent. Really, if you want to get people to use magritte - STOP CODING AND START DOCUMENTING - I don't have time to figure it out from the examples or pier or any running code. I want docs and code snippets I can steal and modify. I want them in a nicely indexed web site so I can find a solution to my exact problem using google in about sixty seconds. </div><div><br></div><div>Note website for activescaffold: <a href="http://activescaffold.com">http://activescaffold.com</a></div><div>Click on documentation. Wow, everything I need to know right there. Brilliant. Where is the equivalent resource for Magritte? Google couldn't find it.</div><div><br></div><div>Most of what you need to define the magritte model is already in the database schema - so can magritte just infer the fields and let me just customize it's behavior?</div><div><br></div><div>The missing part in the database is the mapping of widgets and the order or presentation of fields. </div><div><br></div><div>In the system I am doing (sells tickets to a new museum) there is </div><div><br></div><div>Order->OrderTransactions (subclassed to Purchase,Exchange,Return)->Tickets (actually two relations - tickets added, tickets removed)</div><div><br></div><div>The code to get a fully functioning back office/admin UI to edit this entire network is below - there's very little of it. Most of the code is just to customize elements - change labels for columns, change column order, suppress presentation of some columns or relationships.</div><div><br></div><div>Why I picked Rails:</div><div><br></div><div>1) I already had an existing mysql database I had to use.</div><div>2) Client wanted a technology with a large local pool of talent he could hire - robotcoop is nearby (spinoff of amazon.com) - they are all rails and it is easy to hire people from there</div><div>3) I had a lot of UI that is back office and can be kind of ugyly/auto-generated and only a little public UI (ticket purchase flow)</div><div>4) Rails has a number of scalable deployment recipes available - I'm using apache->mongrel cluster. I will add capistrano to automate upgrade deployments</div><div>5) I'm replacing an equivalent system written in a nightmare combination of Java/Hibernate/Cocoon-js/xml-xslt/tomcat that nobody wants to maintain. I can't learn that many languages - but I most certainly can steal/translate logic and templates - it was easy to translate jsp to rhtml templates.</div><div><br></div><div>For your amusement - the entirety of the order/ordertransaction/ticket code is below - it does a two level master-detail view with ajax updates in a single page. It took me almost no time at all to get this working and the majority of the code you see is just appearance tweaks or action disabling.</div><div><br></div><div><br></div><div>:</div><div>#model - (all of it - really)</div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: #aa0d91">class</span> Order < ActiveRecord::Base</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> set_table_name <span style="color: #1c00cf">'orders'</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> has_many :order_transactions, :class_name => <span style="color: #1c00cf">'OrderTransaction'</span>, :foreign_key => <span style="color: #1c00cf">'order_id'</span>, :dependent => :destroy</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> belongs_to :purchaseTransaction, :class_name => <span style="color: #1c00cf">'TicketPurchase'</span>, :foreign_key => <span style="color: #1c00cf">'purchaseTransaction'</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" color="#1C00CF">end</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" color="#1C00CF"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" color="#1C00CF"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: #aa0d91">class</span> OrderTransaction < ActiveRecord::Base</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> has_many :ticketsReturned, :class_name => <span style="color: #1c00cf">'Ticket'</span>, :foreign_key => <span style="color: #1c00cf">'returnTransaction'</span>, :<span style="color: #aa0d91">include</span> => [:price, :product], :dependent => :destroy, :order => <span style="color: #1c00cf">'sequence_number'</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> has_many :ticketsAdded, :class_name => <span style="color: #1c00cf">'Ticket'</span>, :foreign_key => <span style="color: #1c00cf">'originatingTransaction'</span>, :<span style="color: #aa0d91">include</span> => [:price, :product], :dependent => :destroy, :order => <span style="color: #1c00cf">'sequence_number'</span></div><div><br></div></font></div></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: #aa0d91">class</span> TicketPurchase < OrderTransaction</div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;">end</span></font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><br></span></font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><span class="Apple-style-span" style="font-family: Helvetica; font-size: 12px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: rgb(170, 13, 145); ">class</span> TicketExchange < OrderTransaction</div><div><font class="Apple-style-span" face="Monaco" size="2">end</font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><br></span></font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><span class="Apple-style-span" style="font-family: Helvetica; font-size: 12px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: rgb(170, 13, 145); ">class</span> TicketReturn < OrderTransaction</div><div><font class="Apple-style-span" face="Monaco" size="2">end</font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><br></span></font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: #aa0d91">class</span> Ticket < ActiveRecord::Base</div><div>end</div><div><br></div><div>#controllers - tops is most complicated - remove create update and delete abilities - add some action links (all of it)</div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: #aa0d91">class</span> Admin::OrderController < AdminController</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> layout <span style="color: #c41a16">"admin"</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> active_scaffold :orders <span style="color: #aa0d91">do</span> | config |</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.actions.exclude :delete</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.actions.exclude :update</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.actions.exclude :create</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.action_links.add :resend_email, :label => <span style="color: #1c00cf">'Resend Email'</span>, :type => :record, :position => <span style="color: #aa0d91">false</span>, :confirm => <span style="color: #1c00cf">'Resend purchase confirmation email?'</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.action_links.add :exchange_tickets, :label => <span style="color: #1c00cf">'Exchange Tickets'</span>, :type => :record, :position => :after, :crud_type => :update</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.action_links.add :refund_tickets, :label => <span style="color: #1c00cf">'Refund Tickets'</span>, :type => :record, :position => :after, :crud_type => :update</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span class="Apple-style-span" style="color: rgb(0, 0, 0); "> list.sorting = {:date => <span style="color: #1c00cf">'ASC'</span>}</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.list.columns = [:date, :commissionAccount, :nameFirst, :nameLast, :emailAddress, :order_transactions]</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.list.per_page = <span style="color: #1c00cf">100</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.columns = [:date, :commissionAccount, :nameFirst, :nameLast, :emailAddress, :address1, :address2, :city, :state, :zip, :country, :order_transactions]</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> <span style="color: #aa0d91">end</span></div><div><font class="Apple-style-span" color="#AA0D91">end</font></div><div><font class="Apple-style-span" color="#AA0D91"><br></font></div><div><font class="Apple-style-span" color="#AA0D91"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: #aa0d91">class</span> Admin::OrderTransactionController < AdminController</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> layout <span style="color: #c41a16">"admin"</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> active_scaffold :order_transaction <span style="color: #aa0d91">do</span> | config |</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.list.columns = [:date, :type, :channel, :payment, :credit, :ticketsAdded, :ticketsReturned]</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.actions.exclude :delete</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.actions.exclude :update</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.actions.exclude :create </div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); "><span style="color: #000000"> </span>end</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); ">end</div></font></div></div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><span style="color: #aa0d91">class</span> Admin::TicketController < AdminController</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> layout <span style="color: #c41a16">"admin"</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> active_scaffold :ticket <span style="color: #aa0d91">do</span> | config |</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.list.columns = [:forGto, :validForDate, :product, :price, :status, :purchasePrice, :serviceCharge, :order]</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.list.per_page = <span style="color: #1c00cf">100</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> list.sorting = {:validForDate => <span style="color: #1c00cf">'ASC'</span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> columns[:validForDate].label = <span style="color: #c41a16">"Date"</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> columns[:product].label = <span style="color: #c41a16">"Description"</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> columns[:price].label = <span style="color: #c41a16">"Ticket"</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> columns[:purchasePrice].label = <span style="color: #c41a16">"Price"</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> columns[:serviceCharge].label = <span style="color: #c41a16">"Service Charge"</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.actions.exclude :delete</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.actions.exclude :update</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> config.actions.exclude :create </div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); "><span style="color: #000000"> </span>end</div></div><div><br></div><div>#views - auto-generated - no code at all</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></span></font></div></span></span></font></div></span></span></font></div></div><div><br></div><div><div><div>On Jun 1, 2008, at 12:47 AM, stephane ducasse wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>todd<br>do you think that magritte could help there?<br><br>Stef<br><br>On May 31, 2008, at 1:04 AM, Todd Blanchard wrote:<br><br><blockquote type="cite">I watched the screencast. It is not the same thing. I think you guys are missing something key in that project of yours.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Active scaffold simply lets me point the app at a db and ZAM total admin UI that looks nice with AJAX master detail editing. I can then filter out attributes that people ought not to edit, apply permissions, and decorate the app with task links.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">The demo shows app development. I didn't develop a thing apart from specify some mappings because the database used weird and inconsistent naming conventions.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I also found it interesting that the app being developed in the screencast didn't look nearly as sophisticated as the tools being used to build it. I don't find that a good selling point.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">-Todd Blanchard<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On May 30, 2008, at 4:28 AM, James Robertson wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">Cincom is doing exactly that - combining the ActiveRecord pattern with scaffolding. Have a look here:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://www.cincomsmalltalk.com/userblogs/mls/blogView?showComments=true&printTitle=WebVelocity_alpha_screencast&entry=3388846573">http://www.cincomsmalltalk.com/userblogs/mls/blogView?showComments=true&printTitle=WebVelocity_alpha_screencast&entry=3388846573</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">James Robertson<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Cincom Smalltalk Product Evangelist<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://www.cincomsmalltalk.com/blog/blogView">http://www.cincomsmalltalk.com/blog/blogView</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Talk Small and Carry a Big Class Library<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">On May 30, 2008, at 3:13 AM, Todd Blanchard wrote:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">With the idea that no good idea should go un-stolen, allow me to introduce seaside fans to active scaffold <a href="http://activescaffold.com">http://activescaffold.com</a>.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">I am wrapping up a ruby on rails engagement with a client and discovered this framework. I ended up using ROR because the client had an existing mysql database and Squeak's mysql support isn't so hot where rails is all about mysql, and I had only a couple "flows" but a whole lot of plain old admin-CRUD to do and rails excels at plain crud on mysql. With activescaffold - I had to write very little code for the admin UI - a major plus because this project is on a very tight timeline.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Anyhow, activescaffold works with activerecord and infers a really slick AJAX UI that supports sensible CRUD more or less instantly. Once installed, you can go through and customize views by adding actions links, filtering columns, and generally overriding bits of logic to make it more task focused.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">It would be really cool to have a similar facility in Seaside.<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">Cheers,<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">-Todd Blanchard<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">_______________________________________________<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite">seaside mailing list<br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><a href="mailto:seaside@lists.squeakfoundation.org">seaside@lists.squeakfoundation.org</a><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><a href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside">http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside</a><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">_______________________________________________<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">seaside mailing list<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="mailto:seaside@lists.squeakfoundation.org">seaside@lists.squeakfoundation.org</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside">http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside</a><br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite">seaside mailing list<br></blockquote><blockquote type="cite"><a href="mailto:seaside@lists.squeakfoundation.org">seaside@lists.squeakfoundation.org</a><br></blockquote><blockquote type="cite"><a href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside">http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside</a><br></blockquote><blockquote type="cite"><br></blockquote><br>_______________________________________________<br>seaside mailing list<br><a href="mailto:seaside@lists.squeakfoundation.org">seaside@lists.squeakfoundation.org</a><br>http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside<br></div></blockquote></div><br></div></div></body></html>