I think the plugin is ready for &quot;first release&quot; status, so here it is.<div><ul><li>It syncs bi-directionally, but the value here is mostly in the ticket status.  It syncs comments as well, but state change logs/history is <b>not</b> synced.  This is primarily because there&#39;s no way to force Trac to store a change event with a specific date, meaning that there&#39;s no control over the order of history.  This makes resolving differences in the event log practically impossible.  So, ditz-trac just syncs the ticket status and the comments.</li>

<li>It now has a reasonable amount of debugging done.  You will confuse it if you try to sync branches of ditz to a single Trac instance -- confuse, and pollute your Trac DB with duplicate tickets.  It tries to be smart, but there&#39;s no really good solution here that I can think of.  I&#39;m not sure whether it&#39;d be of much use, anyway.  I may eventually add branch support with custom Trac fields, but... that&#39;s so far down the road I&#39;m not sure it&#39;ll ever happen.</li>

<li>Trac&#39;s XMLRPC interface has some curious limitations and quirks that really limit what can be done with a tool like this.  And it can be annoying to work with; for instance, it took me a long time to figure out that <i>ticket.query()</i> results are (a) sorted by whatever default sort is set up in Trac, which appears to be priority, and (b) limited by the Trac web page&#39;s &quot;100 results per page&quot; setting.  This means that there&#39;s no foolproof way to figure out exactly how many results there are in the DB except by trial and error (&quot;max=100; Fetch maxresults; did I get exactly max results?  If yes, max*=2, and repeat&quot;).  I have to admit, the plugin doesn&#39;t implement the aforementioned algorithm.  I just set the max to 1,000,000 results.  If you have more than 1,000,000 tickets, then you&#39;re probably going to need something more sophisticated than this little hack.  </li>

</ul>Right now, it accomplishes what I want it to.  However, it has made me realize that if I really want to sync with Trac, I&#39;m basically going to have to dispense with the XMLRPC interface and go directly to SQL access, and if I can do that, well... it might be worth exploring another approach to offline, yet sync&#39;able, ticket management.</div>

<div><br></div><div>It was worth the effort; William has obviously either worked with plugin infrastructures before, or he&#39;s a plugin prodigy... the interface is extremely complete and easy to use, and it&#39;s taught me a lot about the domain. If you haven&#39;t played with plugin development, I recommend it as a study in good plugin architecture design.</div>
<div><br></div><div>Cheers,</div><div><br></div><div>--- SER</div>