<div class="gmail_quote">On Thu, May 7, 2009 at 11:25 AM, Greg Knaddison <span dir="ltr">&lt;<a href="mailto:greg.knaddison@gmail.com">greg.knaddison@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="h5">On Thu, May 7, 2009 at 9:12 AM, Ivan Sergio Borgonovo<br>
&lt;<a href="mailto:mail@webthatworks.it">mail@webthatworks.it</a>&gt; wrote:<br>
&gt; On Thu, 7 May 2009 09:23:48 -0500<br>
&gt; Jeff Eaton &lt;<a href="mailto:jeff@viapositiva.net">jeff@viapositiva.net</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; Crell&#39;s Law: If an API must be use-case-optimized, make it<br>
&gt;&gt; swappable &amp; tailor the default for cheap shared hosting. High-end<br>
&gt;&gt; sites can swap.<br>
&gt;<br>
&gt;&gt; Eaton&#39;s Corollary: If an API is swappable, write two<br>
&gt;&gt; implementations. APIs with one test case are rarely flexible<br>
&gt;&gt; enough for the second.<br>
&gt;<br>
&gt; If you want to make stuff swappable start at least with 3<br>
&gt; implementations otherwise 2 will just be a special case of 1.<br>
<br>
</div></div>We have to temper the ideal with reality.  We have several swappable<br>
systems in Drupal (database, mail sending, caching, others?) and as<br>
far as I know only one of them has multiple backends in core<br>
(databases).  We are able to have multiple backend for databases, but<br>
it takes a lot of effort.  I doubt we have the capacity to create not<br>
just 2, but 3 implementations for all of the other swappable items in<br>
core.  There&#39;s also the question of baggage. Do we really want to<br>
merge SMTP [1] and Fastpath FSCache[2] into core?  Would that be a<br>
total improvement?  Would the additional complexity (usability<br>
decrease) be worth it just so we can satisfy a desire to properly test<br>
that APIs?<br>
</blockquote><div><br>Moreover, <br><br>The whole idea of making it swappable is to avoid hacking core (and killing kittens)<br>yet be able to customize things in new ways, without being limited by core&#39;s strict<br>process and patch cycle.<br>
<br>Experimentation is much easier with swappables in contrib.<br><br>&quot;Never underestimate the power of contrib ...&quot;<br></div></div>-- <br>Khalid M. Baheyeldin<br><a href="http://2bits.com">2bits.com</a>, Inc.<br>
<a href="http://2bits.com">http://2bits.com</a><br>Drupal optimization, development, customization and consulting.<br>Simplicity is prerequisite for reliability. --  Edsger W.Dijkstra<br>Simplicity is the ultimate sophistication. --   Leonardo da Vinci<br>