<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wikidot="http://www.wikidot.com/rss-namespace">

	<channel>
		<title>Comments for page &quot;Finish your stuff&quot;</title>
		<link>http://250bpm.com/forum/t-1234043/finish-your-stuff</link>
		<description>Posts in the discussion thread &quot;Finish your stuff&quot;</description>
				<copyright></copyright>
		<lastBuildDate>Sat, 01 Aug 2015 21:46:46 +0000</lastBuildDate>
		
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2335328</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2335328</link>
				<description></description>
				<pubDate>Fri, 10 Jul 2015 05:17:38 +0000</pubDate>
				<wikidot:authorName>Martin Sustrik</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Split it into small components. Provide extensibility mechanisms. Build new components on the top of the old ones. The only valid reason for something to change is that it is an experiment, i.e. deliberately unstable.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2335262</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2335262</link>
				<description></description>
				<pubDate>Fri, 10 Jul 2015 02:14:24 +0000</pubDate>
				<wikidot:authorName>Stephen</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>How does this apply to applications? Should an editor like Atom be initially feature complete and never change? Or, how about a browser like Chrome? The only software I can think of that's truly done are those on mediums that inhibit future iterations. Especially, videogames and firmware.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2334151</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2334151</link>
				<description></description>
				<pubDate>Wed, 08 Jul 2015 15:06:57 +0000</pubDate>
				<wikidot:authorName>Lee</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>I state this differently when talking to customers, &quot;An app, tool, or library should do one thing and do it very well.&quot; If this is followed, the temptation to create one tool that does everything goes away. I've seen good apps and other products bloat up to un-usability for May reasons. One of those is to remain &quot;relevant to the marketplace.&quot;</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332875</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332875</link>
				<description></description>
				<pubDate>Tue, 07 Jul 2015 05:17:11 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>By building new and cool software on top of them?</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332745</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332745</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 22:33:15 +0000</pubDate>
				<wikidot:authorName>Hitesh</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>I agree with the notion that small focused, finished software is better than the alternative. However, how do you find out about it? Like it or not, the usage of software seems to follow communities and communities are built around things that people can discuss over time such as features, bugs, etc. You may have built the best code, but how are people going to discover it today, let alone 5 years from now if noone is talking about it? I sometimes wonder how many really good libraries have been forgotten on Sourceforge this way.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332408</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332408</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 15:09:19 +0000</pubDate>
				<wikidot:authorName>Martin Sustrik</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>slist is libmill-specific, but you have a point here: If your project depends on a project that is never finished, it itself won't be ever finished.</p> <p>The trick here is to pick the right dependencies, ones that don't change. POSIX, for example, is stable for a decade. So are most mainstream programming languages. Many core UNIX tools are as well.</p> <p>I think that it's mostly developers of the low-level infrastructure how should reflect on finishing stuff. If they don't everybody else is screwed.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332399</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332399</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 14:58:50 +0000</pubDate>
				<wikidot:authorName>Joachim Nilsson</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Good advise, just wish more people would take it! Cheers</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332381</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332381</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 14:33:08 +0000</pubDate>
				<wikidot:authorName>Jerome Covington</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Thanks for this. Made me think as well as look very honestly at my developer ethics.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332379</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332379</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 14:31:36 +0000</pubDate>
				<wikidot:authorName>Hugo</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Libmill code looks like Redis in the sense that is has no dependencies. How do you handle your improvements to, say, slist.c, which is probably used in all your C projects?</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332374</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332374</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 14:30:02 +0000</pubDate>
				<wikidot:authorName>Hugo</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Libmill repo looks like Redis! :)</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332363</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332363</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 14:17:39 +0000</pubDate>
				<wikidot:authorName>Martin Sustrik</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>That's the very point. You don't modify original project beyond recognotion. You just start a new project.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332305</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332305</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 13:17:08 +0000</pubDate>
				<wikidot:authorName>Karel</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>A software project is 'done' when the last end user is in his grave. I don't agree with the 'grep' example. It may be very stable (last commit on gnu-grep is from september 2014), but there are projects which aim to make a better grep: ack-grep and ag (the silver searcher)</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332270</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332270</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 12:19:09 +0000</pubDate>
				<wikidot:authorName>Martin Sustrik</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Code generation. Any case that doesn't yet require a full blown compiler, but is already too hard to maintain by hand.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332262</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332262</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 12:09:05 +0000</pubDate>
				<wikidot:authorName>brijesh</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>greetings from india,<br /> good advice man<br /> rgds</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332237</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332237</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 11:27:57 +0000</pubDate>
				<wikidot:authorName>krist</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>ill give you two*. one is a &quot;security&quot; app for taking photos from the isight camera whenever your laptop is woken up. the other is an app for reading twitter feeds from the speaker.<br /> both are cocoa apps that was supposed to help me transition to being an ios developer.<br /> then lion and mountain lion happened and i realized it was impossible for me to keep on supporting the software. so i abandoned it. guess what, instead of becoming an ios dev i became a ruby dev instead.</p> <p>there really is no point to this story other an just go where the current takes you. :)<br /> <a href="http://www.macupdate.com/developers/profile/7341" target="_blank">http://www.macupdate.com/developers/profile/7341</a></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332235</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332235</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 11:27:15 +0000</pubDate>
				<wikidot:authorName>Ashish</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Umm&#8230;Ribosome use case?</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2317253</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2317253</link>
				<description></description>
				<pubDate>Sun, 14 Jun 2015 18:36:27 +0000</pubDate>
				<wikidot:authorName>pieterh</wikidot:authorName>				<wikidot:authorUserId>99</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>It would be helpful if you explained why this is such an essential principle. &quot;Finished&quot; as compared to &quot;always working&quot; or &quot;maintained&quot; or &quot;living&quot;, which seem much more useful than a simple &quot;finished&quot;, which seems to include a suspicious quantity of &quot;abandoned&quot;.</p> <p>Anyhow, finished projects are not rare in the real world. I've done lots of these: <a href="http://legacy.imatix.com/html/libero/">Libero</a>, <a href="https://github.com/imatix/gsl">GSL</a>, SFL, SMT, ASL, PAL, OpenAMQ, even <a href="http://www.xitami.com/">Xitami</a>. There's no magic. You make the tool, document it fully, take it through maturity, and then stop changing it.</p> <p>There are many, many finished projects out there. When they change it's for tiny, or environmental reasons, unless you consider &quot;unmaintained&quot; to be an essential property of finished. Even a carpenter will repair tables and chairs.</p> <p>Indeed, I'd expect that the bulk of projects running on a typical Linux are &quot;finished&quot;, though I hope as user that they are not abandoned.</p> <p>libzmq is also finished, and it doesn't send email (as you know well). ZeroMQ is a community, not a project, and as such I don't think &quot;finished&quot; can or should apply. The community mostly invests outside the core library, as it should.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2316929</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2316929</link>
				<description></description>
				<pubDate>Sun, 14 Jun 2015 08:19:15 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Good luck! The more finished software out there the better. Both for using it and as an example for the others.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2316104</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2316104</link>
				<description></description>
				<pubDate>Fri, 12 Jun 2015 22:07:34 +0000</pubDate>
				<wikidot:authorName>Timj</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Thanks for this Martin, always love your writeups!<br /> I ran into this same problem over the years, several times.<br /> I've also spent way too much time on compatibility layers that have largely become obsolete by languages and compilers advancing over the years.<br /> As a consequence I'm working on aggressively downsizing my projects <a href="http://rapicorn.org">Rapicorn</a> and <a href="http://beast.testbit.eu">Beast</a> now and have a few very clear use cases that should be well covered.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2315879</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2315879</link>
				<description></description>
				<pubDate>Fri, 12 Jun 2015 14:09:40 +0000</pubDate>
				<wikidot:authorName>Hugo</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Good advices!</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2314711</guid>
				<title>(no title)</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2314711</link>
				<description></description>
				<pubDate>Wed, 10 Jun 2015 19:03:37 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>1. compatibility library, e.g. apl, libuv<br /> 2. coroutine library, e.g. libtask, libmill<br /> 3. the core: messaging protocols</p> <p>It may even make sense to implement individual messaging protocols as separate components.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2314439</guid>
				<title>Congratulations.....</title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2314439</link>
				<description></description>
				<pubDate>Wed, 10 Jun 2015 10:24:31 +0000</pubDate>
				<wikidot:authorName>crocket</wikidot:authorName>				<wikidot:authorUserId>1794068</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>How would you split nanomsg, then?</p> 
				 	]]>
				</content:encoded>							</item>
				</channel>
</rss>