<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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>Mudlet Makers</title>
	<atom:link href="http://make.mudlet.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://make.mudlet.org</link>
	<description>The website for the Mudlet Makers</description>
	<pubDate>Fri, 15 Oct 2010 02:15:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mudlet Crucible &#8212; Tools?</title>
		<link>http://make.mudlet.org/2010/01/mudlet-crucible-tools/</link>
		<comments>http://make.mudlet.org/2010/01/mudlet-crucible-tools/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 03:26:24 +0000</pubDate>
		<dc:creator>Ixokai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[crucible]]></category>

		<guid isPermaLink="false">http://make.mudlet.org/?p=103</guid>
		<description><![CDATA[
The Problem (or, why bother?)
As we all know, Mudlet stores all of its profile information in a single XML file. When we distribute a &#8217;system&#8217; or package, we are distributing that same XML file &#8212; ideally, without a HostPackage and with only the code and settings that we want in it  
The Crucible project [...]]]></description>
			<content:encoded><![CDATA[<p><br class="spacer_" /></p>
<h1>The Problem (or, why bother?)</h1>
<p>As we all know, Mudlet stores all of its profile information in a single XML file. When we distribute a &#8217;system&#8217; or package, we are distributing that same XML file &#8212; ideally, without a HostPackage and with only the code and settings that we want in it <img src='http://make.mudlet.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The Crucible project is meant to be a team-effort though, and just how to enable collaborative editing of this file is something that&#8217;s bothered me. Since some (many, most) of us aren&#8217;t going to be actually editing the file -as- XML, but instead within Mudlet, there has to be a somewhat painful series of importing/exporting and sending this file around, integrating changes and such, and all of that actually seems like it would ultimately take quite a bit of time and effort.</p>
<p>One way to simplify it would be to only send diff&#8217;s between members, and while that would work, I&#8217;m not really sure I like it as a solution. Because there&#8217;s other &#8220;problems&#8221; that the single-file nature of a profile imposes for distribution and packaging, and I think a unified approach to all of these problems in terms of a set of tools, might be a better answer.</p>
<h2>Where would the tools live?</h2>
<p>The tools are not meant to be integrated into Mudlet directly, nor things that 99% of the people would even care about. Sure, maybe one day, some or most of the functionality might get integrated&#8211; but for now, Heiko has better things to do, I think. The tools will all be written in Python, because honestly, I can get it done faster in Python and make it cleaner that way, and let us get to work. If someone wants to port them to Lua, they&#8217;re free to do so&#8211; as with all Crucible code, they&#8217;ll be released under the MIT license.</p>
<p>The Crucible project itself is hosted on Launchpad, and the tools will be as well, as simply a separate branch that anyone is free to download and use.</p>
<h1>The tools!</h1>
<p><br class="spacer_" /></p>
<h3>crucible-integrate</h3>
<p>The integrate tool is sort of the inverse of my mudlet-release.py script I wrote previously: given an XML file, a profile name, it essentially imports the given file into the profile. But it does so smartly: if any given item already exists in the profile, its replaced instead of having a new one imported.</p>
<p>The benefit of this over a normal import is primarily that it updates instead of duplicates, which is important when working with other people a lot. However, care should be made that any changes you&#8217;ve made recently have been committed &#8212; it can&#8217;t be an intelligent differ.</p>
<h3>crucible-split, crucible-join</h3>
<p>The foundation of the system of tools are crucibile-split and crucible-join. Split opens a profile XML (either the most current one in a Mudlet named profile, or a file you specify), and goes over &#8212; and explodes it into a whole bunch of files in the filesystem, with groups creating subdirectories.</p>
<p>Now, why you ask? Two reasons. One, its more useful in storing in source control once the system gets bigger&#8230; I don&#8217;t have to analyze a diff to figure out you&#8217;re modifying the autosipper, I can see you&#8217;re editing the autosipper.xml file. Two, the ability to do rule-based &#8216;joins&#8217; to build up a resulting package are very, very powerful.</p>
<p>The opposite works as well: crucible-join will go over the source XML&#8217;s and reconstitute a complete package, which you can then import manually or use crucible-integrate to basically copy all of the items into your current profile.</p>
<p>Now, I do not expect people to -work- on these &#8220;source&#8221; xml files. In fact, it&#8217;d surprise me very much if anyone did. The basic workflow is thus:</p>
<ol>
<li>So you want to start working on some scripting, right? First you do a &#8216;bzr pull&#8217; to get the latest sources.</li>
<li>Next, you run &#8216;crucible-join&#8217; with the appropriate option(s), and it goes out and constructs a package of the latest stuff from everyone.</li>
<li>You either import it, or better, you run &#8216;crucible-integrate&#8217;</li>
<li>You launch up Mudlet, and get to work!</li>
<li>Once done, you save your profile and exit Mudlet&#8211; or just leave it open, whatever.</li>
<li>You run crucible-split, and all your changes are written out in source form&#8211; and you commit. Done!</li>
</ol>
<p>This may seem a bit complicated, but I think it will make the ultimate workflow much easier&#8211; and we can build upon it. There&#8217;s several additional tools I can imagine building on this basis to make things nice and easy.</p>
<h3>crucible-build</h3>
<p>Speaking of building upon it <img src='http://make.mudlet.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> There&#8217;s a lot of things I plan on doing in terms of Crucible, but not all of it is relevant to all MUD&#8217;s. For example, there has to be a different plugin for every MUD just about, even though a lot have common information. So we might have a Lusternia prompt, an Achaea prompt, an Aardwolf prompt, and so on and so forth.</p>
<p>Although the Crucible queue system is actually universal and applicable to anything that&#8217;s balance-like, the exact strings may vary from MUD to MUD that you should track for when you recover. Perhaps someone may want an auto-sipper from Crucible, or perhaps they may want it from someone else. Maybe there&#8217;s some other feature which may be not always desirable.</p>
<p>The &#8217;source&#8217; storage form makes it very easy for us to set up a series of rules to build a package which has a custom set of modules included in the final package. The crucible-build command in essence is an automated wrapper around crucible-join which can build out several different flavors of Crucible which we can then all upload. &#8216;Crucible for Lusternia&#8217;, &#8216;Crucible for Achaea&#8217;, etc.</p>
<p>The other option to that would be to use what is in essence a required plug-in system&#8230;everyone must install Crucible Base, then a module for their particular MUD. I&#8217;d rather make it easier for users though, and include everything together at once. Initially, the build program would have to be run by a person then all the files uploaded, but I see no reason why I can&#8217;t turn it into a web-app which dynamically generates a Crucible with whatever options a certain person wants, or at least an option to -build which uploads everything automatically when run.</p>
<p>Thoughts?</p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://make.mudlet.org/2010/01/mudlet-crucible-tools/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Merged bzr branches</title>
		<link>http://make.mudlet.org/2009/01/merged-bzr-branches/</link>
		<comments>http://make.mudlet.org/2009/01/merged-bzr-branches/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 15:08:02 +0000</pubDate>
		<dc:creator>Vadi</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://make.mudlet.org/?p=40</guid>
		<description><![CDATA[I&#8217;ve merged the branch with Bruno&#8217;s patches into the one with the improved dialog. All future (and temporary &#8217;till svn is err available again) work should be done in that branch.
(the diff of the merge can be found here, btw.)
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve merged the branch with <a href="https://code.launchpad.net/~mudlet-makers/mudlet/brunos-patches" target="_blank">Bruno&#8217;s patches</a> into the one with the <a href="https://code.launchpad.net/~mudlet-makers/mudlet/connection-dialog" target="_blank">improved dialog</a>. All future (and temporary &#8217;till svn is err available again) work should be done in that branch.</p>
<p style="text-align: left;">(the diff of the merge can be found <a href="http://bazaar.launchpad.net/~mudlet-makers/mudlet/connection-dialog/revision/53" target="_blank">here</a>, btw.)<a href="http://make.mudlet.org/wp-content/uploads/2009/01/screenshot_100263.png"><img class="size-full wp-image-43 aligncenter" title="How the merged branches look like" src="http://make.mudlet.org/wp-content/uploads/2009/01/screenshot_100263.png" alt="How the merged branches look like" width="250" height="162" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://make.mudlet.org/2009/01/merged-bzr-branches/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

