<?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; introduction</title>
	<atom:link href="http://www.openprojectguide.org/tag/introduction/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>
		<item>
		<title>Jump start &#8211; when should you go public with your project</title>
		<link>http://www.openprojectguide.org/2009/12/jump-start/</link>
		<comments>http://www.openprojectguide.org/2009/12/jump-start/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 12:43:34 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Talk posts]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[starting-phase]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=29</guid>
		<description><![CDATA[This blog post deals with the problem of finding the right point in time to go public with your project. When should you write the first announcements, when and how to ask for help&#8230; When should you go public with your idea for a project? The sooner you go public, the sooner you&#8217;ll get people [...]]]></description>
			<content:encoded><![CDATA[<p>This blog post deals with the problem of finding the right point in time to go public with your project. When should you write the first announcements, when and how to ask for help&#8230; When should you go public with your idea for a project? The sooner you go public, the sooner you&#8217;ll get people involved to help you. At least this is what you might think.</p>
<p><span id="more-29"></span></p>
<p><strong>As early as possible?</strong></p>
<p>The problem with going public early is, that without any working code it&#8217;s not very likely that you attract new developers. There are so many open source projects and you have to show that your project is worth of getting help. The odds of attracting people before you have something to show are small. There is a little bit of a chicken and egg situation. You just have to put some effort into the project before you can ask other people to help. The trade-off is not easy. If you can, then try to get working code out. This has several advantages. As I have stated in my <a href="http://www.openprojectguide.org/2009/12/there-shall-be-light/" target="_blank">first talk blog post</a> it&#8217;s easier to let facts do the talking. According to the 80/20 rule, even when you have written something that works, you&#8217;ll still need 80% of the time for the remaining 20% of functionality. ;-) In short: <em>Don&#8217;t be too early with your announcements. Better try to contact potential fellow campaigners directly or with small requests in forums etc.</em></p>
<p><strong>Power of the first announcement</strong></p>
<p>You shouldn&#8217;t underestimate the power of the first announcement. If you do it right, then you can get a lot of attention with a well put news article. If you waste this situation with a simple announcement that simply states what you want to do in the future a lot of people might monitor your project for some time, but will loose interest soon. The most people will have forgot your project by the time you have something to show. But depending on the time the first release took, the project name might have a negative connotation, because people think that the project is progressing too slowly. On the other hand when you manage to get out with something that the people can play with, then you&#8217;ll have a much better standing. Especially when you manage it to release small updates from time to time. Long story short: <em>Try to keep a constant flow of information and releases after the first announcement or people will think badly about your project.</em></p>
<p><strong>Conclusion</strong></p>
<p>It&#8217;s not an easy decision, when to go public. It&#8217;s understandable that you&#8217;d like to get help as early as possible, but in most cases you won&#8217;t get the desired result and you maybe even get frustrated and stop a promising project. Another advantage is that you&#8217;ll end up with less discussions about technologies, internal design etc. if you can show working code. This also speeds up the development, because you can do more coding and less talking.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2009/12/jump-start/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>License to code &#8211; choosing the best license for your project</title>
		<link>http://www.openprojectguide.org/2009/12/license-to-code-choosing-the-best-license-for-your-project/</link>
		<comments>http://www.openprojectguide.org/2009/12/license-to-code-choosing-the-best-license-for-your-project/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 19:49:26 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[license]]></category>
		<category><![CDATA[starting-phase]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=24</guid>
		<description><![CDATA[This article deals with the problem of choosing a suitable license for your project. I will talk a little bit about general topics that you should think about and after that I&#8217;ll introduce a few different license types. This won&#8217;t be a comprehensive decision guide, this field is too complex for that, but maybe the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.openprojectguide.org/wp-admin/post-new.php"></a>This article deals with the problem of choosing a suitable license for your project. I will talk a little bit about general topics that you should think about and after that I&#8217;ll introduce a few different license types. This won&#8217;t be a comprehensive decision guide, this field is too complex for that, but maybe the advices help you in deciding what kind of license you like.</p>
<p><span id="more-24"></span></p>
<p>Disclaimer: I am not a lawyer nor a license expert. Use these information at your own risk. Corrections are welcome.</p>
<p><strong>Don&#8217;t invent your own!</strong></p>
<p>First I&#8217;d like to point out that it&#8217;s in most cases a really bad idea to invent your own license! It may sound easy to write your own, maybe it&#8217;s even legally binding in your country, but due to the internet, your users will be located all over the world. Creating a license that is legally binding in the most areas of the world is pretty hard. If you are not a lawyer that is specialized in international law, then don&#8217;t do it! There are many licenses available on the internet that should cover almost all needs. If you have more than one license that you&#8217;d like to use you can even do multi-licensing like for example Qt did for quite a while. A wrong written license may even turn out to be pretty expensive if you get sued. For example in Germany you may get sued if your software damages the computer of a user even if you have put it under an open source license. <em>In short: If you think about writing your own license: don&#8217;t!</em></p>
<p><strong>More restrictive licenses</strong></p>
<p>The most known license is probably the <a title="GPL" href="http://en.wikipedia.org/wiki/GNU_General_Public_License" target="_blank">GPL</a>. It&#8217;s the license of the linux kernel and according to the wikipedia article, it&#8217;s the license of ~60% of all software packages under free/open licenses. The GPL belongs to the group of the restrictive licenses. They are restrictive in the way that the source has to be free. This is what you might want for your project if it&#8217;s a stand-alone application. When you&#8217;re writing a library of a framework, then the GPL might not be the best solution. The problem is the formulation that &#8220;derived work&#8221; of the GPLed product needs to be GPLed as well. This line between &#8220;derived work&#8221; and just using the software is hard to draw sometimes. So it may be that you force your users to a specific license, which is bad if you try to write a general purpose software. There are dedicated licenses like the LGPL which are made for these products. You can include LGPL software in your differently licensed software. To summarize it: <em>GPL and similar licenses with their copy-left principle may be suitable for your project, but be aware of the consequences.</em></p>
<p><strong>More freedom, but keep my name in &#8211; license</strong></p>
<p>Another kind of license are the Apache style licenses. The key differentiation between GPL and the Apache licenses is that your users can use the software for everything as long as they keep the your source under your selected license and maintain the links/hints to the you (the original author[s]). The problem is that GPL V3 software is not compatible with the apache V2 license. This means that you can&#8217;t use any GPLed library for example for your project in this case. It was a goal in the GPL V3 creation to be compatible, but the end result didn&#8217;t achieved this goal. To summarize it: <em>Apache style licenses are easier to use for users, but may be painful for you because of incompatibilities with GPL.</em></p>
<p><strong>Do whatever you like &#8211; license</strong></p>
<p>There are  a few licenses out there that are known as &#8220;really free&#8221; licenses. The BSD style licenses are the least restrictive ones. All they require is that the original source code remains free, but anyone can use the BSD licensed work, modify it and redistribute it under another license or use it in any other software, no matter which license it is placed under. The BSD style licenses a used in a lot of semi-propriatary products and in the *BSD projects like OpenBSD etc. So please keep in mind:  <em>BSD licenses are focused on freedom, so things may happen that you don&#8217;t want.</em></p>
<p><strong>Relicensing?</strong></p>
<p>What if you want to change the license of your software after a while? This may be pretty hard, because you have to get the permission of every contributor whose contributions are still present in the project. It&#8217;s not easy but not that uncommon. To be able to do this, you have to track the contributions closely. It is effort, but it&#8217;s not unlikely that a license change may happen. What if a contributor is not agreeing to change the license? Then you&#8217;ll have to rewrite the contributions or cancel the license change. You can prepare yourself for this and ask a permission of each contributor to change the license later. Some projects do this and many commercial based projects too. Another way of dealing with this is, is to don&#8217;t include patches from people outside the project and rewrite patches instead of applying them. The disadvantage is that people won&#8217;t be as motivated to submit patches to your project. Be aware of that. Long story short: <em>Changing the license is hard if you are not prepared for it. Better incorporate this soon in your patch applying procedures.</em></p>
<p><strong>Conclusion</strong></p>
<p>Which license you should take depends heavily on the kind of software that you are writing and the kind of trade-off you are willing to make between freedom and usability in the commercial space (or in differently licensed projects). It&#8217;s not an easy choice, because it will have effects on the libraries you can use, on the way you can deal with source contributions etc.</p>
<p>There are a few sites with more or less serious guides that try to help you in the selection process:</p>
<ul>
<li><a href="http://pgl.yoyo.org/lqr/" target="_blank">http://pgl.yoyo.org/lqr/</a></li>
<li><a href="http://home.ccil.org/~cowan/floss/" target="_blank">http://home.ccil.org/~cowan/floss/</a></li>
<li><a href="http://swan.iis.sinica.edu.tw/LicenseWizard2EN/LicenseWizard.cgi" target="_blank">http://swan.iis.sinica.edu.tw/LicenseWizard2EN/LicenseWizard.cgi</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2009/12/license-to-code-choosing-the-best-license-for-your-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Should we call it &#8230; uhm&#8230; &#8211; troubles finding the right project name</title>
		<link>http://www.openprojectguide.org/2009/12/should-we-call-it-uhm/</link>
		<comments>http://www.openprojectguide.org/2009/12/should-we-call-it-uhm/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 15:45:04 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Talk posts]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[naming]]></category>
		<category><![CDATA[starting-phase]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=15</guid>
		<description><![CDATA[This article will deal with the problem of finding the right name for your project. There are quite a few pitfalls that you have to take care of. For example free domains, names that can be translated in foreign languages to bad words etc. Take your time! From my point of view, it&#8217;s the hardest [...]]]></description>
			<content:encoded><![CDATA[<p>This article will deal with the problem of finding the right name for your project. There are quite a few pitfalls that you have to take care of. For example free domains, names that can be translated in foreign languages to bad words etc.</p>
<p><span id="more-15"></span><strong>Take your time!</strong></p>
<p>From my point of view, it&#8217;s the hardest part to find a good name for the project. A funny idea that sounded great at the beginning may be problematic a few releases later when your project reaches a certain size of the user base. For example the postnuke project had problems to get accepted in the professional space. There were negative feelings that were originated in the suffix &#8220;nuke&#8221; which has been chosen to express the inheritance  of the phpnuke project from which postnuke forked. Later when the source base has been completely rewritten the &#8220;inheritance&#8221; to phpnuke  was the source of mistrust to the project from other developers and users. So the project had to rename itself to get rid of the negative connotation. A pretty popular story of the <a title="Mitsubishi Pajero" href="http://en.wikipedia.org/wiki/Mitsubishi_Pajero" target="_blank">Mitsubishi Pajero</a> which wasn&#8217;t a success in spanish speaking communities, because pajero means &#8220;to jerk-off&#8221;. After that most big companies are spending big bucks for research. In short: <em>Take your time when choosing the name, you may regret it if you choose it lightheaded.</em></p>
<p><strong>Low hanging fruits first: domains</strong></p>
<p>When you have a name in mind, check the availability of the domains in the important top level domains like .org, .com and the local domains like .de. They are important when your user base grows and local support groups are forming. It&#8217;s pretty annoying/confusing for you users if they can&#8217;t access the local support page by urls like http://www.myProject.de. People often work around by using pre- or suffixes like &#8220;-support&#8221;, &#8220;-community&#8221; or &#8220;-hp&#8221;, but this is far from good. Even in times of google people still try to enter urls directly and when they see a different project or a bad maintained unofficial site that deals with your project, the users may switch to different projects, because they got a (wrong) bad impression. People often don&#8217;t take the time to really search for something. When the first attempt doesn&#8217;t they&#8217;ll go on and try the next project that may cover their needs. There are many tool out there where you can check the availability of domains in multiple TLDs. Most companies that offer domains with different TLDs offer a similar service. The <a title="Dot-O-Mator" href="http://www.dotomator.com/index.html" target="_blank">dot-o-mator</a> for example offers several tools to find names and the domain availabilities. So please keep in mind: <em>Check the availability of as many domain names as possible and maybe even buy them early for the best user experience.</em></p>
<p><strong>Naming &amp; trademark rights &#8211; that one may be troubling&#8230;</strong></p>
<p>One thing that many people don&#8217;t think of are naming and trademark rights. You might think that it&#8217;s not a big deal, who will sue an open source project&#8230; This is happening and it will happen again. For example the Eclipse project Mylyn had a different name before: Mylar. They had to rename their project because there have been some trademark issues with other products (See: <a title="Wikipedia" href="http://en.wikipedia.org/wiki/Mylar" target="_blank">Wikipedia</a>).  But there is more that may happen. Your users may also be the reason for troubles. Postnuke has been registered as &#8220;word mark&#8221; (Wortmarke in german) in germany and the guy also registered postnuke.de. At first he offered support forums etc. but after a while there were conflicts with some of the active members which escalated in the creation of the site pncommunity.de, which later became the de facto support site for german users. But the project had no chance to get the domain from the old owner, because he had superior righty because he has registered the word postnuke. Even the formation of the german postnuke e.V. (german kind of foundation) was not enough to be able to force the old owner to give up the domain. To summarize it: <em>If you start a serious project check the trademark and naming rights before and as son as it get&#8217;s really serious, try to register your project name in as many countries as possible.</em></p>
<p><strong>Renaming a project</strong></p>
<p>So what happens if your project is taking off and you don&#8217;t want or can&#8217;t keep the name, for example because you&#8217;re encountering one of the problems above? First thing to do is to find a new really good name and keep all the points above in mind! You don&#8217;t want to rename it twice! Register first the domains, maybe the trademark/naming rights before you&#8217;ll go public with the new name, so no one may be able to get in your way again. After that you should make an announcement where you explain that you have changed the name and if possible, even explain why you did it. But be sure to be as neutral as possible. Don&#8217;t insult people even if they tried to do your project &#8220;harm&#8221;. Then rename everything to get rid of the old name as soon as possible. It&#8217;s not trivial to rename a project and many users may be confused if you don&#8217;t communicate it not properly. Try to keep old domains and put redirects in place to lead people that don&#8217;t visit your project homepage not often to the new site. Long story short: <em>Renaming is tricky business! There are many things that can go wrong. Plan it accurately!</em></p>
<p><strong>Conclusion</strong></p>
<p>It&#8217;s not easy to choose a good name. There are many pitfalls and potential problems that you may end up in if you don&#8217;t select the name careful.  Legal issues, mean users or simply bad choices may lead to problems and maybe even expensive cease and desist letter from a lawyer. So choose carefully young padawan!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2009/12/should-we-call-it-uhm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Not invented here syndrome – start or join a project?</title>
		<link>http://www.openprojectguide.org/2009/12/not-invented-here-syndrome-%e2%80%93-start-or-join-a-project/</link>
		<comments>http://www.openprojectguide.org/2009/12/not-invented-here-syndrome-%e2%80%93-start-or-join-a-project/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 11:47:18 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Talk posts]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[starting-phase]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=9</guid>
		<description><![CDATA[This article covers a few additional things that you should think of before starting a project, like whether to join a project instead of starting it. The goal is to give some hints, so you don&#8217;t start a project and after you have spent a lot of your time, you&#8217;ll find a project that fits [...]]]></description>
			<content:encoded><![CDATA[<p>This article covers a few additional things that you should think of before starting a project, like whether to join a project instead of starting it. The goal is to give some hints, so you don&#8217;t start a project and after you have spent a lot of your time, you&#8217;ll find a project that fits your needs and you have wasted a lot of your precious spare time.</p>
<p><span id="more-9"></span><strong>FLOSS needs you!<br />
</strong></p>
<p>FLOSS (Free/Libre Open Source Software) exists because passionate people work on open source projects in their spare time or even in their paid time, when the company supports the open source spirit. Great projects are built by teams not individuals! Think about projects like the linux kernel or smaller projects like Zikula (CMS/Web Application Framework), they can handle the growing complexity of their particular software only by distributing the &#8220;load&#8221; on more or less people. So try to keep the fragmentation of the open source sector low by trying to participate instead of duplicating existing software if possible. So please keep in mind:<em> Better try to join a project than start one on your own.</em></p>
<p><strong>Communication is the key</strong></p>
<p>So, when you&#8217;re thinking whether or not you should start a project, then you should take a look at other open source projects that cover more or less the same topic. It&#8217;s astonishing what is already covered by existing projects. When you find a project that fits your needs or may be altered to fit your needs, then you should contact the developer team of the project and ask if you can join the team.</p>
<p>Hopefully the project is alive and the developers are cooperating, then it&#8217;s better to join the project than to start your own. There are so many projects out there that cover the same area. There is a great deal of productive time wasted by duplicated work. A big percentage of this could have been used more productive when the projects would have joined and worked together.</p>
<p>As we all know, the world is complicated&#8230; There are projects that would fit, but you just can&#8217;t get a connection to the project. Sometimes the project doesn&#8217;t respond to your attempts and keeps a low profile. Maybe the project team is just busy or it doesn&#8217;t want help. There are also teams that have pretty strange ways to deal with external requests. Some are harsh and mean, some are too demanding. It&#8217;s understandable that this is not a project that you want to participate in.</p>
<p>In short:<em> Try to contact interesting project teams, if it doesn&#8217;t work out, don&#8217;t be too disappointed!</em></p>
<p><strong>To fork or not to fork, that is the question!</strong></p>
<p>What happens when you find a project that fits your needs but you can&#8217;t or won&#8217;t join it because it&#8217;s dead, you don&#8217;t like the team or the team doesn&#8217;t like you. Instead of starting from scratch you can fork the project and get a head start. It&#8217;s an interesting alternative, because you can immediately start with the interesting stuff, because all the basic infrastructure in form of source code is already there.</p>
<p>Maybe I should explain shortly what a fork is. It is a &#8220;copy&#8221; of the original project, that has it&#8217;s own development team and it&#8217;s own name. You normally have to keep the license, but this is in most cases not a problem. If you want to change the license, then you have to rewrite the whole project or ask all former contributors for their permission.</p>
<p>Another advantage is that you have the chance to convince some of the users of the &#8220;old&#8221; project that your fork is better. Having initially a small user base can help a lot. Of course it may also be a burden because you can&#8217;t be that flexible with your changes.</p>
<p>To summarize it: <em>Maybe a fork is the right solution, but keep license problems and existing users in mind!</em></p>
<p><strong>The not invented here syndrome</strong></p>
<p>Another reason to start a new project despite the (hopefully) valid points mentioned above, is that you want to do this all on your own. This is called the &#8220;not invented here syndrome&#8221;. In my opinion, this is one of the most popular reasons why new projects are started. I even started projects on my own for this reason. It&#8217;s fine to start projects to learn something, but please keep the reasons, that I have pointed out, in mind. You can learn about the topics you are interested in too by studying the code of the existing projects. Long story short: <em>Do you really need to start a new project or is it just to satisfy your curiosity?</em></p>
<p><strong>Conclusion</strong></p>
<p>There are many reasons to start a new project, but there are also as many reasons to join projects. Don&#8217;t waste your time by starting from scratch if you can build on top of something that already works. Maybe even join a project to join efforts. It&#8217;s fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2009/12/not-invented-here-syndrome-%e2%80%93-start-or-join-a-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>There shall be light – things to keep in mind when starting a project</title>
		<link>http://www.openprojectguide.org/2009/12/there-shall-be-light/</link>
		<comments>http://www.openprojectguide.org/2009/12/there-shall-be-light/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 11:46:04 +0000</pubDate>
		<dc:creator>patrick.c</dc:creator>
				<category><![CDATA[Talk posts]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[starting-phase]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.openprojectguide.org/?p=6</guid>
		<description><![CDATA[This article describes a few things you should consider before you start a project, like when to go public, which group of people you are targeting etc. The goal is to give some insights. It&#8217;s not getting very deep, because there will be dedicated articles for some chapters later, that are more detailed. Do you [...]]]></description>
			<content:encoded><![CDATA[<p>This article describes a few things you should consider before you start a project, like when to go public, which group of people you are targeting etc. The goal is to give some insights. It&#8217;s not getting very deep, because there will be dedicated articles for some chapters later, that are more detailed.</p>
<p><span id="more-6"></span></p>
<p><strong>Do you have just an idea or maybe even started coding?</strong></p>
<p>This is far more important than you might think. If you have working code you can easier attract other developers to join you in your journey. Having just an idea has the disadvantage that especially in the starting phase, a lot of time has to be spend for investigating the right technologies or preparing the infrastructure (which can be pretty boring). This will drive developers away or prevent them from even looking at your project at all. The small advantage of the possibility for other developers to give input from the start, quickly turns into a nightmare. With four developers you&#8217;ll end up with at least 4 different approaches for the problem. You have to give some &#8220;guidance&#8221; by writing code to get rid of the question, which basic direction the project should take. Another negative effect is that a huge amount of projects die within the first months and many of them don&#8217;t even publish code at all. You don&#8217;t want to be in this group of failed endeavors, so start coding and prove yourself to the community. Remember that it&#8217;s not very likely that you announce your new shiny project and suddenly a bunch of developers floods your inbox with requests to join you.  The more information you put in the appropriate places like your homepage or the project homepage, the higher is the probability that you&#8217;re found by the right people. So, keep in mind: <em>Prepare the foundation, think about the basic structure and start to implement it. Working code attracts much more than a &#8220;white sheet of paper&#8221;.</em></p>
<p><strong>Who do you think will use your &#8220;product&#8221;? </strong></p>
<p>Knowing what kind of people will build your user base is important. This will drive a lot of decisions that you will have to make. Are you just coding for yourself and giving the source to the public afterwards? This is the &#8220;easy&#8221; case. You actually don&#8217;t have to care a lot if there will be other developers. Obviously you have what you need and everything else is a bonus. When your goal is to be part or the head of a healthy project, then you have to keep your targeted &#8220;audience&#8221; in mind. I heard people complaining about missing involvement of their user base or other developers. This may be completely normal if you have a fairly small user base, because only a small fraction usually gets active. If you have only a few hundred (regular) users you have only small odds of getting something back from them. The percentage is higher if your targeted group consists of developers, but still the majority will only be passive or at most provide entries in your bugtracker. So knowing your audience helps in shaping your expectations, so you don&#8217;t get disappointed. Another thing that you have to keep in mind is that your &#8220;advertisement&#8221; on the projects homepage needs to be targeted for your audience. You can&#8217;t just provide API-Docs if your user base consists mainly of regular users, who just install the software and want to use it. On the other hand, you can&#8217;t just put up some high level feature lists on your homepage if you are targeting developers. There are many many projects out there, if you want to attract users, you should provide as much information that is interesting for them as possible (in a readable way!). To summarize it: <em>Think about the kinds of users that you want to have and provide information targeted for them, to convince them that your project is good for them.<br />
</em></p>
<p><strong>Do you have long-term interest in the project?</strong></p>
<p>When you start a project you are of course pretty confident that it is important and interesting. This is perfectly normal, otherwise you wouldn&#8217;t want to start the project. But you should take the time to step back a bit and think if you really want to maintain and run the project for a reasonable amount of time. What some people don&#8217;t realize is that by participating in or starting of projects, they shape their &#8220;online reputation&#8221;. With a little bit of googling you can find out a lot about people and it&#8217;s not uncommon to do this. Potential employers or customers might check what the new employee or service provider has done in the past. So be careful not only how you behave, but also what you do with your projects. The Internet never forgets. Starting tons of projects that are abandoned after a short period of time may (or will?) lead to the impression that you are not capable of focusing or finishing what you have started. That&#8217;s not something that you&#8217;d put in your vita, so you need to think if before you start a project if you really want to do it. By the way, there are of course ways to start projects for example on hosting sites like sourceforge or kenai where you know that it won&#8217;t result in usable software for quite some time, but you need to have repositories to store your code somewhere. This is in my opinion perfectly fine, as long as you are honest about it and state that in the project description somewhere. So, as a summary: <em>Be sure that you want to maintain the project or at least be honest about the kind of involvement that you plan to apply on the project.</em></p>
<p><strong>Do you have another hobby?</strong></p>
<p>This question sounds silly, but when you are in a prospering project with for example 5-10 developers, where 1-5 are &#8220;really&#8221; active, you might end up with a lot of traffic in your communication channels (mailing list, IRC, Skype Channel, &#8230;). This is not a bad thing at all. You are together with a group of usually like minded people, which may become really good friends. I have experienced this during the time that I was involved in a shopping cart module for postnuke (Postnuke is now called Zikula) and later when I was involved in the core development. You spend a lot of  hours reading and writing emails or simply chatting in the Skype channel.  This may be more time consuming than you thought. But it makes a lot of fun, nevertheless! Another thing that may be a time hog is user feedback. Bug reports, feature requests and user support may take quite some time if you want to do it right (but we&#8217;ll see in a later blogpost how this could be tackled). To keep a long story short: <em>A growing project may consume a lot of time, be aware of that!</em></p>
<p><strong>Conclusion</strong></p>
<p>The statements above may sound like, starting a project is a bad idea. This is not true. It actually is a lot of fun, especially if you find users that like your work and/or other developers that like to participate. Just keep the mentioned problems in mind, so that you won&#8217;t be disappointed or overwhelmed by the amount of work that suddenly appears.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openprojectguide.org/2009/12/there-shall-be-light/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

