My apologies for the delayed mails, I&#39;m having some troubles sending &quot;From: <a href="mailto:adamk@cpan.org">adamk@cpan.org</a>&quot;, so I&#39;ve switched over to a pure gmail account for now.<br><br>I&#39;ll make some quick responses at the moment, but I&#39;d just note that we need to be VERY careful what underlying choices we make for what the CCAN becomes. Scope and constraints make or break whether this stuff works in the long run.
<br><br><div><span class="gmail_quote">On 18/12/2007, <b class="gmail_sendername">Rusty Russell</b> &lt;<a href="mailto:rusty@rustcorp.com.au">rusty@rustcorp.com.au</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
OK, so I promise I&#39;ll put up a bzr repo sometime soon, but meanwhile here&#39;s a<br>list of thoughts on open issues in no order:<br><br>1) Domain name.&nbsp;&nbsp;<a href="http://ccan.org">ccan.org</a> would be ideal: seems to point to a generic ISP
<br>&nbsp;&nbsp; page, whois says Community Care Ambulance Network in Ohio, which seems<br>&nbsp;&nbsp; legit at first glance.&nbsp;&nbsp;<a href="http://ccan.com">ccan.com</a> seems to be for sale by a squatter,<br>&nbsp;&nbsp; perhaps we could do some deal where we buy 
<a href="http://ccan.com">ccan.com</a> for the ambos and get<br>&nbsp;&nbsp; <a href="http://ccan.org">ccan.org</a>?</blockquote><div><br>I&#39;d say do whatever we can to get the best possible name, it makes a huge difference.<br>
<br>The JSAN (JavaScript Archive Network) ended up going with <a href="http://openjsan.org">openjsan.org</a>, although after putting in some time I did have an option to get <a href="http://jsan.net">jsan.net</a>, which would have been preferable but was overruled because getting a domain was always &quot;done&quot;.
<br><br>Lets find someone from Chicago and make contact with those guys.<br><br>Or perhaps we can use <a href="http://ccan.com">ccan.com</a>? or <a href="http://ccan.net">ccan.net</a>?<br><br>Using a domain for any specific country it out, as these projects are always global in nature.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">2) Namespacization.&nbsp;&nbsp;If someone can&#39;t use (say) container_of because their
<br>&nbsp;&nbsp; existing project uses that name, it&#39;d be nice to rename it to<br>&nbsp;&nbsp; ccan_container_of.&nbsp;&nbsp;Of course, this means any other ccan modules which use<br>&nbsp;&nbsp; this need changing too.<br><br>&nbsp;&nbsp; I thought about making the ccan_ versions canonical and providing macros
<br>&nbsp;&nbsp; to map to the normal names, but it breaks the golden rule:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This code must not be ugly.<br><br>&nbsp;&nbsp; So I chose the harder road of supplying a C program to actually rewrite the<br>&nbsp;&nbsp; module and anything which depends on it.&nbsp;&nbsp;Not quite finished yet, but it
<br>&nbsp;&nbsp; has the merit of placing the burden of ugliness where it belongs.</blockquote><div><br>This part is tricky, and I&#39;m not sure there&#39;s much I can do to contribute, since I&#39;m not experienced in this area. But I&#39;ll talk more a bit later about these sorts of issues (I&#39;m up to my eyes in Perl 
5.10 release stuff for another few days).<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">3) Minimum compiler requirements.&nbsp;&nbsp;Seems like Microsoft&#39;s C compiler doesn&#39;t
<br>&nbsp;&nbsp; do vararg macros, let alone any other C99 stuff.&nbsp;&nbsp;This makes it impossible<br>&nbsp;&nbsp; to have nice code for some things, so for the moment I&#39;m still sticking<br>&nbsp;&nbsp; with my intention of requiring (most of) C99, and Windows coders will have
<br>&nbsp;&nbsp; to hope they catch up, or we do some horrible mangling at the user end<br>&nbsp;&nbsp; (like namespacization).</blockquote><div><br>As a general rule, dealing with commercial programs is hell.<br><br>Strawberry Perl demonstrates a precedent for using MinGW and (in our case, for some specific legacy reasons) dmake to build various stuff.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">4) Licensing: so far I&#39;m restricting it to with BSD no advertising, or GPLv2+.
<br>&nbsp;&nbsp; More than that makes life too tricky for people wanting to use the code.</blockquote><div><br>This is going to be one of the more complex and unique elements of this project, because we haven&#39;t hit it with either Perl or JavaScript, we may need some help from legal counsel.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">5) Uploading, automated testing, etc.&nbsp;&nbsp;No idea here, plan to steal as much of<br>
&nbsp;&nbsp; CPAN as possible for this.</blockquote><div><br>These are non-issues for now. The various elements of the CPAN &quot;cloud&quot; of services are written and owned independently and were created after and around the core.
<br><br>In particular, you should completely ignore things like documentation websites, automated testing and quality control and so on for now.<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
6) I have documentation-extraction code, but it doesn&#39;t do any xml-style guff<br>&nbsp;&nbsp; (the Linux kernel&#39;s system on which this is loosely based is perl based, so<br>&nbsp;&nbsp; maybe we should just steal that for the documentation, as it does various
<br>&nbsp;&nbsp; different output forms).</blockquote><div><br>The only thing I&#39;d not on this topic is the Perl code this part completely right.<br><br>By convention, the docs don&#39;t just show function/method details, they also have free-form description sections, allow samples in synopsis sections, and so on.
<br><br>They act much more like in-line man pages than API docs, and this has worked enormously well. <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
7) Automatic downloading, testing, checking for updates, and dependency<br>&nbsp;&nbsp; tracking.&nbsp;&nbsp;This would be nice, particularly handling namespacization and<br>&nbsp;&nbsp; detecting local mods.</blockquote><div><br></div></div>Ignore automatic downloading, ignore testing, updates and dependency tracking. We aren&#39;t ready for that yet.
<br><br>The first two major elements we need to define is<br><br>1. The toolchain and methodologies on a per-package basis.<br><br>(Issues like libtap and which compilers we support belong)<br><br>2. The definitions for what the actual &quot;products&quot; the CCAN provides are.
<br><br>(Issues like cut-paste vs code munging vs libfoo distribution).<br><br>Once we have a rough handle on what a &quot;CCAN package&quot; is, and how it is structured and installed, the rest is either a) Irrelevant or b) Unscopable.
<br><br>Solving the wrong problems too early is a common fault of some of the worse repositories.<br>