<?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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Open Project Guide &#187; early-phase</title>
	<atom:link href="http://www.openprojectguide.org/tag/early-phase/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.openprojectguide.org</link>
	<description>For and about open source projects</description>
	<lastBuildDate>Wed, 29 Sep 2010 05:56:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Spread the word &#8211; communicating with your users Part 1</title>
		<link>http://www.openprojectguide.org/2010/03/spread-the-word-communicating-with-your-users-part-1/</link>
		<comments>http://www.openprojectguide.org/2010/03/spread-the-word-communicating-with-your-users-part-1/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 18:47:21 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Talk posts]]></category>
		<category><![CDATA[early-phase]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=130</guid>
		<description><![CDATA[For us developers, it&#8217;s easy to write the code, but that is not all a good project needs to do. You have to provide information on your project, the releases, the schedules and how to use your software. That&#8217;s a bunch of work, how can you fulfill the user expectations? The website, a first step [...]]]></description>
			<content:encoded><![CDATA[<p>For us developers, it&#8217;s easy to write the code, but that is not all a good project needs to do. You have to provide information on your project, the releases, the schedules and how to use your software. That&#8217;s a bunch of work, how can you fulfill the user expectations?<br />
<span id="more-130"></span><br />
<strong>The website, a first step</strong></p>
<p>You are writing your software and everything works well. Now you want to release the first beta version to the public. Where should you put the files online? Where would people read about your project?</p>
<p>As mentioned in the article &#8220;<a href="http://www.openprojectguide.org/2009/12/the-project-needs-a-home/">The project needs a home &#8211; where to host your project</a>&#8221; you might want to host everything on sourceforge, github or whatever hosting site you select. They often provide the option to put various information about your project online and the&#160;possibility&#160;to publish news. That&#8217;s a good start, but don&#8217;t forget to keep the information up to date. Nothing is more confusing than wrong information about the project, features, links to other sources of information regarding the project. That point is valid for self hosted websites as well as external hosting providers. A solution to ease the pain of maintaining the information are wikis. You can set them to read-only for anonymous readers, so only your team can change the pages.</p>
<p>When you are hosting the website yourself, please be aware that your server is constantly a target for hackers and when you host your source code there, it&#8217;s an even a more attractive target. Keep the software on the server up to date, be selective who gets access to the server itself. Keep more than one backup of the server to be able to restore everything in case something bad happened.</p>
<p><strong>Documentation, the voluntary exercise?</strong></p>
<p>People who would like to use your software will most likely need some form of guidance. Provide as much documentation as possible. Information on deployment/installation, usage of the software, developer info (if you are providing an API), etc.</p>
<p>But with a lot of documentation you&#8217;ll get a lot of responsibility. Don&#8217;t let the documentation be outdated or at least state somewhere where everyone can see it, which version you are referring to. Sometimes you are lucky and users from the community offer to help you with the user documentation. This happens frequently, but not on all projects! Take that chance and add these users to your team. They need to be informed about the current developments, so don&#8217;t just give them access to the wiki and let them do their work. There is a high chance that this won&#8217;t work out in the long run. They are valuable members of your team, so treat them as such.</p>
<p><strong>Which additional information might be valuable for the users?</strong></p>
<p>So you have a location to put information online (wiki, blog, cms,&#8230;), what should you put there?&#160;The answer is again pretty simple: as much as possible!</p>
<p>As a user it might be valuable to read how you can join the team or in which areas you &#160;desperately need help. Not everyone is brave enough and asks you directly. many people are shy and don&#8217;t want to bother the team, because they may have something better to do or the user just fears to be ignored. Be very clear in your communication and people will listen.</p>
<p>Another very neat kind of documentation are screenshots, webcasts and online demos. It doesn&#8217;t matter if your software can be installed in seconds on the users computer. When you provide screenshots, people will more often give your software a try. In the last 2-4 years projects started to put webcasts about their software online. This has several advantages, you have some kind of &#8220;moving screenshot&#8221;, so people get a quick impression how your software feels and you have nice looking &#8220;interactive&#8221; documentation, if you do them in right way. Give it a try!</p>
<p>When you have a team of several developers and the projects progresses, it may happen that no one has time left to write some nice articles about the progress the team has made. The developers know that there is progress in the project, but users normally don&#8217;t follow SVN commit mails, so they may just think that the silence is the sign of a dying project. Maybe someone in the community is willing to perform these actions on a regular basis.</p>
<p><strong>Single point of failure</strong></p>
<p>So, now you have your domains, maybe even a dedicated webserver and a paypal account for donations. Imagine now, the people that opened the accounts want to leave the project. You have a lot of work transferring the accounts, domains, &#8230; Sometimes people don&#8217;t go, they are kicked out of the project, that&#8217;s even more bad if they had a central role in the project before. You can imagine that getting the domain from a kicked project member might be tricky.</p>
<p>When your project reaches a certain size you should consider to start for example a non-profit foundation (&#8220;gemeinn&#252;tziger Verein&#8221; in Germany) that holds the rights on the accounts, domains etc. This way you are safe in case someone leaves the project and you might be able to get some funding from companies that like your project. But we&#8217;ll come back to that topic in another blog post.</p>
<p><strong>Conclusion</strong></p>
<p>So, organizing the (one-way)&#160;communication with your users can be done by providing a homepage with the necessary information. Put as much information up there as you can handle. It will be worth it, because many users just go to the next site when the project doesn&#8217;t provide the answers they are looking for. Also be careful to distribute the ownership of assets like server, domains, admin rights etc, so the project can continue when an important person is suddenly gone. In the next article we&#8217;ll have a look at two way communication with your users.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2010/03/spread-the-word-communicating-with-your-users-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Numbers are nothing but smoke and mirrors &#8211; selecting a version numbering scheme</title>
		<link>http://www.openprojectguide.org/2010/03/numbers-are-nothing-but-smoke-and-mirrors/</link>
		<comments>http://www.openprojectguide.org/2010/03/numbers-are-nothing-but-smoke-and-mirrors/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 13:20:02 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Talk posts]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[early-phase]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[naming]]></category>
		<category><![CDATA[release-planning]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=113</guid>
		<description><![CDATA[Choosing the right scheme for the version numbers is not as easy as it sounds. There are many implications that you may not think of in the first place. Selecting a version scheme without thinking is like selecting a name without thinking and you don&#8217;t wouldn&#8217;t do that, would you? There are features missing, so [...]]]></description>
			<content:encoded><![CDATA[<p>Choosing the right scheme for the version numbers is not as easy as it sounds. There are many implications that you may not think of in the first place. Selecting a version scheme without thinking is like selecting a name without thinking and you don&#8217;t wouldn&#8217;t do that, would you?</p>
<p><span id="more-113"></span></p>
<p><strong>There are features missing, so we start at 0.0.1-alpha1 &#8230;</strong></p>
<p>There are thousands of projects, which have a version number that starts with a zero. It was common to do so many years ago and strangely enough, there are still projects that do this today. During the &#8220;Web 2.0&#8243; hype it was even en vogue to put &#8220;beta&#8221; stickers in the logo, so the &#8220;unfinishedness&#8221;  was promoted to a positive signal that expressed that the project was dynamic and evolving. While that point of view is somewhat understandable, it&#8217;s somehow &#8220;dangerous&#8221; too. People often don&#8217;t take projects with a zero in front not seriously. Many projects even classify their status as alpha or beta for many many years. Nevertheless, they release new versions to the public from time to time. How can this be, if the project is not ready for use?</p>
<p>A common misconception is that a project that releases something with a 1.0 is finished or has completed the vision for the project. Another &#8220;advantage&#8221; of the leading zero is that you can react to critics that the project itself is not finished and the complains will be resolved when 1.0 will be released. But are there critics that complain in this way and if there are, do they really buy the argument that this is due to the beta status?</p>
<p>I think not! When you are so satisfied that you want to release a stable version to the public (I exclude &#8220;real&#8221; beta versions and release candidates here), then you should consider to start with a 1.0 when you use this kind of version number scheme. It&#8217;s not a problem if a 1.0 release is not feature complete, that is what future releases are for. Just use 1.0 for the first release where your software does something useful (otherwise it wouldn&#8217;t make much sense to release, doesn&#8217;t it?) and then go up from here in your self defined steps. The common scheme is #major.#minor.#patch, where #patch is increased by (security) bugfix releases, #minor is increased when smaller changes have been made that are usually compatible with the prior releases with for example saved files, interfaces, &#8230; and #major is increased by big changes that the team considers as big step ahead. New major releases are also a good point in time for breaking compatibility or getting rid of deprecated stuff.</p>
<p>Using a reasonable version scheme with appropriate numbers, people will take the project more serious, business users won&#8217;t get a headache when they have to convince their boss that the 0.0.1alpha3 version of your project is more stable and reliably than the version number suggests. Don&#8217;t get me wrong, a version number does not make the your project more reliable, stable or whatever, it just changed the perception of the project and provides a more professional &#8220;look&#8221;.</p>
<p><strong>Alternative schemes</strong></p>
<p>Another thing that has established at least in the last decade is that major or sometimes even minor releases get code names that make them memorable. Ubuntu for example uses alliterations like Karmic Koala, Dapper Drake etc. to name the﻿ir releases (major + minor according to the scheme above). KDE has code names for their beta series for a release. This makes it a lot easier in communication with your users and within the team to speak of the karmic release than release 10.04 or the 1.2.x series. Some projects follow a strict pattern in choosing their release names, for example Debian uses toy story character names, if you need plenty names, you might want to have a look at names appearing in the lord of the rings series. ;-) Another reason for assigning names to releases is as reminder of project members that died, this has happened to the postnuke project and the next series was named the &#8220;Adam Baum&#8221; (Greg Allens pseudonym) release. He lost his life in motorcycle accident.</p>
<p>Another thing that might be worth mentioning is that there are more schemes than the major.minor.patch scheme. The decision whether a new release is a next major release or just a minor or maybe even if the minor version should be raised by two or more may take quite a lot of time and some people are really serious in this area and escalate this decision to a full blown conflict. You might also just use the year and the month as version number or year and a running number for the releases of the year, example ubuntu like #year.#month (9.10, 10.04, &#8230;) or #year.#counter (10.01, 10.02, 10.03, &#8230;). This has the advantage or disadvantage (depending on your point of view) that people see in a glance how old th﻿e release is, so this may be only usable when you have a more or less steady release schedule with at least one release per year. I like it for projects with a  high visibility, small tools won&#8217;t benefit from it, but it&#8217;s worth considering, when you plan your release strategy and decide the version number scheme.</p>
<p>One last thing about creative version number schemes&#8230;<br />
Don&#8217;t use only code names or start decreasing version numbers without a reason or you will bring projects like the linux distributions into trouble, because their package managers depend on version numbers that are only increased. Otherwise their update functions will fail. This also is a problem when you&#8217;re changing your version number scheme after a while, so don&#8217;t forget your distributors!</p>
<p><strong>Conclusion</strong></p>
<p>Version numbers are not an easy topic, implications on the perception of the project are not always as easy to grasp as we&#8217;d like to. So spend at least little time when the project starts to release stable versions. 0.x version numbers and beta stickers are out. People like reliable software that takes itself and it&#8217;s users serious.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2010/03/numbers-are-nothing-but-smoke-and-mirrors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release early, release often &#8211; plan your release cycle well</title>
		<link>http://www.openprojectguide.org/2010/03/release-early-release-often/</link>
		<comments>http://www.openprojectguide.org/2010/03/release-early-release-often/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 11:03:21 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Talk posts]]></category>
		<category><![CDATA[early-phase]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[release-planning]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=94</guid>
		<description><![CDATA[As soon as you have a decent user base, people will start to ask questions about your release cycle and/or when you will release next with which features, bugfixes etc.There are certain things that you might want to consider when you&#8217;re planning your releases. Finding your perfect release cycle Most projects have a &#8220;on demand&#8221; [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">As soon as you have a decent user base, people will start to ask questions about your release cycle and/or when you will release next with which features, bugfixes etc.There are certain things that you might want to consider when you&#8217;re planning your releases.</div>
<div><span id="more-94"></span></div>
<p><strong>Finding your perfect release cycle</strong></p>
<p>Most projects have a &#8220;on demand&#8221; release plan. When security problems occur or a stable application has been build, then a release is quickly announced and put online. This is ok as long as it is a smaller project. Especially when your project is used in a business environment, people will ask for plans and schedules so they can plan their updates. Another problem with irregular release schedules is that when the last release has been a long time ago, then people might get impatient and start to use your daily development exports or use a checkout from the version control system, that you are using (I hope). The problem is that the impatient users will lead to more and more support requests, because they are using a version that is not released yet.</p>
<p>So what to do? Communicate your plans early. People like to be informed. When your plan for the next release does not take the expected 6 months and after 2 years you&#8217;re not ready, then you should consider to change your plans and try to do intermediate releases. When you are planning big changes, then it&#8217;s a good idea to check if you can split your changes into smaller pieces to keep the time between releases smaller.</p>
<p>When you have enough time to dedicate for the project or you have a group of people that helps you to have a more or less constant stream of changes then you might consider to establish a regular release cycle like for example gnome or ubuntu (they release every 6 months). Sometimes it&#8217;s easier to determine the changes that fit in a release cycle than to determine how long a set of changes will take. The advantage is that you might even skip some changes when time is running short.</p>
<p><strong>Presumably dead projects</strong></p>
<p>As mentioned above, sometimes changes take longer than expected. The planned release takes a year or two longer and you&#8217;ve pulished none or just a few intermediate bugfix of feature releases. The effect is that your userbase might shrink, people start complaining, maybe even start a fork to return to a steady release cycles with more releases per year. There is also an effect on the team. Maybe not your whole team is involved in the blocking task(-s) that lead to the delayed release. They want to continue, but their tasks might not be ready when the current blockers are finished, so they are asked to wait to not destabilize the code base even more. That leads to frustration even in your team and may damage the team on the long run.</p>
<p><strong>How to deal with complex changes</strong></p>
<p>So there are changes that are small and medium sized and of course the big tasks that take virtually ages. How should you deal with that? No matter how good you plan there were always tasks that have a high probability to break your release plans. To solve this you can use techniques that are commonly used in &#8220;commercial&#8221; software development: feature branches!</p>
<p>Every version control system that I know of has the ability to copy a repository or a part of it (this is called branching) and there is another functionality called merging where you can merge the changes of one branch in the other branch and solve any conflicts where the same code lines have been changed. I don&#8217;t want to go too much into detail here, because it depends on the software you are using, but when you use this for any non trivial changes in your project, then it&#8217;s not a big deal when you are used to it.</p>
<p>So, how does this work? You have a main development branch which is usually called &#8220;trunk&#8221;. You plan for example to refactor a part of the system, then you branch the trunk and work on that branch on your refactoring. The rest of the team can do for example smaller changes or bugfixes on the trunk  or even other feature branches. When you like you can pull changes from the trunk in your branch if you feel that this is necessary. When you&#8217;re done, then you can merge your branch back into the trunk and your project has a shiny new feature or a cleaner codebase. The downside of this is that, when you have changed parts of the code and in the trunk people changed the same code pieces, then the version control system will complain and mark the file as conflicting. These conflicts have to be resolved manually. This happens in my experience not very often and when it happens it&#8217;s trivial to merge the changes and get the code running again. The chance of conflicts grows over time, when work is done in the trunk and the branch, but by pulling updates from the trunk in the branch you can minimize the chance of conflicts.</p>
<p>People often complain that this is too complex, they don&#8217;t know hot to do the branching and merging and they don&#8217;t believe in this anyway. Where does this come from? I think the answer is simple. When you don&#8217;t do branches, then you&#8217;re not &#8220;wasting&#8221; your time at the start by performing the branches and later when the merging occurs. But they don&#8217;t see the big picture. Development gets even easier when you do when you do this. You get used to branching and merging pretty soon and it&#8217;s not something you have to think a lot about. Everyone can develop their features without interfering too much with the rest of the team and when a feature is not ready when the planned release date approaches you can simply move it to the next release. So the whole team benefits from it, don&#8217;t get intimidated by some devs that are complaining. They&#8217;ll get use to it. ;-)</p>
<p><strong>Condclusion</strong></p>
<p>So, what have we learned here? Release plans are only as good as the techniques, you use to stick to them and purely code driven release schedules tend to get blown away by too complex tasks that have been underestimated. Use things like branching and/or discipline to establish a regular release schedule or at least be predictable and communicate your plans to give your users a chance to react, plan and look forward to your releases.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2010/03/release-early-release-often/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The emperor wants to see you &#8211; being a good project leader</title>
		<link>http://www.openprojectguide.org/2010/01/the-emperor-wants-to-see-you/</link>
		<comments>http://www.openprojectguide.org/2010/01/the-emperor-wants-to-see-you/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 21:54:59 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Talk posts]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[early-phase]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[social-skills]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=72</guid>
		<description><![CDATA[Sometimes people start to behave weird when they are in control or able to influence others. They act rude, or for example are mean to their users or project members&#8230; So, take a second and reflect if you are doing similar things and hurting your project and reputation. Disclaimer: It&#8217;s sad, but there are many [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes people start to behave weird when they are in control or able to influence others. They act rude, or for example are mean to their users or project members&#8230; So, take a second and reflect if you are doing similar things and hurting your project and reputation.</p>
<p><span id="more-72"></span></p>
<p>Disclaimer: It&#8217;s sad, but there are many examples of bad leadership in the open source sphere. I normally don&#8217;t want to do name calling, but I think that  learning by example is a good approach in this case. If you feel insulted by one of the examples, feel free to drop me a line and I&#8217;ll rewrite or delete the example.</p>
<p><strong>Are you a ruler or a leader?</strong></p>
<p>You have started a project and it&#8217;s your baby. You have a few people helping in the project and they trust your decisions. As the project progresses, conflicting interests appear. Maybe it&#8217;s because of the main direction of the project or just features someone wanted to implement that don&#8217;t fit in your agenda. This happens a lot. When this has happened before and their ideas have not been appreciated, then often the people step back and don&#8217;t do the stuff they&#8217;d like to accomplish.</p>
<p>This may be the result of a general pattern that has established in your project. People don&#8217;t step up to their opinions because they&#8217;re used that they can&#8217;t get through with it anyway. At least they think that this happen. This is a dangerous state for a project. People will be drawn away from the project in the long run or maybe a revolt will form and the project is forked by the disappointed members.<br />
So what can you do to to prevent your project from going down that road? It&#8217;s as simple as it&#8217;s important: treat your project members as equals! Of course a project needs someone who makes sure that the project has a clear vision, but try to keep a balance between the vision and the reality. Maybe the vision just needs to be updated to reflect the vision of the whole team. The difference between a ruler and a leader is that the leader is open to eliminate or postpone some of his wishes in favor of wishes of the team or team members. This creates a more open environment which enables the project to grow and prosper.<br />
Long story short: <em>Try to keep an open mind for input from your team and your users. Periodically reflect if you are really listening to them to make sure that a bad atmosphere not slowly sneaks into your project.</em></p>
<p><strong>Your behavior influences the reputation of your projects</strong></p>
<p>Even if you are nice and understanding to your team members (or you don&#8217;t have any yet), be aware that your behavior in forums, mailing lists etc. is visible to others. It&#8217;s sad, but there are many people out there who don&#8217;t think about the effects that their behavior has on their online reputation. Some people even don&#8217;t care and misbehave in publicly visible places.</p>
<p>There are many prominent people with &#8211; let&#8217;s put it that way &#8211; questionable social skills. Starting with more or less rude behavior of well known &#8220;open source gurus&#8221; like Linux Torvalds, whose rants are widely known. But there are also people like the author of one of the best cd/dvd burning programs for linux/solaris/&#8230; who is known for his rude behavior. Linus has earned enough reputation that his behavior has no bad effect on his projects like git or the linux kernel and his projects have many people who join them or want to join them. On the other hand, our good friend with the cd/dvd burning application is more known for his rudeness and you won&#8217;t find many people that really want to work with him.<br />
In short: <em>Be nice or your project and your &#8220;karma&#8221; may/will suffer!</em></p>
<p><strong>Conclusion</strong></p>
<p>There are many things you can do wrong when you&#8217;re communicating with your project members or in public channels. Keep in mind it&#8217;s a good approach to treat others like you want to be treated yourself. This often helps to keep your communication straight and honest. I like the concept of karma that Tobias Schlitt mentioned in his blog post. And you don&#8217;t want to mess with karma, so be nice! ;-)</p>
<p><strong>References</strong></p>
<ul>
<li><a href="http://greg.chiaraquartet.net/archives/171-10-golden-rules-for-running-an-open-source-project.html" target="_blank">http://greg.chiaraquartet.net/archives/171-10-golden-rules-for-running-an-open-source-project.html</a></li>
<li><a href="http://schlitt.info/opensource/blog/0541_10_golden_rules_for_starting_with_open_source.html" target="_self">http://schlitt.info/opensource/blog/0541_10_golden_rules_for_starting_with_open_source.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2010/01/the-emperor-wants-to-see-you/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Divide and conquer &#8211; don&#8217;t do everything on your own</title>
		<link>http://www.openprojectguide.org/2009/12/divide-and-conquer/</link>
		<comments>http://www.openprojectguide.org/2009/12/divide-and-conquer/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 13:18:46 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Talk posts]]></category>
		<category><![CDATA[early-phase]]></category>
		<category><![CDATA[external-help]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[social-skills]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=56</guid>
		<description><![CDATA[Your project published a few releases and a small developer team is forming. You&#8217;re still doing the communication and web site maintenance. Time for real development is becoming smaller and smaller. Are you doing it right? Delegate! When you have started the project alone and created the first versions on your own, then you might [...]]]></description>
			<content:encoded><![CDATA[<p>Your project published a few releases and a small developer team is forming. You&#8217;re still doing the communication and web site maintenance. Time for real development is becoming smaller and smaller. Are you doing it right?<span id="more-56"></span><strong></strong></p>
<p><strong>Delegate!</strong></p>
<p>When you have started the project alone and created the first versions on your own, then you might think of it as your baby. It&#8217;s not easy to give up responsibility for certain areas. But the amount of administrative work will grow with the project. Try to find areas that you can delegate like Website maintenance, forum moderation or things like that. After a while when you know the other developers better, then you&#8217;ll find it easier to assign other tasks to them too. Just practice a little bit. ;-) To summarize this:  <em>Try to delegate even important tasks to capable trustworthy members to free up time for important things.</em></p>
<p><strong>&#8220;Activate&#8221; non-programmers</strong></p>
<p>After a while your project might form a small community of users. They often communicate via forums, mailinglists, IRC or something like that. Then you&#8217;ll have the chance to convince some of the users to help you, even if they are not programmers. Regular users that feel connected to the project, sometimes like to help as well. Try to leverage that enthusiasm and ask if they&#8217;d like to help. They may help you for example by:</p>
<ul>
<li>by doing official support in the forums/irc</li>
<li>help with improving the usability</li>
<li>helping with the Website &#8220;maintenance&#8221;</li>
<li>being the &#8220;community manager&#8221;</li>
<li>design for the homepage, the UI or a logo/&#8221;corporate design&#8221;</li>
<li>PR work/booth duties at conferences like LinuxTag, UbuntuCon, &#8230;</li>
<li>collect donations to fund the projects</li>
<li>&#8230;</li>
</ul>
<p>In short: <em>Don&#8217;t focus your search for help only on programmers. Every user may become a very useful member of your team.</em></p>
<p><strong>External developer resources</strong></p>
<p>Sometimes companies use your software and they need a certain feature or have other interest in your project. When you are lucky, they&#8217;ll assign one or more developers of their staff to your project (if you allow this) and they&#8217;ll work on it in their work time. Or the company pays members of your team to implement something they need. This is not uncommon, especially in projects like frameworks, EPR systems, shopping carts etc. Just be sure that the stuff they are demanding fits in your global plan. Don&#8217;t let pure economical reasons drive your project or it will soon be off the track! Other ways of getting help are sponsored events like the <a href="http://code.google.com/intl/de-DE/soc/">google Summer of Code</a>. You can apply with your project for certain programming tasks and when your project is chosen, then google will pay a student for a summer to perform that task. This has several advantages for your project. You will get a lot of visibility in the public which may result in more people using your software or joining your project. You will have to  select two mentors that will have the chance to fly to the US and be part of the mentors camp that google organizes before the whole thing starts. But be aware of the dates. When you are late, then you&#8217;ll have to wait for the next year. And don&#8217;t be disappointed when your project has not been selected. Just apply again next year. I&#8217;ll try to find a project that has participated before and interview them for a more comprehensive blog post. Long story short: <em>Paid development is a chance for every project to get a boost. Try to apply for the google SoC or try to find partners in the industry. Just be aware of the responsibility that the project is first, not the money!</em></p>
<p><strong>Conclusion</strong></p>
<p>So, there are many ways to find people that help you in your journey and don&#8217;t be afraid to let certain tasks go. You can&#8217;t do everything on your own and other people are eager to be part of the project. It&#8217;s important to find people that help you, if you want your project to live a long and healthy life. There are always people leaving and joining, so the bigger your team is the more people you have constantly working on it. Maybe with the google SoC or paid development you can attract even more team members with whom you can share the work and maybe even the important tasks. Try it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2009/12/divide-and-conquer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>So, you&#8217;re the new one &#8230; &#8211; integrating new people in your project</title>
		<link>http://www.openprojectguide.org/2009/12/so-youre-the-new-one/</link>
		<comments>http://www.openprojectguide.org/2009/12/so-youre-the-new-one/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 15:21:01 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Talk posts]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[early-phase]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[social-skills]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=45</guid>
		<description><![CDATA[This blog post deals with the mistakes and opportunities you might encounter when you&#8217;re trying to integrate new people in the project. The problems range from a too high entrance barrier to overly caring project leads that suffocate new members&#8230; So you attracted a new member&#8230; Especially when you&#8217;re team is small, then it&#8217;s a big [...]]]></description>
			<content:encoded><![CDATA[<p>This blog post deals with the mistakes and opportunities you might encounter when you&#8217;re trying to integrate new people in the project. The problems range from a too high entrance barrier to overly caring project leads that suffocate new members&#8230;</p>
<p><span id="more-45"></span></p>
<p><strong>So you attracted a new member&#8230;</strong></p>
<p>Especially when you&#8217;re team is small, then it&#8217;s a big deal when new people join it. You are eager to integrate them, but there are many things you can do wrong and drive them away from your project. It&#8217;s not an easy task if you are not used to it to get someone involved. And you always have to take care that you don&#8217;t ask too much of the new member or bore him to death. In short: <em>when you have a new member, try to keep him interested but protect him from &#8220;information overload&#8221;.</em></p>
<p><strong>&#8220;Here read this comprehensive guide&#8230;&#8221;</strong></p>
<p>There are projects like debian for example, that have a pretty rigid recruiting process. You have to prove worthy for a long period before you gain the rights to really participate. There are other projects out there that also follow this principle, which basically is based on mistrust on new developers. That is understandable for projects that are as big and popular as the debian project for example, but this approach has several disadvantages that you should keep in mind. Your project has the possibility to keep only the &#8220;best&#8221; developers and discard the ones you don&#8217;t like in the process before they can do harm. This sounds good in the first place, but you also discourage many good people from trying to get involved because they don&#8217;t like to be treated in this way. And even the people that survived the selection process may turn out as &#8220;malicious&#8221; in the long run. Long story short: <em>think about the negative implications before setting up a rigid process.</em></p>
<p><strong>&#8220;He joined and was never seen since&#8230; :-(&#8220;</strong></p>
<p>One thing that you&#8217;ll notice very soon is, that people are very excited about your project, do everything to join it and maybe even start some tasks and suddenly they keep a low profile. You&#8217;re trying to contact them and receive no answer on your mails, IM messages etc. Many people think that they have done something wrong and repelled the new member. But the truth is that this happens a lot. Sometimes the people will write back a few months later and apologize but most of the times they play dead after they realize that they should have contacted you because they are embarrassed. When something like this happens, think if you might have done something wrong, If you find nothing obvious, you can be pretty sure that it&#8217;s not your fault. Long story short: <em>people sometimes disappear because of personal reasons &#8211;  this is pretty normal, get over it.</em></p>
<p><strong>&#8220;OMG he killed our source code repository&#8230;&#8221;</strong></p>
<p>When you&#8217;re project is very small and new people join, then it&#8217;s not unlikely that you want to integrate them as soon as possible into the project. So you&#8217;re giving them administrator rights at sourceforge and the password to the webserver to keep them busy and give them the freedom to help in any way they like. This sounds silly if it&#8217;s written down in compressed form, but this happens and sometimes this has negative consequences. The new member might damage parts of the infrastructure either intentionally or by accident. This is not unlikely, because especially non-linux/-unix people have often problems with shell access, ftp, file permissions etc. In short:<em> Take care that only people you trust and who know what they are doing get unlimited access to the core infrastructure of your project!</em></p>
<p><strong>&#8220;He is so lazy and always asks dumb questions&#8230;&#8221;</strong></p>
<p>Some people expect that new members have from the start a complete understanding of the sourcecode and the underlying infrastructure, of course they also should know all the tools they need. If they don&#8217;t then it&#8217;s their duty to learn it before they ask dumb questions&#8230; Another variant of this behavioral pattern could be described as &#8220;fire and forget&#8221;. You introduce the new member and then he is on his own, without help and guidance. Sadly quite a few projects act like that and many new members get disappointed and leave the project soon. It doesn&#8217;t have to be this way and even when this is a spare time project, the &#8220;old wise members&#8221; should take some time and help the new members. Just because they don&#8217;t know everything yet doesn&#8217;t mean that they won&#8217;t be helpful members after they got properly introduced in the projects technologies and procedures. To summarize it: <em>there are no dumb questions, only dumb answers! Take your time with the newbies it&#8217;s worth it!</em></p>
<p><strong>&#8220;I do my very best to help him&#8230;&#8221;</strong></p>
<p>The direct opposite of the mistake above is that the project is too protective and too &#8220;kind&#8221;. The new member is bombarded with good advices, links and help offerings. This may as well drive people away. It looks desperate and may drive the new members crazy. Offering too much help introduces a feeling of pressure, even if it&#8217;s not meant this way. In short: <em>Don&#8217;t exaggerate with help offerings, try to balance between negligence and over caring.</em></p>
<p><strong>Setting up a process helps</strong></p>
<p>To avoid the problems I have mentioned above, you should think about introducing processes. This might sound boring and you don&#8217;t like it, because it reminds you on your work, but clear guidelines help new people to fit in the group and learn the processes that exist anyway, no matter if they are written down or not. Thinking about the processes helps to improve them. Consider for example check-in or code style rules. Every project needs some kind of common understanding in theses areas and new people need to learn these. Without written down rules, they have to do trial &amp; error which can be pretty frustrating. Even harder are social rules like who is responsible for what and who decides when there are conflicts. You should consider if it&#8217;s possible to assign a mentor to the new member, so the new one has one dedicated person to ask questions. But the mentor needs to be motivated and willing to help. Otherwise it will do more harm then help. Long story short: <em>By formalizing the internal rules and roles you make it a lot easier for new people to blend in.</em></p>
<p><strong>Knowing their motivation</strong></p>
<p>Everybody who joins a project expects something in return. Some people like to participate in publicly highly visible projects to get reputation in a field, others just like to code and practice their profession or hobby. Of course there are much more different aspects why someone joins a project, but as a project lead you should try to find out what the motivation is and help the members to get the most joy out of their involvement. You can do this by giving the right tasks to the right people, giving credit to the team or even assigning roles to people, so they can do what they like most.This way you can maintain a healthy project with satisfied members. As a summary: <em>Knowing the motivation of your fellow team members and acting to fit their needs will greatly benefit our project.</em></p>
<p><strong>Comprehension</strong></p>
<p>There are many ways to drive people away from your project, but there are also many ways to attract them if you do it right. Take your time to introduce new people, maybe select mentors that help the newbies in the first few months. Be clear what you expect from people and where you help them to shape their expectations and prevent them from being disappointed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2009/12/so-youre-the-new-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making common cause &#8211; it&#8217;s more fun to work in a team</title>
		<link>http://www.openprojectguide.org/2009/12/making-common-cause/</link>
		<comments>http://www.openprojectguide.org/2009/12/making-common-cause/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 13:11:58 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[early-phase]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[social-skills]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=39</guid>
		<description><![CDATA[This article deals with the fun aspect of building a project team. There are many things you can profit from when you participate in a project. I am going to write about a few of them&#8230; It&#8217;s more fun if you don&#8217;t do it alone As mentioned in the second blog post, open source software exists [...]]]></description>
			<content:encoded><![CDATA[<p>This article deals with the fun aspect of building a project team. There are many things you can profit from when you participate in a project. I am going to write about a few of them&#8230;</p>
<p><span id="more-39"></span><strong>It&#8217;s more fun if you don&#8217;t do it alone</strong></p>
<p>As mentioned in the <a href="http://www.openprojectguide.org/2009/12/not-invented-here-syndrome-–-start-or-join-a-project/" target="_blank">second blog post</a>, open source software exists because passionate people join in team and produce software. Working together is a great aspect of being in an open source team. If you have never worked in a small/medium sized team with nice people, then you&#8217;re missing a great opportunity. When you&#8217;re working in and with the team and you&#8217;re spending hours in mailing lists and chats, then you&#8217;ll have the chance to form friendships with your team mates. Team meetings are also a nice way of getting to know each other. I&#8217;ll write a separate article about this later. So please keep in mind: <em>Working alone is boring. Collaborating is fun.</em></p>
<p><strong>Training social skills</strong></p>
<p>Rumors exist that IT affine people are socially &#8220;not that well educated&#8221;. Participating in a project is your chance to change that, if you&#8217;re belonging to this group. ;-) When you&#8217;re in a team, sometimes conflicts happen. Especially when you&#8217;re the project lead then you&#8217;ll have the chance to exercise your conflict solving skills. Small teams are normally pretty easy to handle, but starting at medium sized teams you&#8217;ll see several kinds of internal conflicts or struggles, which are perfectly normal when a group of people comes together. There are always some people who don&#8217;t like each other or can&#8217;t integrate in the group. If you notice that, then you can try to help in solving the conflict. This is great for training this kind of problem solving. Things like this will happen in your work life anyway, so it&#8217;s better to practice when your career is not in danger, when you mess things up. ;-) So as we all know, social skills were getting much more important in the last decade. In short: <em>Being in team can improve your social skills &#8211; try it!</em></p>
<p><strong>Communication training is expensive &#8211; helping in a project is free</strong></p>
<p>All well running projects require a lot communication, either internal or external. Especially for non native speakers, it&#8217;s a chance to improve their English. Most projects use English as their default language to make it easy for developers from any country to join the team. If your project has no one who handles the external communication, it&#8217;s your chance to step up and do it yourself. It&#8217;s a good training and depending on your user base you even might get some constructive feedback on your announcements and other form of communication. Long story short: <em>Communication is of great importance in every aspect of our daily life &#8211; take your chances to practice&#8230;</em></p>
<p><strong>Conclusion</strong></p>
<p>Working in a team is the fun part. Get something from your open source involvement back and improve your social skills. You can even train your other communication skills and your English, if you&#8217;re not a native speaker. Open source is not only for students and unemployed people. Improve yourself by helping others&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2009/12/making-common-cause/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The project needs a home &#8211; where to host your project</title>
		<link>http://www.openprojectguide.org/2009/12/the-project-needs-a-home/</link>
		<comments>http://www.openprojectguide.org/2009/12/the-project-needs-a-home/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 13:20:00 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Talk posts]]></category>
		<category><![CDATA[early-phase]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=31</guid>
		<description><![CDATA[This blog article deals with the question, where you might host your project. Whether self hosting, free hosting and if free hosting, where? There are somethings you should think about. Just use your shared hosting account&#8230; When you&#8217;re starting a new project, the decision to host it on your own webspace, which is usually a [...]]]></description>
			<content:encoded><![CDATA[<p>This blog article deals with the question, where you might host your project. Whether self hosting, free hosting and if free hosting, where? There are somethings you should think about.</p>
<p><span id="more-31"></span><strong>Just use your shared hosting account&#8230;</strong></p>
<p>When you&#8217;re starting a new project, the decision to host it on your own webspace, which is usually a shared webhosting account. This may not be the best solution. When your project grows, then you might get help and you probably want other people to help you with maintaining the homepage. Do you want to give them your credentials which also has access to your private homepage?</p>
<p>When your project does a new release and get&#8217;s slashdotted, then your hoster might get angry or force you into a bigger webspace contract. With more users you might need more bandwidth, more memory and maintaining the software that runs the homepage might lead to a bigger workload too when you switch from a static homepage with a webforum to a full blown CMS.</p>
<p>You&#8217;ll also need a version control system for your sourcecode and a bugtracker to keep track of the bugreports. Maintaining these for yourself maybe pretty painful if you don&#8217;t have much time or experience with this kind of administration.</p>
<p>Long story short: <em>When you&#8217;re not an administrator, decide if you are really capable of maintaining the site in the long run.</em></p>
<p><strong>Free project hosting &#8211; but where?</strong></p>
<p>There are plenty of hosting sites out there. I just want to point out two sites that are outstanding in my point of view. Of course the other sites like berlios etc. are fine as well. The hosting sites offer unlimited bandwith, preinstalled software for most tasks (version control system, bugtracker, tasktracker, &#8230;), backups and a fine grained permission system to be able to split the work among the team.</p>
<p>The big old man in project hosting is <a href="http://www.sourceforge.org" target="_blank">sourceforge</a>. Everybody will have downloaded software from there before. They offer easy project creation, bug-/task tracker, very (very) simple forums, simple news, downloads, limited shell access, cron jobs, Mailinglists etc. It&#8217;s the all you can eat buffet in project hosting. Not the best solutions, but a big selection of services.</p>
<p>[<strong>UPDATE</strong>: Kenai has been suspended. Looks like Oracle has not seen it's potential :-(]</p>
<p>A relatively new project hosting site that has been published during the JavaOne from sun in 2008 is <a href="http://www.kenai.com" target="_blank">Project Kenai</a>. The concept is very nice. They use standard software and provide a homogeneous web-interface. They offer Mercurial/Subversion/Git for version control, Bugzilla/Jira for Bug-/Tasktracking, mailinglists, Wiki, forums, &#8230; And you can access them vie their regular API, which is especially with jira neat, because the Mylyn integration is great. The project are not limited to java projects, it can be every technology. Have a look, it&#8217;s really nice.</p>
<p>In short: <em>If you don&#8217;t want to do everything on your own, consider free project hosting, especially in distributed projects.</em></p>
<p><strong>Dedicated server for the project</strong></p>
<p>When cthe project grows you might have special needs. Then a dedicated server might be the best solution. You are not bound to the memory/cpu constraints of shared webhosting and you have free choice of the installed software. But you need to have good administration skills (in your project). Backups and security of the installation are important things to keep in mind. It&#8217;s one of the publicity nightmares for projects when the sourcecode or the downloadable files are compromised by hackers. Take this seriously or your efforts of building a great product are wasted. As a summary: <em>Dedicated servers are risky, but they offer the most freedom. Take your choice.</em></p>
<p><strong>Conclusion</strong></p>
<p>There are many choices for project hosting. Every option has some advantages or disadvantages. Most projects will be served best by choosing free project hosting, but the other two options also have their charme.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">﻿</div>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2009/12/the-project-needs-a-home/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

