<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.7.6(BH)" -->
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Planet Maemo: category &quot;feed:ec4eaeec3783414b0575c53865227f65&quot;</title>
        <description>Blog entries from Maemo community</description>
        <link>http://maemo.org/news/planet-maemo/</link>
        <lastBuildDate>Sat, 04 Apr 2026 00:04:49 +0000</lastBuildDate>
        <generator>FeedCreator 1.7.6(BH)</generator>
        <language>en</language>
        <managingEditor>planet@maemo.org</managingEditor>
        <item>
            <title>What community?</title>
            <link>https://blogs.gnome.org/bolsh/2011/10/06/what-community/</link>
            <description><![CDATA[
<p>With the announcement of <a href="http://www.tizen.org">Tizen</a> (pronounced, I learned, tie-zen, not tea-zen or tizz-en) recently, I headed over to the website to find out who the project was aimed at. I read this on the <a href="https://www.tizen.org/community">&#8220;Community&#8221;</a> page:</p>
<blockquote><p><em>The Tizen community is made up of all of the people who collectively work on or with Tizen:</em></p>
<ul>
<li><em>Product contributors: kernel/distribution developers, release managers, quality assurance, localization, etc.</em></li>
<li><em>Application developers: people who write applications to run on top of Tizen</em></li>
<li><em>Users: people who run Tizen on their device and provide feedback</em></li>
<li><em>Vendors: companies who create products based on Tizen</em></li>
<li><em>Other contributors: promotion, documentation, and much more</em></li>
</ul>
<p><em>Anyone can contribute by:</em></p>
<ul>
<li><em>Submitting patches</em></li>
<li><em>Filing bugs</em></li>
<li><em>Developing applications</em></li>
<li><em>Helping with wiki documentation</em></li>
<li><em>Participating in other community efforts and programs</em></li>
</ul>
</blockquote>
<p>Wow! That&#8217;s a diverse target audience, and a very wide ranging list of ways you can help out. But is it really helpful to scope the project so wide, and try to cater to such a wide range of use-cases from the start? And is the project at a stage where it even makes sense to advertise itself to some of these different types of users?</p>
<p>I have talked about <a href="http://blogs.gnome.org/bolsh/2011/01/13/whats-involved-in-maintaining-a-package/">the different meanings of &#8220;maintainer&#8221;</a> before, depending on whether you&#8217;re maintaining a code project or are a package maintainer for a distribution. I have also talked about the different types of community that build up around a project, and how each of them needs their own identity &#8211; particularly in the context of the MeeGo trademark. I particularly like <a href="http://webmink.com/essays/community-types/">Simon Phipps&#8217;s analysis of the four community types</a> as a way to clarify what you&#8217;re talking about.</p>
<p>For Tizen, I see between three and five different types of community, each with different needs, and each of which can form at different stages in the life-cycle of the project. Trying to &#8220;sell&#8221; the project to one type of community before the project is ready for them will result in disappointment and frustration all round &#8211; managing the expectations of people approaching Tizen will be vital to its long-term success, even if it opens you up to short-term criticism. Unless each of these communities is targeted individually and separately, and at the right time, I am sceptical about the results.</p>
<h3>&#8220;Upstream&#8221; software developers</h3>
<p>The first and most identifiably &#8220;Open Source&#8221; family of communities will be the software developers working on components and applications which will end up in the core of Tizen. For the most part, these communities exist already, and Samsung and Intel engineers are working with them. These are the projects we commonly call &#8220;upstreams&#8221; &#8211; projects you don&#8217;t control, but from whom code flows into your product.</p>
<p>In other cases, code will originate from Intel and/or Samsung. In the same way that Buteo, oFono and the various applications which were developed for the MeeGo Netbook UX were very closely associated with MeeGo, there will be similar projects (sometimes the same projects) which will have a close association with Tizen. Each of these projects will have their own personality, their own maintainers, roadmaps, specs &#8211; and each of them should have their own identity, and space to collaborate and communicate.</p>
<p>Communities form around programming projects not because of the code, but because of a shared vision and values. Each project will attract different people &#8211; the people who are interested in metadata and search are not the same as the people who will be passionate about system-wide contact integration. Each project needs its own web space, maintainers, bug tracker, mailing list, and wiki space. Of course, many projects can share the same infrastructure, and a lot of the same community processes (for things like code governance), and for projects closely related to Tizen, we can provide common space to help create a Tizen developer community in the same way there&#8217;s a GNOME developer community. But each community around each component will have its own personality and will need its own space.</p>
<p>At the level of Tizen, we could start with an architecture diagram, perhaps &#8211; and for each component on the architecture diagram, link to the project&#8217;s home page &#8211; many of the links will point to places like kernel.org, gnome.org, freedesktop.org and so on. For Tizen-specific projects, there could be a link to the project home page, with a list of stuff that needs to be done before the component is &#8220;ready&#8221;.</p>
<h3>Core platform packagers, testers, integrators</h3>
<p>Once we have a set of components which are working well together, we get to the heart of what I think will be Tizen&#8217;s early activity &#8211; bringing those components together into a cohesive whole. Tizen will be, basically, a set of distributions aimed at different form factors. And the deliverable in a distribution is not code or a Git tag, it&#8217;s a complete, integrated stack.</p>
<p>The engineering skills, resources and processes required to integrate a distribution are different to those of a code project. Making a great integrated Linux platform is obviously difficult &#8211; otherwise Red Hat would not be making money, and Ubuntu would not have had the opportunity to capture so much mind-share. Both Red Hat and Canonical do something right which others failed at before them.</p>
<p>Distributions attract a different type of contributor than code projects, and need a different set of tools and infrastructure to allow people to collaborate.At the distribution level, it is more likely you will be debating whether or not to integrate a particular package or its competitor than it is to debate whether to implement a feature in a specific package. Of course, it is possible to influence upstream projects to get specific features implemented, not least by providing developer resources, and there will be a need for some ambassadors to bridge the gap to upstream projects. And it is possible for a distribution to carry patches to upstream packages if that community disagrees. But in general, not much code gets written in distributions.</p>
<p>What the distro community needs and expects is infrastructure for continuous integration, bug tracking software, a way to submit and build software packages, good release engineering, an easy way to find out what packages need a maintainer (see <a href="http://www.debian.org/devel/wnpp/">Debian&#8217;s WNPP list</a>  or <a href="https://launchpad.net/ubuntu/+bugs?field.tag=needs-packaging">Ubuntu&#8217;s &#8220;need-packaging&#8221; list</a> for examples) and a way to influence what packages or features are included in future releases (see <a href="http://fedoraproject.org/wiki/Releases/16/Schedule">Fedora</a> or <a href="https://wiki.ubuntu.com/UbuntuDevelopment/ReleaseProcess">Ubuntu</a> for examples). They also want tools to allow packaging, testing and  deploying the integrated distribution &#8211; for an embedded distro, that might mean an emulator and an image creator, perhaps.</p>
<h3>Vendors and carriers</h3>
<p>Communities of companies are worth a special mention. Companies have very different ways of working together and agreeing on things than communities of individuals. I was tempted to just roll vendors into the &#8220;Platform integrators&#8221; community type, but they are sufficiently different to be considered another type of community. Vendors have different constraints and motivations than individual contributors to the platform, and we should be aware of those.</p>
<p>Vendors like to have a business relationship &#8211; some written agreement that shows where everyone stands. They have a direct relationship with people who buy their hardware, and have an interest (potentially in conflict with other communities) in owning the user relationship &#8211; through branded application stores, UI and support forums, for example. And since vendors are typically working on hardware development in parallel with software development, they care a lot about a reliable release schedule and quality level from the stack. Something that companies care about which individuals usually don&#8217;t are legal concerns around working with the process &#8211; do they have patent rights to the code they ship? Are they giving up any of their own potential patent claims?</p>
<h3>3rd party application developers</h3>
<p>Application developers don&#8217;t care, in general, whether the platform is open source or closed, or developed collaboratively or by one party (witness the popularity of Android and iOS with application developers). What they do care about are developer tools, documentation, and the ability to share their work with device users and other application developers. Some application developers will want to develop their applications as free software, and it is possible to enable that, but I think the most important thing for application developers is that it&#8217;s easy to do things with your platform, that there are good tools for developing, testing and deploying your application, that your platforms APIs are enabling the developer to do what he wants, and that you are providing a channel for those developers to get their apps to users of your platform.</p>
<p>An application developer doesn&#8217;t want to have to ship his software to 5 different app stores on every release &#8211; in contrast to vendors, he would like a single channel to his market. Other things he cares about are being able to form a relationship with his users &#8211; so app stores need to be social, allow user ratings and comments, and allow the author to interact with his users. Clear terms of engagement are vital here too &#8211; especially for commercial application developers. And application developers are also another type of community &#8211; they will want to share tips and tricks, code, and their thoughts on the project leaders in some kind of app developer knowledge base.</p>
<h3>Device users</h3>
<p>There is another potential community which I should mention, and that is users of your platform &#8211; typically, these will be users of devices running your platform. It should be possible for engaged users to share information, opinions, tips &amp; tricks, and interesting hacks among each other. It should also be possible to rate and recommend applications easily &#8211; this is in the interests of both your user community and your application developer ecosystem.</p>
<h3>OK, so what?</h3>
<p>Each of these community types is different, and they don&#8217;t mix well. They mature at different rates. There is no point in trying to build a user platform until there are devices running your platform on the market, for example</p>
<p>So each type of community needs a separate space to work. There is no point in catering to a 3rd party application developer until you have developer tools and a platform for him to develop against. Vendors will commit to products when they see a viable integrated platform. And so on.</p>
<p>What is vital is to be very clear, for each type of community, what the rules of engagement are. As an example, one company can control the integration of a platform and the development of many of its components (as is the case for Android) and everyone is relatively happy, because they know where they stand and what they&#8217;re getting into. But if you advertise as an open and transparent project, and a small group of people announce the decisions of what components are included or excluded from the stack (as was the case in MeeGo), then in spite of being vastly more open, people who have engaged with the project will end up unhappy, because of a mismatch between the message and the practice in the project.</p>
<p>So what about Tizen? I think it is a mistake to announce the projects as a place to &#8220;submit patches, report bugs and develop applications&#8221; when there is no identifiable code base, no platform to try, and no published SDK to develop against. By announcing that Tizen is an Open Source platform, Intel and Samsung have set an expectation for people &#8211; and these are people who have gone through the move to MeeGo under two years ago, and who have seen Nokia drop the project earlier this year. If they are disappointed by the project&#8217;s beginnings because the expectations around the project have been set wrong from the offset, it could take a long time to recover.</p>
<p>Personally, I would start low-key by announcing an architecture diagram and concentrating on code and features that need writing, then ramp up the integrator community with some alpha images and tools to allow people to roll their own; finally, when the platform stabilises roll out the developer SDK and app store and start building up an application developer community. But by aiming too big with the messaging, Tizen runs the risk of scaring some people away early. Time will tell.</p>
<p>&nbsp;</p>
<span class="net_nemein_favourites">7 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=abb57136f0b011e0995389975b483e4d3e4d&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/abb57136f0b011e0995389975b483e4d3e4d/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=abb57136f0b011e0995389975b483e4d3e4d&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/abb57136f0b011e0995389975b483e4d3e4d/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Thu, 06 Oct 2011 20:00:34 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-abb57136f0b011e0995389975b483e4d3e4d</guid>
        </item>
        <item>
            <title>Getting people together</title>
            <link>https://blogs.gnome.org/bolsh/2011/05/09/getting-people-together/</link>
            <description><![CDATA[
<p>One of the most important things you can do in a free software project, besides writing code, is to get your key contributors together as often as possible.</p>
<p>I&#8217;ve been fortunate to be able to organise a number of events in the past 10 years, and also to observe others and learn from them over that time. Here are some of the lessons I&#8217;ve learned over the years from that experience:</p>
<h2>Venue</h2>
<p>The starting point for most meetings or conferences is the venue. If you&#8217;re getting a small group (under 10 people) together, then it is usually OK just to pick a city, and ask a friend who runs a business or is a college professor to book a room for you. Or use a co-working space. Or hang out in someone&#8217;s house, and camp in the garden.  Once you get bigger, you may need to go through a more formal process.</p>
<p>If you&#8217;re not careful, the venue will be a huge expense, and you&#8217;ll have to find that money somewhere. But if you are smart, you can manage a free venue quite easily.</p>
<p>Here are a few strategies you might want to try:</p>
<ul>
<li><strong>Piggy-back on another event</strong> &#8211; the Linux Foundation Collaboration Summit, OSCON, LinuxTag, GUADEC and many other conferences are happy to host workshops or meet-ups for smaller groups. The GIMP Developers Conference in 2004 was the first meet-up that I organised, and to avoid the hassle of dealing with a venue, finding a time that suited everyone, and so on, I asked the GNOME Foundation if they wouldn&#8217;t mind setting aside some space for us at GUADEC &#8211; and they said yes.Take advantage of the bigger conference&#8217;s organisation, and you get the added benefit of attending the bigger conference at the same time!</li>
<li><strong>Ask local universities for free rooms</strong> &#8211; This won&#8217;t work once you go over a certain size, but especially for universities which have academics who are members of the local LUG, they can talk their department head into booking a lecture theatre &amp; a few classrooms for a weekend. Many universities will ask to do a press release and get credit on the conference web-site, and this is a completely fair deal.The first Libre Graphics Meeting was hosted free in CPE Lyon, and the GNOME Boston Summit has been hosted free for a number of years in MIT.</li>
<li>
<p><strong>If the venue can&#8217;t be free, see if you can get someone else to pay for it</strong> &#8211; Once your conference is bigger than about 200 people, most venues will require payment. Hosting a conference will cost them a lot, and it&#8217;s a big part of the business model of universities to host conferences when the students are gone. But just because the university or conference center won&#8217;t host you for free doesn&#8217;t mean that you have to be the one paying.</p>
<p>Local regional governments like to be involved with big events in their region. GUADEC in Stuttgart, the Gran Canaria Desktop Summit, and this year&#8217;s Desktop Summit in Berlin have all had the cost of the venue covered by the host region. An additional benefit of partnering with the region is that they will often have links to local industry and press &#8211; resources you can use to get publicity and perhaps even sponsorship for your conference.</p>
</li>
<li><strong>Run a bidding process</strong> &#8211; by encouraging groups wishing to host the conference to put in bids, you are also encouraging them to source a venue and talk to local partners before you decide where to go. You are also putting cities in competition with each other, and like olympic bids, cities don&#8217;t like to lose competitions they&#8217;re in!</li>
</ul>
<h2>Budget</h2>
<p>Conferences cost money. Major costs for a small meet-up might be<br />
covering the travel costs of attendees. For a larger conference, the<br />
major costs will be equipment, staff and venue.</p>
<p>Every time I have been raising the budget for a conference, my rule of<br />
thumb has been simple:</p>
<ol>
<li> Decide how much money you need to put on the event</li>
<li>Fundraise until you reach that amount</li>
<li>Stop fundraising, and move on to other things.</li>
</ol>
<p>Raising money is a tricky thing to do. You can literally spend all of<br />
your time doing it. At the end of the day, you have a conference to put<br />
on, and the amount of money in the budget is not the major concern of<br />
your attendees.</p>
<p>Remember, your primary goal is to get project participants together to<br />
advance the project. So getting the word out to prospective attendees,<br />
organising accommodation, venue, talks, food and drinks, social<br />
activities and everything else people expect at an event is more<br />
important than raising money.</p>
<p>Of course, you need money to be able to do all the rest of that stuff,<br />
so finding sponsors, fixing sponsorship levels, and selling your<br />
conference is a necessary evil. But once you have reached the amount of<br />
money you need for the conference, you really do have better things to<br />
do with your time.</p>
<p>There are a few potential sources of funds to put on a conference &#8211; I<br />
recommend a mix of all of these as the best way to raise your budget.</p>
<ul>
<li>
<p><strong>Attendees</strong> &#8211; While this is a controversial topic among many communities, I think it is completely valid to ask attendees to contribute something to the costs of the conference. Attendees benefit from the facilities, the social events, and gain value from the conference.Some communities consider attendance at their annual event as a kind of reward for services rendered, or an incitement to do good work in the coming year, but I don&#8217;t think that&#8217;s a healthy way to look at it.</p>
<p>There are a few ways for conference attendees to fund the running of the conference:</p>
<ol>
<li>
<p>Registration fees &#8211; This is the most common way to get money from conference attendees. Most community conferences ask for a token amount of fees. I&#8217;ve seen conferences ask for an entrance fee of €20 to €50, and most people have not had a problem paying this.</p>
<p>A pre-paid fee also has an additional benefit of massively reducing no-shows among locals. People place more value on attending an event that costs them €10 than one where they can get in for free, even if the content is the same.</p>
</li>
<li>Donations &#8211; very successfully employed by FOSDEM. Attendees are offered an array of goodies, provided by sponsors (books, magazine subscriptions, t-shirts) in return for a donation. But those who want can attend for free.</li>
<li>Selling merchandising &#8211; Perhaps your community would be happier hosting a free conference, and selling plush toys, t-shirts, hoodies, mugs and other merchandising to make some money. Beware: in my experience you can expect less from profits from merchandising sales than you would get giving a free t-shirt to each attendee with a registration fee.</li>
</ol>
</li>
<li>
<p><strong>Sponsors</strong> &#8211; Media publications will typically agree to &#8220;press sponsorship&#8221; &#8211; providing free ads for your conference in their print magazine or website. If your conference is a registered non-profit which can accept tax-deductible donations, offer press sponsors the chance to invoice you for the services and then make a separate sponsorship grant to cover the bill. The end result for you is identical, but it will allow the publication to write off the space they donate to you for tax.</p>
<p>What you really want, though, are cash sponsorships. As the number of free software projects and conferences has multiplied, the competition for sponsorship dollars has really heated up in recent years. To maximise your chances of making your budget target, there are a few things you can do.</p>
<ol>
<li>
<p>Conference brochure &#8211; Think of your conference as a product you&#8217;re selling. What does it stand for, how much attention does it get, how important is it to you, to your members, to the industry and beyond? What is the value proposition for the sponsor?</p>
<p>You can sell a sponsorship package on three or four different grounds: perhaps conference attendees are a high-value target audience for the sponsor, perhaps (especially for smaller conferences) the attendees aren&#8217;t what&#8217;s important, it&#8217;s the attention that the conference will get in the international press, or perhaps you are pitching to the company that the conference is improving a piece of software that they depend on.</p>
<p>Depending on the positioning of the conference, you can then make a list of potential sponsors. You should have a sponsorship brochure that you can send them, which will contain a description of the conference, a sales pitch explaining why it&#8217;s interesting for the company to sponsor it, potentially press clippings or quotes from past attendees saying how great the conference is, and finally the amount of money you&#8217;re looking for.</p>
</li>
<li>
<p>Sponsorship levels &#8211; These should be fixed based on the amount of money you want to raise. You should figure on your biggest sponsor providing somewhere between 30% and 40% of your total conference budget for a smaller conference. If you&#8217;re lucky, and your conference gets a lot of sponsors, that might be as low as 20%. Figure on a third as a ball-park figure. That means if you&#8217;ve decided that you need €60,000 then you should set your cornerstone sponsor level at €20,000, and all the other levels in consequence (say, €12,000 for the second level and €6,000 for third level).</p>
<p>For smaller conferences and meet-ups, the fundraising process might be slightly more informal, but you should still think of the entire process as a sales pitch.</p>
</li>
<li>
<p>Calendar &#8211; Most companies have either a yearly or half-yearly budget cycle. If you get your submission into the right person at the right time, then you could potentially have a much easier conversation. The best time to submit proposals for sponsorship of a conference in the Summer is around October or November of the year before, when companies are finalising their annual budget.</p>
<p>If you miss this window, all is not lost, but any sponsorship you get will be coming out of discretionary budgets, which tend to get spread quite thin, and are guarded preciously by their owners. Alternatively, you might get a commitment to sponsor your July conference in May, at the end of the first half budget process &#8211; which is quite late in the day.</p>
</li>
<li>
<p>Approaching the right people &#8211; I&#8217;m not going to teach anyone sales, but my personal secret to dealing with big organisations is to make friends with people inside the organisations, and try to get a feel for where the budget might come from for my event. Your friend will probably not be the person controlling the budget, but getting him or her on board is your opportunity to have an advocate inside the organisation, working to put your proposal in front of the eyes of the person who owns the budget.</p>
<p>Big organisations can be a hard nut to crack, but free software projects often have friends in high places. If you have seen the CTO or CEO of a Fortune 500 company talk about your project in a news article, don&#8217;t hesitate to drop him a line mentioning that, and when the time comes to fund that conference, a personal note asking who the best person to talk to will work wonders. Remember, your goal is not to sell to your personal contact, it is to turn her into an advocate to your cause inside the organisation, and create the opportunity to sell the conference to the budget owner later.</p>
</li>
</ol>
<p>Also, remember when you&#8217;re selling sponsorship packages that everything which costs you money could potentially be part of a sponsorship package. Some companies will offer lanyards for attendees, or offer to pay for a coffee break, or ice-cream in the afternoon, or a social event. These are potentially valuable sponsorship opportunities and you should be clear in your brochure about everything that&#8217;s happening, and spec out a provisional budget for each of these events when you&#8217;re drafting your budget.</li>
</ul>
<h2>Content</h2>
<p>Conference content is the most important thing about a conference. Different events handle content differently &#8211; some events invite a large proportion of their speakers, while others like GUADEC and OSCON invite proposals and choose talks to fill the spots.</p>
<p>The strategy you choose will depend largely on the nature of the event. If it&#8217;s an event in its 10th year with an ever increasing number of attendees, then a call for papers is great. If you&#8217;re in your first year, and people really don&#8217;t know what to make of the event, then setting the tone by inviting a number of speakers will do a great job of helping people know what you&#8217;re aiming for.</p>
<p>For Ignite Lyon last year, I invited about 40% of the speakers for the first night (and often had to hassle them to put in a submission, and the remaining 60% came through a submission form. For the first Libre Graphics Meeting, apart from lightning talks, I think that I contacted every speaker except 2 first. Now that the event is in its 6th year, there is a call for proposals process which works quite well.</p>
<h2>Schedule</h2>
<p>Avoiding putting talks in parallel which will appeal to the same people is hard. Every single conference, you hear from people who wanted to attend talks which were on at the same time on similar topics.</p>
<p>My solution to conference scheduling is very low-tech, but works for me. Coloured post-its, with a different colour for each theme, and an empty talks grid, do the job fine. Write the talk titles one per post-it, add any constraints you have for the speaker, and then fill in the grid.</p>
<p>Taking scheduling off the computer and into real life makes it really easy to see when you have clashes, to swap talks as often as you like, and then to commit it to a web page when you&#8217;re happy with it.</p>
<p><a href="http://blogs.gnome.org/bolsh/2006/05/09/initial-schedule-ready/">I used this technique successfully for GUADEC 2006</a>, and <a href="http://www.flickr.com/photos/rossburton/467140094/">Ross Burton re-used it in 2007.</a> </p>
<h2>Parties</h2>
<p>Parties are a trade-off. You want everyone to have fun, and hanging out is a huge part of attending a conference. But morning attendance suffers after a party. Pity the poor community member who has to drag himself out of bed after 3 hours sleep to go and talk to 4 people at 9am after the party.</p>
<p>Some conferences have too many parties. It&#8217;s great to have the opportunity to get drunk with friends every night. But it&#8217;s not great to <strong>actually</strong> get drunk with friends every night. Remember the goal of the conference: you want to encourage the advancement of your project.</p>
<p>I encourage one biggish party, and one other smallish party, over the course of the week. Outside of that, people will still get together, and have a good time, but it&#8217;ll be on their dime, and that will keep everyone reasonable.</p>
<p>With a little imagination, you can come up with events that don&#8217;t involved loud music and alcohol. Other types of social event can work just as well, and be even more fun.</p>
<p>At GUADEC we have had a football tournament for the last number of years. During the OpenWengo Summit in 2007, we brought people on a boat ride on the Seine and we went on a classic 19th century merry-go-round afterwards. Getting people eating together is another great way to create closer ties &#8211; I have very fond memories of group dinners at a number of conferences. At the annual KDE conference Akademy, there is typically a Big Day Out, where people get together for a picnic, some light outdoors activity, a boat ride, some sightseeing or something similar.</p>
<h2>Extra costs</h2>
<p>Watch out for those unforeseen costs! One conference I was involved in, where the venue was &#8220;100% sponsored&#8221; left us with a €20,000 bill for labour and equipment costs. Yes, the venue had been sponsored, but setting up tables and chairs, and equipment rental of whiteboards, overhead projectors and so on, had not. At the end of the day, I estimate that we used about 60% of the equipment we paid for.</p>
<p>Conference venues are hugely expensive for everything they provide. Coffee breaks can cost up to $10 per person for a coffee &amp; a few biscuits, bottled water for speakers costs $5 per bottle, and so on.  Rental of an overhead projector and mics for one room for one day can cost €300 or more, depending on whether the venue insists that equipment be operated by their a/v guy or not.</p>
<p>When you&#8217;re dealing with a commercial venue, be clear up-front about what you&#8217;re paying for.</p>
<h2>On-site details</h2>
<p>I like conferences that take care of the little details. As a speaker, I like it when someone contacts me before the conference and says they&#8217;ll be presenting me, what would I like them to say? It&#8217;s reassuring to know that when I arrive there will be a hands-free mic and someone who can help fit it.</p>
<p>Taking care of all of these details needs a gaggle of volunteers, and it needs someone organising them beforehand and during the event. Spend a lot of time talking to the local staff, especially the audio/visual engineers.</p>
<p>In one conference, the a/v guy would switch manually to a screen-saver at the end of a presentation. We had a comical situation during a lightning talk session where after the first speaker, I switched presentations, and while the next presentation showed up on my laptop, we still had the screensaver on the big screen. No-one had talked to the A/V engineer to explain to him the format of the presentation!</p>
<p>So we ended up with 4 Linux engineers looking at the laptop, checking connections and running various Xrandr incantations, trying to get the overhead projector working again! We eventually changed laptops, and the a/v engineer realised what the session was, and all went well after that &#8211; most of the people involved ended up blaming my laptop.</p>
<h2>Have fun!</h2>
<p>Running a conference, or even a smaller meet-up, is time consuming, and consists of a lot of detail work, much of which will never be noticed by attendees. I haven&#8217;t even dealt with things like banners and posters, graphic design, dealing with the press, or any of the other joys that come from organising a conference.</p>
<p>The end result is massively rewarding, though. A study I did last year of the GNOME project showed that there is a massive project-wide boost in productivity just after our annual conference, and many of our community members cite the conference as the high point of their year.</p>
<span class="net_nemein_favourites">9 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=2c1e270e7a5b11e0bc8e0531400262906290&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/2c1e270e7a5b11e0bc8e0531400262906290/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=2c1e270e7a5b11e0bc8e0531400262906290&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/2c1e270e7a5b11e0bc8e0531400262906290/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Mon, 09 May 2011 16:27:18 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-2c1e270e7a5b11e0bc8e0531400262906290</guid>
        </item>
        <item>
            <title>Where do we go from here?</title>
            <link>https://blogs.gnome.org/bolsh/2011/02/16/where-do-we-go-from-here/</link>
            <description><![CDATA[
<p>The post-<a href="http://conversations.nokia.com/2011/02/11/open-letter-from-ceo-stephen-elop-nokia-and-ceo-steve-ballmer-microsoft/">Elopocalypse</a> <a href="http://www.engadget.com/2011/02/16/nokia-shareholders-and-unions-fight-back-against-microkia/">angst</a> has been getting me down over the past few days. It&#8217;s against my nature to spend a lot of time worrying about things that are decided, done, dusted. It was Democritus, I think, who said that only a fool worries about things over which he has no control, and I definitely identify with that. It seems that a significant number of people on mailing lists I&#8217;m subscribed to don&#8217;t share this character trait.</p>
<p>I prefer to roll with the punches, to ask, &#8220;where do we go from here?&#8221; &#8211; we have a new landscape, with Nokia potentially being a lot less involved in MeeGo over the coming months. Will they reduce their investment in 3rd party developers? Perhaps. I expect them to. Will they lay some people off? I bet that there will be a small layoff in MeeGo Devices, but I&#8217;d wager that there will be bigger cuts in external contracts. In any case, this is something over which I have no control.</p>
<p>First up &#8211; what next for MeeGo? While MeeGo is looking a lot less attractive for application developers  now, I still think there&#8217;s a great value proposition for hardware  vendors to get behind it in vertical markets. Intel seem committed, and MeeGo (even with Nokia reducing investment) is much broader than one company now. A lot of people are betting the bank on it being a viable platform. So I think it will be, and soon.</p>
<p>Will I continue contributing time &amp; effort to MeeGo? My reasons for contributing to MeeGo were not dependent on Nokia&#8217;s involvement, so yes, but I will be carefully eyeing business opportunities as well. I&#8217;d be lying if I said that I didn&#8217;t expect to get some business from a vibrant MeeGo ecosystem, and now I will need to explore other avenues. But the idea of collaborating on a core platform and building a set of free software form-factor specific UIs is still appealing. And I really do like the Maemo/MeeGo community a lot.</p>
<p>Luckily, the time to market difficulties that Nokia experienced are, in my opinion, issues of execution rather than inherent problems in working with free software. Companies have a clear choice between embracing proprietary-style development and treating upstream as &#8220;free code&#8221; (as Google have with Android), or embracing community-style development and working <a href="http://www.theopensourceway.org/book/">&#8220;The Open Source Way&#8221;</a> (as Red Hat have learned to do). Nokia&#8217;s problems came from the hybrid approach of engage-but-keep-something-back, which prevented them from leveraging community developers as co-developers, while at the same time imposing all the costs of growing and supporting a large community.</p>
<p>I expect lots of companies to try to learn from this experience and start working smarter with communities &#8211; and since that&#8217;s where <a href="http://www.neary-consulting.com/index.php/services/">I can help them</a>, I&#8217;m not too worried about the medium term.</p>
<p>I would bet on Nokia partners and subcontractors battening down the hatches right now until the dust settles, and potentially looking for revenue sources outside the MeeGo world. If I had a team of people working for me that&#8217;s what I&#8217;d do. If some Nokia work kept coming my way, I&#8217;d be glad of it, but right now I&#8217;d be planning a life without Nokia in the medium term.</p>
<p>For any companies who have followed Nokia from Symbian to MeeGo, my advice would be to stick to Linux, convert to an Android strategy, and start building some Windows Phone skills in case Nokia&#8217;s bet works out, but don&#8217;t bet the bank on it. And working effectively with community developed software projects is a key skill for the next decade that you should be developing (a small plug for my services there).</p>
<p>For anyone working on MeeGo within Nokia, the suspense over who might lose their jobs is worse than the fall, let me reassure you. Having been through a re-org or two in my time, I know that the wait can last weeks or months, and even when the cuts come, there&#8217;s always an itching suspicion of another one around the corner. Nothing is worse for morale in a team than wondering who will still be there next month. But you have learned valuable and sought-after skills working on MeeGo, and they are bankable on the market right now. If I were working on MeeGo inside Nokia right now, I think I&#8217;d ignore the possibility of a lay-off and get on with trying to make the MeeGo phone as great as possible. If I got laid off, I&#8217;d be happy to have a redundancy package worthy of Finland, and would be confident in my ability to find a job as a Linux developer very quickly.</p>
<p>For community members wondering whether to stick with MeeGo or jump ship, I&#8217;d ask, why were you hanging out around MeeGo in the first place? Has anything in the past week changed your motivations? If you wanted to have a shiny free-software-powered Nokia phone, you should have one by the end of the year. If you wanted to hack on any of the components that make up MeeGo, you can still do that. If you were hoping to make money off apps, that&#8217;s probably not going to happen with MeeGo on handsets any time soon. If you&#8217;re not convinced by the market potential of MeeGo apps on tablets, I&#8217;d jump ship to Android quick (in fact, why aren&#8217;t you there already?).</p>
<p>Qt users and developers are probably worried too. I don&#8217;t think that Qt is immediately threatened. The biggest danger for Qt at this point would be Intel &amp; others deciding that Qt was a bad choice and moving to something else. That would be a massive strategic blunder &#8211; on a par with abandoning the GTK+ work which had been done before moblin 2 to move to Qt. <a href="http://blogs.gnome.org/bolsh/2010/10/25/ubuntu-to-move-to-unity-as-default-desktop-for-11-04/">Rewriting user interfaces is hard</a> and I don&#8217;t think that Intel are ready to run the market risk of dropping Qt &#8211; which means that they&#8217;re pot-committed at this point. If Nokia ever did decide to drop Qt, Intel would probably be in the market to buy it. Then again, I can also see how Qt&#8217;s management might try to do an LMBO and bring the company private again. Either way, there will be a demand for Qt, and Qt developers, for some time to come.</p>
<p>No-one likes the guy giving unwanted advice to everyone, so this seems like a good place to stop. My instinct when something like this happens is to take a step back, see what&#8217;s inherently changed, and try to see what the landscape looks like from different perspectives. From my perspective, the future is definitely more challenging than it was a week ago, but it&#8217;s not like the Elopocalypse wiped out my livelihood. In fact, I have been thinking about life without Nokia since MeeGo was first announced last year, when I guessed that Nokia would prefer working through the Linux Foundation for an independent eye.</p>
<p>But even if Nokia were my only client, and they were going away tomorrow, I think I could probably find other clients, or get a job, quickly enough. It&#8217;s important to put these things in perspective.</p>
<span class="net_nemein_favourites">13 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=38b3f7d639ca11e0bae91d871667a585a585&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/38b3f7d639ca11e0bae91d871667a585a585/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=38b3f7d639ca11e0bae91d871667a585a585&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/38b3f7d639ca11e0bae91d871667a585a585/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Wed, 16 Feb 2011 11:43:17 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-38b3f7d639ca11e0bae91d871667a585a585</guid>
        </item>
        <item>
            <title>Drawing up a roadmap</title>
            <link>https://blogs.gnome.org/bolsh/2011/02/07/drawing-up-a-roadmap/</link>
            <description><![CDATA[
<p>One of the most important documents a project can have is some kind of elaboration of what the maintainers want to see happen in the future. This is the concrete expression of the project vision &#8211; it allows people to adhere to the vision, and gives them the opportunity to contribute to its realisation. This is the document I&#8217;ll be calling a roadmap.</p>
<p>Sometimes the word &#8220;roadmap&#8221; is used to talk about other things, like branching strategies and release schedules. To me, a release schedule and a roadmap are related, but different documents. Releasing is about ensuring users get to use what you make. The roadmap is your guiding light, the beacon at the end of the road that lets you know what you&#8217;re making, and why.</p>
<p>Too many projects fall into the trap of having occasional roadmap planning processes, and then posting a mighty document which stays, unchanged, until the next time the planning process gets done. Roadmaps like these end up being historical documents &#8211; a shining example of how aspirations get lost along the way of product development.</p>
<p>Other projects are under-ambitious. Either there is no roadmap at all, in which case the business as usual of making software takes over &#8211; developers are interrupt-driven, fixing bugs, taking care of user requests, and never taking a step back to look at the bigger picture. Or your roadmap is something you use to track tasks which are already underway, a list of the features which developers are working on right now. It&#8217;s like walking in a forest at night with a head-light &#8211; you are always looking at your feet avoiding tree-roots, yet you have no idea where you&#8217;re going.</p>
<p>When we drew up <a href="http://lists.xcf.berkeley.edu/lists/gimp-user/2003-August/006576.html">the roadmap</a> for the GIMP for versions 2.0 and 2.2 in 2003, we committed <a href="http://www.mail-archive.com/gimp-developer@lists.xcf.berkeley.edu/msg06066.html">some of these mistakes</a>. By observing some projects like Inkscape (which has a history of excellent roadmapping) and learning from our mistakes, I came up with a different method which we applied to the WengoPhone from OpenWengo in 2006, and which served us well (until the project became <a href="http://trac.qutecom.org">QuteCom</a>, at least). Here are some of the techniques I learned, which I hope will be useful to others.</p>
<h2>Time or features?</h2>
<p>One question with roadmaps is whether hitting a date for release should be included as an objective. Even though I&#8217;ve said that release plans and roadmaps are different documents, I think it is important to set realistic target dates on way-points. Having a calendar in front of you allows you to keep people focussed on the path, and avoid falling into the trap of implementing one small feature that isn&#8217;t part of your release criteria. Pure time-based releases, with no features associated, don&#8217;t quite work either. The end result is often quite tepid, a product of the release process rather than any design by a core team.</p>
<p>I like <a href="http://www.joelonsoftware.com/items/2007/10/26.html">Joel&#8217;s scheduling technique</a>: &#8220;If you have a bunch of wood blocks, and you can&#8217;t fit them into a box,  you have two choices: get a bigger box, or remove some blocks.&#8221; That is, you can mix a time-based and feature-based schedule. You plan features, giving each one a priority. You start at the top and work your way down the list. At the feature freeze date, you run a project review. If a feature is finished, or will be finished (at a sufficient quality level) in time for release, it&#8217;s in. If it won&#8217;t realistically be finished in time for the release date, it&#8217;s bumped. That way, you stick to your schedule (mostly), and there is a motivation to start working on the biggest wood blocks (the most important features) first.</p>
<p>A recent article on <a href="http://www.codesimplicity.com/post/open-source-community-simplified/">lessons learned over years of Bugzilla development</a> by Max Kanat-Alexander made an interesting suggestion which makes a lot of sense to me &#8211; at the point you decide to feature freeze and bump features, it may be better to create a release branch for stabilisation work, and allow the trunk to continue in active development. The potential cost of this is a duplication of work merging unfinished features and bug fixes into both branches, the advantage is it allows someone to continue working on a bumped feature while the team as a whole works towards the stable release.</p>
<h2>Near term, mid term, long term</h2>
<p>The <a href="http://web.archive.org/web/20050206190027/www.inkscape.org/cgi-bin/wiki.pl?Roadmap">Inkscape roadmap from 2005</a> is a thing of beauty. The roadmap mixes beautifully long-term goals with short-term planning. Each release has a by-line, a set of one or two things which are the main focus of the release. Some releases are purely focussed on quality. Others include important features. The whole thing feels planned. There is a vision.</p>
<p>But as you come closer and closer to the current work, the plans get broken down, itemised further. The <a href="http://en.wikipedia.org/wiki/Big_Hairy_Audacious_Goal">BHAGs</a> of a release in 2 years gets turned into a list of sub-features when it&#8217;s one year away, and each of those features gets broken down further as a developer starts planning and working on it.</p>
<p>The fractal geometer in me identifies this as a scaling phenomenon &#8211; coding software is like <a href="http://en.wikipedia.org/wiki/Coastline_paradox">zooming in to a coastline and measuring its length</a>. The value you get when measuring with a 1km long ruler is not the same as with a 1m ruler. And as you get closer and closer to writing code, you also need to break down bigger tasks into smaller tasks, and smaller tasks into object design, then coding the actual objects and methods. Giving your roadmap this sense of scope allows you to look up and see in the distance every now and again.</p>
<h2>Keep it accurate</h2>
<p>A roadmap is a living document. The best reason to go into no detail at all for  future releases beyond specifying a theme is that you have no idea yet how long things will take to do when you get there. If you load up the next version with features, you&#8217;re probably aiming for a long death-march in the project team.</p>
<p>The inaccurate roadmap is an object of ridicule, and a motivation killer. If it becomes clear that you&#8217;re not going to make a date, change the date (and all the other dates in consequence). That might also be a sign that the team has over-committed for the release, and an opportunity to bump some features.</p>
<h2>Leave some empty seats</h2>
<p>In community projects, new contributors often arrive who would like to work on features, but they don&#8217;t know where to start. There is an in-place core team who are claiming features for the next release left &amp; right, and the new guy doesn&#8217;t know what to do. &#8220;Fix some bugs&#8221; or &#8220;do some documentation&#8221; are common answers for many projects including GNOME (with the <a href="https://bugzilla.gnome.org/buglist.cgi?keywords=gnome-love&amp;resolution=---">gnome-love keyword in Bugzilla</a>) and LibreOffice (with the <a href="http://wiki.documentfoundation.org/Easy_Hacks">easy hacks list</a>). Indeed, these do allow you to get to know the project.</p>
<p>But, as has often been said, developers like to develop features, and sometimes it can be really hard what features are important to the core team. This is especially true with commercial software developers. The roadmap can help.</p>
<p>In any given release, you can include some high priority features &#8211; stuff that you would love to see happen &#8211; and explicitly marked as &#8220;Not taken by the core team&#8221;. It should be clear that patches of a sufficiently high standard implementing the feature would be gratefully accepted. This won&#8217;t automatically change a new developer into a coding ninja, nor will it prevent an ambitious hacker from biting off more than he can chew, but it will give experienced developers an easy way to prove themselves and earn their place in the core team, and it will also provide some great opportunities for mentoring programs like the Google Summer of Code.</p>
<p><a href="http://subversion.apache.org/roadmap.html">The Subversion roadmap</a>, <a href="http://lwn.net/Articles/381794/">recently updated</a> by the core team, is another example of best practice in this area. In addition to a mixed features &amp; time based release cycle, they maintain a roadmap which has key goals for a release, but also includes a separate list of high priority features.</p>
<h2>The end result: Visibility</h2>
<p>The end result of a good roadmap process is that your users know where they stand, more or less, at any given time. Your developers know where you want to take the project, and can see opportunities to contribute. Your core team knows what the release criteria for the next release are, and you have agreed together mid-term and long-term goals for the project that express your common vision. As maintainer, you have a powerful tool to explain your decisions and align your community around your ideas. A good roadmap is the fertile soil on which your developer community will grow.</p>
<span class="net_nemein_favourites">7 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=b0efa548330211e0ba9db1fc5fd2489f489f&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/b0efa548330211e0ba9db1fc5fd2489f489f/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>1 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=b0efa548330211e0ba9db1fc5fd2489f489f&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/b0efa548330211e0ba9db1fc5fd2489f489f/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Mon, 07 Feb 2011 21:05:42 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-b0efa548330211e0ba9db1fc5fd2489f489f</guid>
        </item>
        <item>
            <title>The Lifecycle of a Patch (or: Working Upstream)</title>
            <link>https://blogs.gnome.org/bolsh/2011/01/14/the-lifecycle-of-a-patch/</link>
            <description><![CDATA[
<p><a href="http://www.neary-consulting.com/index.php/2011/01/14/the-lifecycle-of-a-patch/"><em>Reposted from Neary Consulting</em></a></p>
<p>Yesterday <a href="http://www.neary-consulting.com/index.php/2011/01/13/whats-involved-in-maintaining-a-package/">I looked into what it means to be a maintainer of a package</a>. Today, I&#8217;m going to examine how to affect change in a distribution like <a href="http://www.meego.com/">MeeGo</a>,  and what it means to work upstream. To do so, we&#8217;re going to look at  how code gets from a developer&#8217;s brain into the hands of a user.</p>
<p>So &#8211; how can you make a change in a Linux-based distribution? Here&#8217;s what happens when everything works as it should:</p>
<ol>
<li>You open a bug report for the feature against your distribution</li>
<li>You identify the module or modules you need to change to implement the new feature</li>
<li>You open bug reports for each of the modules concerned, detailing  the feature and the changes needed in that module for the feature</li>
<li>You write a patch to implement the feature, and propose it  (appropriately cut up for ease of review) to the maintainers of those  modules</li>
<li>Once the code has gone through the appropriate review process, it will be committed to the source control of the module(s)</li>
<li>Some time later, the maintainer of each module will include that code in a stable release of the module</li>
<li>Some time after that, the new stable versions will be packaged and uploaded to MeeGo</li>
<li>Your code will be included in the next release of the distribution following the upload.</li>
</ol>
<p>When people talk about &#8220;working upstream&#8221; in MeeGo or Linaro, this is what they mean.</p>
<p>To simplify matters for our analysis, let&#8217;s consider that the feature   we want to implement is self-contained in one module (or related   modules which release together). There are two different scenarios we&#8217;ll   consider:</p>
<ol>
<li>The module is maintained by people not associated with your distribution (for example, a GNU or GNOME project)</li>
<li>The module is maintained by people closely related to your distribution (for example, Unity in Ubuntu, or oFono in MeeGo)</li>
</ol>
<p>We will also look at a third situation, where you find and fix a bug   in the software you are using &#8211; that is, a released version of a   distribution (the proverbial &#8220;scratching an itch&#8221;).</p>
<p>For each case,  I will try to pick a representative feature/patch and  follow it from  developer through to distribution to Real Users.</p>
<h2>What if your code changes different projects?</h2>
<p>If your code touches several modules (for example, if you are proposing some new API in <a href="http://www.gtk.org/">GTK+</a> which you want to use in <a href="http://www.gimp.org/">the GIMP</a>)  then things can get complicated &#8211; you will need a stable version of  GTK+ to be released before you can ship a stable release of the GIMP  which depends on it.</p>
<p>This issue of staggered releases is one that Andrew Cowie <a href="http://mail.gnome.org/archives/desktop-devel-list/2006-September/msg00121.html">pointed out a few years ago for language bindings</a>.  To avoid making bindings on shifting sands, he preferred to package new  APIs once they had been included in a stable GNOME release. In turn,  Java GNOME developers rarely depend on development release bindings, and  they would wait for the new API to be included in a stable bindings  release. For example, the gtk_orientable_get_orientation, added to GTK+  at the end of September 2008, was released in GTK+ 2.16, in March 2009.  The first version of Java-GNOME which depended on GTK+ 2.16 was version  4.0.13, released in August 2009. That was packaged in distributions in  Autumn 2009, and so most users would not have access to the newer  bindings for a few months after that &#8211; perhaps early 2010 &#8211; at which  point, the API was written 18 months beforehand.</p>
<p>And that is when you have a regular release schedule you can rely on!  Pity the developer who wants to release a GIMP plug-in which depends on  some API included in GIMP 2.8 &#8211; the last stable GIMP release, 2.6, came  out in October 2008, and over two years later, 2.8 still has not  released. And when you combine unreliable release schedules for  distributions and applications, the results are cumulative: users of the  stable Debian distribution are still using GIMP 2.4 releases. The GIMP  2.4 released in October 2007. Features added to the GIMP in late 2007  are still not in the hands of users of stable Debian distributions.</p>
<h2>Getting features to users</h2>
<p>It is difficult to generalise when users upgrade their Linux  distributions, or even to say what proportion of Linux users are new  users at any given time. It would be over-simplifying to say that  developers use bleeding-edge distributions, power users upgrade early to  the latest and greatest, new users install the latest distributions  available, but will only upgrade every 18 months or so afterwards, and  conservative users stick with &#8220;Long term service&#8221; or stable  distributions. Most developers I know use their computer for work (and  thus want a stable distribution) and only install the latest versions of  various dependencies they need to work on their project. But let&#8217;s  generalise and say that this is roughly the case. So (guesstimating)  about 10% of your users will be upgrading to the latest distribution  very quickly after its release, a further 20% in the months after when  the bugs are shaken out, and the rest will follow along in their own  time, perhaps 12 or 18 months later.</p>
<p>To make this concrete, let&#8217;s follow the life of a single patch. This is complete <a href="http://www.urbandictionary.com/define.php?term=Anecdata">anecdata</a>,  but in my defence, the patch has been chosen by random, from a project  which I know has good community processes and release management in  place. The patch we&#8217;re going to follow adds an <a href="https://bugs.launchpad.net/inkscape/+bug/226001">extension to Inkscape to render objects along triangular paths</a>.</p>
<ol>
<li><a href="https://bugs.launchpad.net/inkscape/+bug/226001">Bug #226001 opened</a> on 2008-05-03 by inductiveload, with a description of the feature to be  added, and proposed code to implement it. The code, as an extension,  may have a lower bar for acceptance than code which is core to a  project.</li>
<li><a href="https://bugs.launchpad.net/inkscape/+bug/226001/comments/3">Patch submission reviewed</a> on 2008-05-03, minor comments, but patch is accepted (note: This was not the authors first submission to Inkscape)</li>
<li><a href="https://bugs.launchpad.net/inkscape/+bug/226001/comments/6">Patch corrected</a> to respond to comments and <a href="http://bazaar.launchpad.net/%7Einkscape.dev/inkscape/RELEASE_0_47_BRANCH/revision/5592">committed</a> on 2008-05-03 (did I mention these guys had good community processes!?!)</li>
<li><a href="http://wiki.inkscape.org/wiki/index.php/Release_notes/0.47">Inkscape 0.47-pre0</a>, containing the Triangle extension, released on 2009-07-02</li>
<li><a href="http://packages.ubuntu.com/karmic/graphics/inkscape">Inkscape 0.47-pre4</a> included in Ubuntu 9.10</li>
</ol>
<p>So for a feature developed in mid 2008, most Inkscape users will  still not have the feature by the end of 2009, 18 months later. This is  both a typical and atypical example: in many projects, patch proposals  lay unreviewed for days, weeks, sometimes months, but the 0.47 release  cycle was a particularly long one for Inkscape. However, I think the lag  from code written to presence on user&#8217;s hard drives of ~12 to 18 months is  about correct.</p>
<h2>Does it have to be this hard?</h2>
<p>If this were the only way to get features into a distribution, trying  to improve MeeGo by contributing upstream would be a very frustrating  experience. Happily, there are ways to accelerate the process. Taking the MeeGo kernel as an example, where <a href="http://lists.meego.com/pipermail/meego-kernel/2010-November/001469.html">Greg Kroah-Hartman recently threw in the towel</a> on persuading people to propose patches upstream; the process is supposed to work like this:</p>
<ol>
<li>Propose a patch for inclusion upstream. This patch will then ship in a future stable kernel release (let&#8217;s say 2.6.38).</li>
<li>After peer review, when the code has been accepted for inclusion in  the kernel upstream, propose a backport for inclusion in the MeeGo  kernel. The back-ported patch will be maintained across the next MeeGo  release, and will be dropped when the kernel version included in the  MeeGo project catches up with 2.6.38.</li>
</ol>
<p>The overhead here is reduced basically to the peer review process of  the upstream project, and the cumulative cost of merging a patch over  the course of 6 months.</p>
<p>As a distributor (or a developer working on a specific distribution),  this allows you to get code to everyone, eventually, and have that code  included in your distribution as soon as you are sure that it is up to  the standard expected by the community. Currently in MeeGo, the trend  seems to be more towards submitting patches concurrently upstream and to  MeeGo kernel maintainers (or even submitting them upstream once they  have been accepted into the MeeGo kernel). In the case that a patch  requires substantial modifications, or is rejected outright, upstream,  the kernel maintainers are then left carrying a patch indefinitely in  the distribution. For one patch, this might not be a big deal, but for  thousands of patches, the maintenance and integration burden of these  patches adds up.</p>
<p>It is also not unusual for kernel developers to maintain their own  git branches for a long time. Three examples that come to mind are  inotify, which Robert Love maintained for over a year for both Novell  and in the kernel before it was accepted into the mainline, ReiserFS,  which was maintained for several years out-of-tree before being shipped  with the Linux kernel in 2001, and the fast  desktop patchset which Con  Kolivas maintained for almost five years on the -ck kernel branch.  Distributions will occasionally ship a substantial diff to upstream if  there is a maintainer committed to getting the code upstream eventually.  Allocating someone to work over a long period to make everyone happy  and comfortable with your code may enable you to ship a big patch to  upstream, but this will not be sustainable long term.</p>
<p>To summarise: when working upstream, as a distribution, you should  only ship with patches which have been accepted in a development version  of upstream already, if you can help it.</p>
<h2>Meetings in telephone boxes</h2>
<p>Sometimes, however, when upstream and downstream coincide, you can  simplify things considerably, while also adding a small measure of risk.</p>
<p>In MeeGo, to continue with that example, the distribution architects have a pretty good idea when they can expect <a href="http://bugs.meego.com/show_bug.cgi?id=7947">emergency telephony</a> to be ready for oFono and the MeeGo telephony stack, because they&#8217;re  writing it. By co-ordinating the upstream release management with  downstream packaging, you can make promises as a distribution which you  can&#8217;t with community-developed software.</p>
<p>When upstream and downstream are co-ordinating each other, we cut out the middleman. The workflow becomes:</p>
<ol>
<li>Report a bug/feature request against a component of the distribution</li>
<li>Develop a patch which implements the feature, and submit it directly to the distribution bug tracker</li>
<li>Once it has been reviewed and accepted, you know that your patch will be included in the next version of the distribution.</li>
</ol>
<p>This gives a distribution much more control, both over what gets done, and when, and explains both the <a href="https://launchpad.net/ayatana">Ayatana</a> and MeeGo UX development projects. However, being able to plan around  the release is no guarantee that the  release will happen on time: GNOME  has in the past been stung by  planning during the 2.6 development  cycle to depend on a new version of  GTK+, only to find that the release  was delayed. In the end, the GTK+  release shipped in time for the 2.6  release at the end of March.</p>
<h2>Scratch scratch</h2>
<p>The other patch lifecycle I&#8217;d like to mention, because it is so relevant to distributions, was <a href="../2011/01/13/whats-involved-in-maintaining-a-package/#comment-3393">pointed out to me by Federico Mena Quintero yesterday</a>.  What happens to a patch that someone makes and submits to a  distribution when they find a bug in stable released software? This is  one of the key advantages of free software &#8211; if you find a bug in the  software you use, and you have the wherewithall, you can fix the bug and  share that fix with everyone else.</p>
<p>However, as we have seen, there is typically a lag of several months  from the time that software is released and the time it is being used by  large numbers of users through distributions. With releases of Red Hat  Enterprise Linux, Novell Suse Linux Desktop and Ubuntu LTS being  supported for up to 5 years, it is possible that important bugs will be  fixed in these stable versions for years after the original developers  have moved on, and are no longer maintaining older stable versions.</p>
<p>Let&#8217;s say I find and fix a bug in <a href="http://live.gnome.org/Rhythmbox">Rhythmbox</a> 0.12.5, which ships with Ubuntu 9.10. I open a bug report on Launchpad,  attach a fix to the source .deb there, and I update my local copy. As a  user, I&#8217;m happy &#8211; I have fixed my problem and shared the solution with  others. If I&#8217;m particularly conscientious, I might open a bug <a href="https://bugzilla.gnome.org/browse.cgi?product=rhythmbox">on gnome.org against Rhythmbox</a> and attach my patch there, but since the development version is now  0.13.2, the best you can hope for is that the patch applies cleanly to  the master branch, and will be included in the next release. It is very  unlikely that the upstream maintainers will release another update to  the 0.12 series at this point.</p>
<p>Now imagine that you are a maintainer for Suse, and someone reports  the same bug against a long-term service release.In practice, there are  several different versions being maintained by  different distributions,  and no good way to know if the same bug has  been reported and fixed by  someone else. You end up searching for a fix in upstream bug trackers,  and in the bug trackers of each of the other main distributions.  According to Federico at the time:</p>
<blockquote><p>Patches for old versions are traded in the black market.   You have friends in another distro?  You ask them first, &#8220;did you guys  already fix this?&#8221;  Those patches don&#8217;t ever manage to reach CVS, where  everyone would be able to get them.</p></blockquote>
<p>Ideally, you could collaborate ahead of time with other distributions  to ensure that you are all using the same branch of upstream modules,  and are committing patches upstream. <a href="http://thread.gmane.org/gmane.linux.kernel/939800">The Linux kernel is moving to this model</a>,  and there are also discussions underway in GNOME to co-ordinate this  type of activity. Mark Shuttleworth has also pushed for something  similar by encouraging projects in the core Linux platform to have <a href="http://www.markshuttleworth.com/archives/288">a regular cadence of releases</a>, so that everyone can synchronise their longer term service offerings every couple of years.</p>
<p>But at the moment, the best you can hope for is that your patch will  be included in an upcoming release for your distribution, and which  point other users of the distro can avail of it, and that upstream will  patch their development version and latest stable versions, and get your  patch to everyone in a few months.</p>
<h2>Working upstream</h2>
<p>The goal of this article is to explain what working upstream actually  means, and how to make that more palatable for a distribution that  wants to get features written and included in their next release.  Hopefully, by pointing out some of the shortcomings of the way patches  circulate from developers to users, some of these issues can be  addressed.</p>
<p>In any case, one thing is clear &#8211; if you are carrying a patch as a  distribution without ever submitting it upstream, you are making a  costly mistake. You will be carrying code that others won&#8217;t, and bearing  all of the merge and maintenance burden for that code for years to  come. The path to maximum happiness is to co-ordinate with other  distributions and with upstream to ensure that everyone is working in  the same place, and sharing work as much as possible.</p>
<span class="net_nemein_favourites">4 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=ce6c8c121ffc11e08441f91bfc4d7b477b47&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/ce6c8c121ffc11e08441f91bfc4d7b477b47/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>2 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=ce6c8c121ffc11e08441f91bfc4d7b477b47&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/ce6c8c121ffc11e08441f91bfc4d7b477b47/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Fri, 14 Jan 2011 15:45:15 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-ce6c8c121ffc11e08441f91bfc4d7b477b47</guid>
        </item>
        <item>
            <title>What’s involved in maintaining a package?</title>
            <link>https://blogs.gnome.org/bolsh/2011/01/13/whats-involved-in-maintaining-a-package/</link>
            <description><![CDATA[
<p><em>Reposted from <a href="http://www.neary-consulting.com/index.php/2011/01/13/whats-involved-in-maintaining-a-package/">Neary Consulting</a></em></p>
<p><a href="http://lists.meego.com/pipermail/meego-dev/2011-January/480975.html">An interesting question was asked on a MeeGo mailing list recently</a>: What does it mean to be a maintainer of something? How much time does it take to maintain software? It resulted in a short discussion which went down a few back alleys, and I think has some useful general information for people working with projects like MeeGo, which are part software development, part distribution.</p>
<h2>Are you maintaining software, or a package?</h2>
<p>The first question is whether you are asking about maintaining something in the <a href="http://www.debian.org/">Debian</a> sense, or the <a href="http://www.gnome.org/">GNOME</a> sense?</p>
<p><a href="http://www.debian.org/devel/join/newmaint">A Debian package maintainer</a>:</p>
<ul>
<li>Tracks upstream development, and ensures new releases of software are packaged and uploaded in a timely manner</li>
<li>Work with distribution users and other maintainers to identify bugs and integration issues</li>
<li>Ensure bugs and feature requests against upstream software are reported upstream, and bugs fixed upstream are propagated to the distribution packages</li>
<li>Fix any packaging related issues, and maintain any distribution-specific patches which have not (yet) been accepted or released upstream</li>
</ul>
<p><a href="http://live.gnome.org/MaintainersCorner">A GNOME project maintainer</a>:</p>
<ul>
<li>Makes regular releases of the software they maintain (typically a .tar.gz with &#8220;./configure; make; make install&#8221; to build)</li>
<li>Are the primary guardians of the roadmap for the module, and sets the priorities for the project</li>
<li>Works with packagers, documenters, translators and other contributors to the software to ensure clear communication of release schedules and  priorities</li>
<li>Acts as a central point of contact for release planning, bug reports and patch review and integration</li>
<li>A typical maintainer is also the primary developer of the software in question, but this is not necessarily the case</li>
</ul>
<p>Obviously, these two jobs are very different. One places a high priority on coding &amp; communication, another on integration, testing, and communication.</p>
<h2>So how much time does maintaining software take?</h2>
<p>Well, how long is a piece of string?</p>
<p>To give opposite extremes as examples: Donald Knuth probably spends a median time of 0 hours per week maintaining TeX and Metafont. On the other hand, Linus Torvalds has worked full time maintaining the Linux kernel for at least the past 15 years, and has been increasingly delegating large chunks of maintenance to lieutenants. The maintenance of the Linux kernel is a full time job for perhaps dozens of people.</p>
<p>On a typical piece of GNOME software (let&#8217;s take <a href="http://live.gnome.org/Brasero">Brasero</a> as an example) much of the work is simplified by following the <a href="http://live.gnome.org/ReleasePlanning">GNOME release schedule</a> &#8211; the schedule codifies string freezes and interface freezes to simplify the co-ordination of translation and documentation. In addition, outside of translation commits, Brasero has had contributions from its maintainer, Philippe Rouquier, and 6 other developers in the last 3 months. Most of these changes are related to the upcoming GTK+ 3 API changes, and involve members of the GTK+ 3 team helping projects migrate.</p>
<p>In total since the 2.32.0 release, there have been 55 commits relating to translations, 50 commits from Philippe, 9 from Luis Medina, co-maintainer of the module, and there were 4 commits by other developers. Of Philippe&#8217;s 50 commits, 14 were related to release management or packaging (&#8220;Update NEWS file&#8221;), 5 were committing patches by other developers that had gone through a review process, and the remainder were features, bug fixes or related to the move to the new GTK+. Of Luis&#8217;s commits, 2 were packaging related, and 2 were committing patches by other developers.</p>
<p>This is a lot of detail, but the point I am making is that the &#8220;maintenance&#8221; part of the work is relatively small, and that the bigger part of maintenance is actually sending out the announcements, paying attention to bug reports and performing timely patch review. I would be interested to know how much time Philippe has spent working on Brasero over the past release cycle. I would guess that he has spent a few hours (somewhere between 5 and 10) a week.</p>
<p>On the other hand, the Debian maintainer for the <a href="http://packages.debian.org/source/sid/brasero">Brasero package</a> has a different job. There are 6 bugs currently forwarded upstream from the Debian bug tracker, and another 35 or so awaiting some final determination. A number of these look like packaging bugs (&#8220;you need version X of dependency Y installed&#8221;). The last release packaged and uploaded was 2.30.3-2, dating from November, and there have been 4 releases packaged in the past 8 months, none by the maintainer.</p>
<p>A typical Debian maintainer is a &#8220;Debian developer&#8221; for several packages. Pedro Fragoso, the Debian maintainer of Brasero, <a href="http://qa.debian.org/developer.php?login=ember@ubuntu.com">maintains 5 packages</a>. I think it is fair to say that the amount of time a package maintainer spends maintaining an individual package is quite low, unless it is extremely popular. Perhaps a few hours a month.</p>
<p>The package maintainer has little or no say (beyond interacting with the project maintainer and forwarding on bug reports &amp; feature requests) in what happens upstream, or which features have a high priority. His influence comes primarily from the fact that he is representing a larger user base and can indicate which bugs his distro&#8217;s users are running into and reporting regularly, or which feature requests are generating a lot of feedback.</p>
<h2>What&#8217;s in a word?</h2>
<p>It&#8217;s clear that a package maintainer is not the same thing as a project maintainer. So when <a href="http://lists.meego.com/pipermail/meego-dev/2011-January/481045.html">Sivan asked on the MeeGo developer list</a> how he could become a maintainer, he clarified later to say that what he was really asking was &#8220;How can I affect change in MeeGo?&#8221; To do that, you need to write some code that changes a module, or a number of modules, and then you need to get that code into MeeGo.</p>
<p>How that happens, in all its gory details, is the next instalment in this series of at least 2 articles: <a href="http://blogs.gnome.org/bolsh/2011/01/14/the-lifecycle-of-a-patch/">The Lifecycle of a Patch (or: Working Upstream)</a>.</p>
<span class="net_nemein_favourites">6 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=f73f37b81f3c11e0a62d4958e92a39023902&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/f73f37b81f3c11e0a62d4958e92a39023902/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=f73f37b81f3c11e0a62d4958e92a39023902&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/f73f37b81f3c11e0a62d4958e92a39023902/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Thu, 13 Jan 2011 17:06:48 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-f73f37b81f3c11e0a62d4958e92a39023902</guid>
        </item>
        <item>
            <title>Community Building Guide</title>
            <link>https://blogs.gnome.org/bolsh/2011/01/06/community-building-guide/</link>
            <description><![CDATA[
<p>I wrote another guest article for the VisionMobile blog last week, which just went live yesterday, titled <a href="http://www.visionmobile.com/blog/2011/01/open-source-community-building-a-guide-to-getting-it-right/">&#8220;Open Source community building: a guide to getting it right&#8221;</a>.</p>
<p>Exerpt:</p>
<blockquote><p>Community software  development can be a powerful accelerator of adoption and development  for your products, and can be a hugely rewarding experience. Working  with existing community projects can save you time and money, allowing  you to get to market faster, with a better product, than is otherwise  possible. The old dilemma of “build or buy” has definitively changed, to  “build, buy or share”.</p>
<p>Whether you’re developing for Android, MeeGo , Linaro or Qt,  understanding community development is important. After embracing open  development practices, investing resources wisely, and growing your  reputation over time, you can cultivate healthy give-and-take  relationships, where everyone ends up a winner. The key to success is  considering communities as partners in your product development.</p>
<p>By avoiding the common pitfalls, and making the appropriate  investment of time and effort, you will reap the rewards. Like the  gardener tending his plants, with the right raw materials, tools and  resources, a thousand flowers will bloom.</p></blockquote>
<p>After <a href="http://conference2010.meego.com/session/community-anti-patterns">focusing recently</a> on a lot of the things that people do wrong, I wanted to identify some of the positive things that companies can do to improve their community development experiences: try to fit in, be careful who you pick to work in the community, and ensure that your developers are engaging the project well. If you are trying to grow a community development project around a piece of software, then you should ensure that you lower the barriers to entry for new contributors, ensure that you create a fair and just environment where everyone is subject to the same rules, and don&#8217;t let the project starve for lack of attention to things like patch review, communication, public roadmapping and mentoring.</p>
<p>The original title of the article was &#8220;Here be dragons: Best practices for community development&#8221; &#8211; I&#8217;ll let you decide whether the VisionMobile editors made a good decision to change it or not.</p>
<span class="net_nemein_favourites">7 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=5dd158c219ab11e0a80ca7a21a207ee37ee3&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/5dd158c219ab11e0a80ca7a21a207ee37ee3/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>1 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=5dd158c219ab11e0a80ca7a21a207ee37ee3&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/5dd158c219ab11e0a80ca7a21a207ee37ee3/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Thu, 06 Jan 2011 14:00:42 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-5dd158c219ab11e0a80ca7a21a207ee37ee3</guid>
        </item>
        <item>
            <title>Follow-up to “Shy Developer Syndrome”</title>
            <link>https://blogs.gnome.org/bolsh/2010/12/18/follow-up-to-shy-developer-syndrome/</link>
            <description><![CDATA[
<p><a href="http://www.neary-consulting.com/index.php/2010/12/18/follow-up-to-shy-developer-syndrome/"><em>Reposted from neary-consulting.com</em></a></p>
<p>My article on <a href="http://www.neary-consulting.com/index.php/2010/12/08/curing-shy-developer-syndrome/">&#8220;Shy Developer Syndrome&#8221;</a> a few weeks ago garnered quite a bit of interest, and useful feedback.  Since a lot of it adds valuable perspectives to the problem, I thought I  should share some of my favourite responses.</p>
<p>Here on <a href="../2010/12/08/curing-shy-developer-syndrome/">gnome.org</a>, <a href="../2010/12/08/curing-shy-developer-syndrome/#comment-3347">Rodney Dawes argued</a> that developers tend to stay away from mailing lists because the more public lists are very noisy:</p>
<blockquote><p>For me, mailing lists are a huge risk vs. low return  problem. They can  become a time sink easily, and it’s quite often that  pointless arguments  get started on them, as offshoots of the original  intent of the thread.  Web Forums also have this problem. And, to really  get much of anything  out of a list, you must subscribe to it, as not  everyone who replies, is  going to put you specifically in the  recipients headers. That means,  you’re now suddenly going to get a lot  more mail than you normally would  for any highly active project. And  for anyone trying to get involved in  an open source community, 99% of  the mail on that list is probably  going to be totally irrelevant to  them. It will just make tracking the  conversation they are trying to  have, much harder.</p></blockquote>
<p>I agree with Rodney that dealing with a new level of volume of email  is one of the trickiest things for new contributors. I still remember  when I signed up to lkml for an afternoon in college, only to find 200  new emails 3 hours later. I panicked, unsubscribed, and gave up that day  on being a Linux kernel hacker.</p>
<p>Since then, however, I have learned some email habits which are  shared by other free software hackers I know. Everyone I know has their  own tricks for working with medium or high volume mailing lists, and  some combination of them may make things livable for you, allowing you  to hear the signal without being drowned out by the noise. <a href="http://lifehackerbook.com/ch1/">LifeHacker is a good source of tips</a>.</p>
<p><a href="../2010/12/08/curing-shy-developer-syndrome/#comment-3349">Rob Staudinger</a> says something similar, pointing the finger at <a href="http://communitymgt.wikia.com/wiki/Bikeshedding">bikeshed discussions</a> as a big problem with many community lists:</p>
<blockquote><p>Will the zealots go and suggest postgresql’s process  model was poor, or  samba’s memory allocator sucks? Unlikely, but they  will tell you your  GUI was bad or that you’re using a package format  they don’t like, just  because it’s so easy to engage on that  superficial level.</p></blockquote>
<p><a href="http://lwn.net/Articles/419318/">Over at LWN</a>, meanwhile, <a href="http://lwn.net/Articles/419475/">Ciaran O&#8217;Riordan makes a good point</a>. Many developers working on free software want to separate their work and personal lives.</p>
<blockquote><p>When I leave the office at 6pm, my work should have no  more relevance  until the following morning.  Same when I quit a  company.  I might  choose to tell people where I work/worked, but it  should be a choice,  and I should be able to choose how much I tell  people about my work.   Having mailing list posts and maybe even cvs  commits might be too  detailed.  Maybe waaay too detailed.</p></blockquote>
<p>Finally, <a href="http://www.neary-consulting.com/index.php/2010/12/08/curing-shy-developer-syndrome/">over at neary-consulting.com</a>, <a href="http://www.neary-consulting.com/index.php/2010/12/08/curing-shy-developer-syndrome/#comment-203">MJ Ray suggested</a> that asking individuals to respond to a request can backfire:</p>
<blockquote><p>Publicly referring to individuals on a mailing list is a  double-edged  sword.  It might bolster the confidence of the named  individual, but it  also reduces the confidence of other people who  might have answered the  question.  In general, I feel it’s best not to  personalise comments  on-list.  Some e-democracy groups require all  messages to be addressed  to a (fictional or powerless) chair or editor,  similar to the letters  pages of The Times.</p></blockquote>
<p>While I agree with MJ in situations where the answer is accessible to  the wider community, but often only developers working for you, the  manager, are in a position to reply &#8211; at that point, you have a choice:  get the information off your developer and answer yourself, or ask him  to answer the question. and I&#8217;ve found that asking on the list has the  positive side-effects I mentioned.</p>
<span class="net_nemein_favourites">7 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=6479ac940aef11e0a52e7d7d9c0860406040&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/6479ac940aef11e0a52e7d7d9c0860406040/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=6479ac940aef11e0a52e7d7d9c0860406040&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/6479ac940aef11e0a52e7d7d9c0860406040/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Sat, 18 Dec 2010 21:29:12 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-6479ac940aef11e0a52e7d7d9c0860406040</guid>
        </item>
        <item>
            <title>Curing “Shy Developer Syndrome”</title>
            <link>https://blogs.gnome.org/bolsh/2010/12/08/curing-shy-developer-syndrome/</link>
            <description><![CDATA[
<p><em><a href="http://www.neary-consulting.com/index.php/2010/12/08/curing-shy-developer-syndrome/">From the Neary Consulting blog</a>:</em></p>
<p>One of the most common issues I have seen with experienced  professional software developers who start to work on community software  is a reluctance to engage with public communication channels like  mailing lists. Understanding the reasons why, and helping your  developers overcome their timidity, is key to creating a successful and  fruitful relationship with the community you are working with.</p>
<p>In my experience, common reasons for this timidity are a lack of  confidence in written English skills, or technical skills, nervousness  related to public peer review, and seeing community interaction as  &#8220;communication&#8221; or &#8220;marketing&#8221; (which are not part of their job), rather  than just &#8220;getting stuff done&#8221; (which, of course, is part of their  job).</p>
<p><a href="http://www.neary-consulting.com/index.php/2010/12/08/curing-shy-developer-syndrome/"><em>Read more&#8230;</em></a></p>
<span class="net_nemein_favourites">4 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=a9c60b16032511e0ae2de975ca2db4a3b4a3&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/a9c60b16032511e0ae2de975ca2db4a3b4a3/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=a9c60b16032511e0ae2de975ca2db4a3b4a3&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/a9c60b16032511e0ae2de975ca2db4a3b4a3/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Wed, 08 Dec 2010 19:39:37 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-a9c60b16032511e0ae2de975ca2db4a3b4a3</guid>
        </item>
        <item>
            <title>MeeGo Conference: building bridges (literally!)</title>
            <link>https://blogs.gnome.org/bolsh/2010/11/14/meego-conference-building-bridges-literally/</link>
            <description><![CDATA[
<p>As part of the <a href="http://conference2010.meego.com/program/early-bird-events">early bird events</a> before the <a href="http://conference2010.meego.com/">MeeGo conference</a> this week, I ran a lollipop bridge building contest last night at the conference venue. The rules were simple: 100 lollipop sticks, a glue gun, and you have to bridge a 40cm gap, and resist as much weight as possible. We had about 40 participants, and 10 bridges entered.</p>
<p>There were two awards: prettiest bridge and strongest bridge. Obviously, the prettiest bridge contest was judged first.</p>
<div style="width: 510px" class="wp-caption aligncenter"><a href="http://www.flickr.com/photos/bolsh/5174821990/"><img title="Before..." src="http://farm5.static.flickr.com/4145/5174821990_ef73b51cd7.jpg" alt="Before..." width="500" height="375" /></a><p class="wp-caption-text">Before...</p></div>
<p>The results were really impressive! The prettiest bridge was designed by Team Symbio, Ville Kankainen, Ilkka Maki, Henri Ranki and Márton Ekler. It was a beautiful arch bridge.</p>
<div style="width: 510px" class="wp-caption aligncenter"><a href="http://www.flickr.com/photos/bolsh/5174214775/"><img title="Team Symbio working on the prettiest bridge" src="http://farm5.static.flickr.com/4128/5174214775_75e1f69283.jpg" alt="Team Symbio working on the prettiest bridge" width="500" height="375" /></a><p class="wp-caption-text">Team Symbio working on the prettiest bridge</p></div>
<p>The winning bridge, made by the team &#8220;The Unbreakables&#8221;, Casper van Donderen, Dan Leinir Turthra Jensen and Sivan Greenberg, survived the shopping basket we used as the breaking tool, with 25 1L bottles of water on top &#8211; impressive! The bridge was eventually broken when Chani tried to hang off it.</p>
<div style="width: 510px" class="wp-caption aligncenter"><a href="http://www.flickr.com/photos/bolsh/5174823784/"><img title="The Unbreakables" src="http://farm5.static.flickr.com/4151/5174823784_1325870043.jpg" alt="Very smug looking - the bridge survived all the weight we had" width="500" height="375" /></a><p class="wp-caption-text">The Unbreakables - looking very smug</p></div>
<p>Some of the bridges held quite a lot of weight &#8211; and broke very spectacularly!</p>
<p style="text-align: center;">
<div style="width: 510px" class="wp-caption aligncenter"><a href="http://www.flickr.com/photos/bolsh/5174825156/"><img title="...and after" src="http://farm5.static.flickr.com/4091/5174825156_fbb7cef54b.jpg" alt="The 9 bridges we managed to break during judging." width="500" height="375" /></a><p class="wp-caption-text">...and after</p></div>
<span class="net_nemein_favourites">7 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=7fef7226eff411df8573e94c4e0cbdcabdca&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/7fef7226eff411df8573e94c4e0cbdcabdca/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=7fef7226eff411df8573e94c4e0cbdcabdca&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/7fef7226eff411df8573e94c4e0cbdcabdca/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Sun, 14 Nov 2010 13:06:01 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-7fef7226eff411df8573e94c4e0cbdcabdca</guid>
        </item>
        <item>
            <title>MeeGo Progress Report</title>
            <link>http://blogs.gnome.org/bolsh/2010/11/08/meego-progress-report/</link>
            <description><![CDATA[
<p>Some of you may be interested in a guest article I wrote for <a href="http://www.visionmobile.com/blog/">the VisionMobile blog</a> reviewing the state of MeeGo eight months after its announcement: <a href="http://www.visionmobile.com/blog/2010/11/the-meego-progress-report-a-or-d/">&#8220;The MeeGo Progress Report&#8221;</a></p>
<p>Some excerpts:</p>
<p>On the state of the MeeGo application developer story:</p>
<blockquote><p>From the point of view of tools, documentation and software distribution  channels, MeeGo is undoubtedly behind its primary competitors – but for  such a young project, this is to be expected. The success of the  project among application developers and the free software community  will depend to a large extent on the project’s ability to fill these  gaps and provide developers with an excellent development experience.</p></blockquote>
<p>On the openness of the project:</p>
<blockquote><p>[...] In the mobile platform development world, it is fair to say that MeeGo is second to none in terms of its open development model.</p></blockquote>
<p>On comparisons with Android and iOS:</p>
<blockquote><p>It does not feel fair at this point to compare MeeGo, a project which  came into being 8 months ago, with iOS or Android, but this is the  yardstick which will be used when the first MeeGo smartphone comes on  the market. The project has come a long way since its inception, in  particular in working towards an open and transparent development model.  There is still some way to go but improvements have been happening  daily.</p></blockquote>
<span class="net_nemein_favourites">11 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=4b9abff0eb0b11df89081707e2657f367f36&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/4b9abff0eb0b11df89081707e2657f367f36/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=4b9abff0eb0b11df89081707e2657f367f36&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/4b9abff0eb0b11df89081707e2657f367f36/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Mon, 08 Nov 2010 07:37:10 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-4b9abff0eb0b11df89081707e2657f367f36</guid>
        </item>
        <item>
            <title>GNOME Training confirmed!</title>
            <link>http://blogs.gnome.org/bolsh/2010/07/02/gnome-training-confirmed/</link>
            <description><![CDATA[
<p>A few days ago, I took the risk of <a href="http://blogs.gnome.org/bolsh/2010/06/28/gnome-developer-training-in-danger/">setting off alarm bells</a> on the <a href="http://guadec.org/index.php/guadec/2010/schedConf/training">GNOME developer training sessions</a> planned for GUADEC this year. It was a risk, and comments from the naysayers reminded me that it&#8217;s easier to do nothing than it is to take a risk. I&#8217;m happy to say that the risk paid off.</p>
<p>Thanks to all who spread the word, a couple of prospects I was aware of confirmed their presence on the course, and I received a new group booking. The training is now feasible, and we are confirming that it will happen. There is still room on the course, and I expect to sell a few more spots in the coming days.</p>
<p>I did get <a href="http://twitter.com/scaroo/status/17276425378">one interesting suggestion</a> in a Twitter reply to the announcement, and I&#8217;ve adopted it. If you are interested in attending one or two of the modules (say, community processes and the GNOME platform overview, but not the practical session or Linux developer tools), you can do so for the much lower price of €400 per module and €750 for two modules, not including a GUADEC registration.</p>
<p>Anyone who would like to avail of this offer, please contact me, and we will take care of getting you signed up.</p>
<p>Thank you all for your help and support!</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">http://blogs.gnome.org/bolsh/2010/06/28/gnome-developer-training-in-danger/</div>
<span class="net_nemein_favourites">5 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=88fafa20860911df919081b02662ccfeccfe&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/88fafa20860911df919081b02662ccfeccfe/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>1 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=88fafa20860911df919081b02662ccfeccfe&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/88fafa20860911df919081b02662ccfeccfe/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Fri, 02 Jul 2010 17:50:15 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-88fafa20860911df919081b02662ccfeccfe</guid>
        </item>
        <item>
            <title>Sabotage and free software</title>
            <link>http://blogs.gnome.org/bolsh/2010/06/16/sabotage-and-free-software/</link>
            <description><![CDATA[
<p>Who knew that educating people in simple sabotage (defined as sabotage not requiring in-depth training or materials) could have so much in common with communicating free software values? I read the <a href="http://cgsc.cdmhost.com/cdm4/item_viewer.php?CISOROOT=/p4013coll9&amp;CISOPTR=307&amp;CISOBOX=1&amp;REC=4">OSS Simple Sabotage Field Manual</a> (pdf) which has been doing the rounds of management and security blogs recently, and one article on &#8220;motivating saboteurs&#8221; caught my eye enough to share:</p>
<blockquote><p><strong>Personal Motives</strong></p>
<ul>
<li> The ordinary citizen very probably has no immediate personal motive for committing simple sabotage. Instead, he must be made to anticipate indirect personal gain, such as might come with enemy evacuation or destruction of the ruling gov­ernment group. Gains should be stated as specifically as possible for the area addressed: simple sabotage will hasten the day when Commissioner X and his deputies Y and Z will be thrown out, when particu­larly obnoxious decrees and restrictions will be abolished, when food will arrive, and so on. Abstract verbalizations about personal liberty, freedom of the press, and so on, will not be convincing in most parts of the world. In many areas they will not even be comprehensible.</li>
<li>Since the effect of his own acts is limited, the saboteur may become discouraged unless he feels that he is a member of a large, though unseen, group of saboteurs operating against the enemy or the government of his own country and elsewhere. This can be conveyed indirectly: suggestions which he reads and hears can include observations that a particular technique has been successful in this or that district. Even if the technique is not applicable to his surroundings, another&#8217;s success will encourage him to attempt similar acts. It also can be conveyed directly: statements praising the effectiveness of simple sabotage can be contrived which will be pub­lished by white radio, freedom stations, and the sub­versive press. Estimates of the proportion of the population engaged in sabotage can be disseminated. Instances of successful sabotage already are being broadcast by white radio and freedom stations, and this should be continued and expanded where com­patible with security.</li>
<li>More important than (a) or (b) would be to create a situation in which the citizen-saboteur acquires a sense of responsibility and begins to educate others in simple sabotage.</li>
</ul>
</blockquote>
<p>Now doesn&#8217;t that sound familiar? Trying to convince people that free software is good for them because of the freedom doesn&#8217;t work directly &#8211; you need to tie the values of that freedom to something which is useful to them on a personal level.</p>
<p>&#8220;You get security fixes better <strong>because</strong> people can read the code&#8221;, &#8220;You have a wide range of support options for Linux <strong>because</strong> it&#8217;s free software and anyone can understand it&#8221;, &#8220;Sun may have been bought by Oracle, but you can continue to use the same products <strong>because</strong> anyone can modify the code, so others have taken up the maintenance, support and development burden&#8221;, and so on.</p>
<p>Providing (custom tailored) concrete benefits, which comes from freedom is the way to motivate people to value that freedom.</p>
<p>In addition, the point on motivation struck a cord &#8211; you need to make people feel like they belong, that their work means something, that they&#8217;re not alone and their effort counts, or they will become discouraged. A major job in any project is to make everyone feel like they&#8217;re driving towards a goal they have personally bought into.</p>
<p>Finally, you will only have succeeded when you have sufficiently empowered a saboteur to the point where they become an advocate themselves, and start training others in the fine arts &#8211; and this is a major challenge for free software projects too, where we often see people with willingness to do stuff, and have some difficulty getting them to the point where they have assimilated the project culture and are recruiting and empowering new contributors.</p>
<p>For those who haven&#8217;t read it yet, the document is well worth a look, especially the section on &#8220;General Interference with Organisations and Production&#8221;, which reads like a litany of common anti-patterns present in most large organisations; and if you never knew how to start a fire in a warehouse using a slow fuse made out of rope and grease, here&#8217;s your chance to find out.</p>
<span class="net_nemein_favourites">9 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=dfee7134793b11df8f51e10efce0a9aaa9aa&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/dfee7134793b11df8f51e10efce0a9aaa9aa/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=dfee7134793b11df8f51e10efce0a9aaa9aa&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/dfee7134793b11df8f51e10efce0a9aaa9aa/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Wed, 16 Jun 2010 10:50:49 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-dfee7134793b11df8f51e10efce0a9aaa9aa</guid>
        </item>
        <item>
            <title>GNOME Developer Training at GUADEC</title>
            <link>http://blogs.gnome.org/bolsh/2010/05/19/gnome-developer-training-at-guadec/</link>
            <description><![CDATA[
<p>I&#8217;m delighted to announce the availability of <a href="http://guadec.org/index.php/guadec/2010/schedConf/training">GNOME Developer Training</a> at GUADEC this year. It&#8217;s been brewing for a while, but you can now <a href="http://register.guadec.org">register</a> for the training sessions on the GUADEC website.</p>
<p>Fernando Herrera, Claudio Saavedra, Alberto Garcia and myself will be running the two-day course, covering the basics of a Linux development environment and developer tools, the GNOME stack, including freedesktop.org components, and the social aspects of working with a free software project, being a good community citizen, getting your code upstream, and gaining influence in projects you work with.</p>
<p>The developer tools section will go beyond getting you compiling the software to also present mobile development environments, and the tools you can use to profile your apps, or diagnose I/O or memory issues, dealing with the vast majority of performance issues developers encounter.</p>
<p>This is the first time I have seen a training course which treats the soft science of working with free software communities, and given the number of times that people working in companies have told me that they need help in this area, I believe that this is satisfying a real need.</p>
<p>We are keeping the numbers down to ensure that the highest quality training &amp; individual attention is provided &#8211; only 20 places are available. The pricing for the training course is very competitive for this type of course &#8211; €1500 per person, including training, meals and printed training materials, and a professional registration to GUADEC, worth €250.</p>
<p>If you register before June 15th, you can even get an additional discount &#8211; the early bird registration price is only €1200 per person.</p>
<p>I&#8217;m really excited about this, and I hope others will be too. This is the first time that we will have done training like this in conjunction with GUADEC, and I really hope that this will bring some new developers to the conference for the week, as well as being a valuable addition to the GUADEC event.</p>
<span class="net_nemein_favourites">6 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=cb56765e639711df8bced56795429ffb9ffb&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/cb56765e639711df8bced56795429ffb9ffb/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>2 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=cb56765e639711df8bced56795429ffb9ffb&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/cb56765e639711df8bced56795429ffb9ffb/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Wed, 19 May 2010 22:31:38 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-cb56765e639711df8bced56795429ffb9ffb</guid>
        </item>
        <item>
            <title>Comparing Maemo &amp; Ubuntu</title>
            <link>http://blogs.gnome.org/bolsh/2010/05/03/comparing-maemo-ubuntu/</link>
            <description><![CDATA[
<p>While I&#8217;ve occasionally been critical of Ubuntu as a project, it is a distribution with very open processes, for the most part.</p>
<p>I&#8217;d like to compare the experience of a casual Ubuntu user, an engaged Ubuntu user, an Ubuntu developer, and an upstream application developer to the equivalent MeeGo or Maemo experiences.</p>
<p>The casual Ubuntu user gets regular stable updates on a predictable schedule, with long-term supported versions less frequently, but still on a predictable schedule. Stability, releases, this user doesn&#8217;t want to know what happens behind the scene, he wants to get software when it&#8217;s &#8220;done&#8221;.</p>
<p>The engaged Ubuntu user can activate an unstable development distribution, and see the work going in as it&#8217;s being done! He updates daily, gets the latest and greatest, and occasionally stuff doesn&#8217;t work, but he doesn&#8217;t mind. The information how to do this isn&#8217;t on page one of ubuntu.com, but it&#8217;s there, and engaged users tell each other about it.</p>
<p>The Ubuntu developer can participate in the creation of the process by packaging his favourite software, pushing it through a public (although occasionally real-time &amp; in-person) process for inclusion in the holy grail &#8211; default installation, or presence on the install CD. He can take care of packaging, shepherd the package through QA, ensure that problems get reported upstream and in general ensure that his package is a good Ubuntu citizen. Even if he doesn&#8217;t get the package in the default install, which is quite tough, he can follow public community processes to have it available in the Universe, available to every single Ubuntu user through a simple search of available applications.</p>
<p>The upstream developer doesn&#8217;t really care that much about Ubuntu. He develops his application, sees bug reports coming in from users &amp; developers &amp; downstream packagers. He adds features, and concentrates on what he loves best &#8211; coding the best app he can.</p>
<p>Now, compare that experience to Maemo, to see how we compare:</p>
<p>For the casual user, not much changes. He gets the software on a device, when it&#8217;s &#8220;done&#8221; (and the definition of done is considerably different for a phone than a PC distribution).</p>
<p>For the engaged user, who wants to follow the bleeding edge, the story gets murkier. In the Maemo world, hardware and software releases have been closely related. Without a Beagleboard or a prototype N900, Fremantle wouldn&#8217;t have been very useful. But even operating system updates like the upcoming long awaited PR1.2 are not packaged and prepared in public, so even existing N900 owners can&#8217;t follow along with the cutting edge.</p>
<p>There is a promise that the first release of MeeGo will work well on the N900, so potentially there is an opportunity for the engaged MeeGo user to follow along with unstable development &#8211; on condition that, like the engaged Ubuntu developer, they&#8217;re prepared for the occasional bricking &amp; reflash. But the UX software for MeeGo is being prepared for release &#8211; we are told that some closed components are being opened, some others are not ready for release yet. So it is not (yet) possible for an engaged MeeGo or Maemo user to follow along &amp; install a base alpha or beta distribution and update or reflash regularly.</p>
<p>For packagers who would like to propose their software for inclusion in the default repository, or even on the default install, of MeeGo or Maemo, there is not (yet) a clear path to get involved in the process. I could start working on a Maemo port of <a href="http://www.qutecom.org">QuteCom</a>, <a href="http://yorba.org/shotwell/">Shotwell</a> or some other software, but if I did, there&#8217;s no way for me to get that software included by default. The current Extras/Extras-testing policy of Maemo has been <a href="http://www.mail-archive.com/maemo-developers@maemo.org/msg22936.html">heavily</a> <a href="http://www.mail-archive.com/maemo-developers@maemo.org/msg20678.html">criticise</a>d by some developers &#8211; so it might not even be easy for me to make my software available to a large number of Maemo issues.</p>
<p>The upstream developer experience doesn&#8217;t change that much. Upstream developers still shouldn&#8217;t care about what packagers are doing, and should be concentrating on making the best apps possible. But for major parts of the MeeGo platform, namely the UX projects, the upstream and downstream will be hard to separate. As an upstream developer, I care about being able to follow commits, read Changelogs, do code review, develop and propose features, fix bugs and so on, in the open. For unrelated upstream projects, things also change &#8211; due to form factor and UX guidelines, the developer really needs to do a tailor-made UI for MeeGo or Maemo, requiring effort not being spent on features. And because you&#8217;re doing embedded development, your development environment becomes that much more complicated, with emulators and cross compilers and SDKs.</p>
<p>The embedded world is a special place, a lot of things change from desktop development, and some of those changes come with the territory. You&#8217;re going to have to work with a device emulator, and anything that requires a SIM card, the GPS, camera, accelerometer or any other hardware features, well, you&#8217;re going to have to wait for a device to make 100% sure those work. But we can certainly bear in mind the Ubuntu user experience(s) when we are designing the MeeGo community, and ensure that their experience is just as open.</p>
<p>That means open code, and more importantly open processes. It means an engaged user being able to use software that isn&#8217;t ready, a packager being able to propose software for inclusion in the OS and ensure its availability to all users of the distribution by following a well defined process, and a developer having a great experience helping to develop great applications.</p>
<span class="net_nemein_favourites">22 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=02332b4056f011df934945327c23a202a202&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/02332b4056f011df934945327c23a202a202/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=02332b4056f011df934945327c23a202a202&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/02332b4056f011df934945327c23a202a202/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Mon, 03 May 2010 17:49:15 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-02332b4056f011df934945327c23a202a202</guid>
        </item>
        <item>
            <title>Maemo Community Council voting open</title>
            <link>http://blogs.gnome.org/bolsh/2010/03/23/maemo-community-council-voting-open/</link>
            <description><![CDATA[
<p>The voting tokens have just been sent out for the Q1 2010 Maemo Community Council elections.</p>
<p>I already have over 100 bounced emails, so if you think that you should have a vote and you have not received an email with a voting token yet, please send me an email or leave a comment, I will look up your Maemo username and send you on the voting token/email combo we have on record so that you can vote.</p>
<p>Voting runs until March 30th &#8211; you can find more information about the <a href="http://wiki.maemo.org/Community_Council/Council_election_Q1_2010">election</a> and the <a href="http://wiki.maemo.org/Community_Council">council</a> in the Maemo wiki.</p>
<span class="net_nemein_favourites">27 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=d1247edc36ab11df84554f76d0a90bae0bae&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/d1247edc36ab11df84554f76d0a90bae0bae/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=d1247edc36ab11df84554f76d0a90bae0bae&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/d1247edc36ab11df84554f76d0a90bae0bae/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Tue, 23 Mar 2010 17:44:29 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-d1247edc36ab11df84554f76d0a90bae0bae</guid>
        </item>
        <item>
            <title>GUADEC Call for participation deadline – arriving fast!</title>
            <link>http://blogs.gnome.org/bolsh/2010/03/15/guadec-call-for-participation-deadline-arriving-fast/</link>
            <description><![CDATA[
<p>I just realised this morning that after a very long call for participation period, we&#8217;re now in <a href="http://cfergeau.blogspot.com/2010/03/guadec-call-for-papers-deadline.html">the last week</a> before the <a href="http://guadec.org/index.php/guadec/2010/schedConf/cfp">call for participation deadline for GUADEC</a> &#8211; you should have proposals in by 23:59 UTC on March 20th to be eligible for selection (although a little birdie tells me that might get extended to the end of the weekend). Of course, I knew that the deadline was sometime in the end of March, but I didn&#8217;t realise that we&#8217;d gotten so far through the calendar!</p>
<p>So <a href="http://guadec.org/index.php/guadec/2010/presenter/submit/1">get your proposals in</a> about all things GNOME, GNOME 3, GNOME Mobile, usability, accessibility, webability, open data, free services, scaling the community, developer tools, whatever &#8211; but get them in quick. It&#8217;s better to get a poor proposal in now &amp; improve it next week than wait until next week to polish what you have now.</p>
<p>For guidelines on a good talk proposal, I really like <a href="http://www.oscon.com/oscon2009/public/cfp/57">the OSCON guidelines</a> as a list of good dos &amp; don&#8217;ts for conference proposals &#8211; in general, make the proposal (and your presentation, if accepted) not about you or your project, but about your audience and what they can do with your project &#8211; so clearly identify the target audience &amp; why they would attend, and make the title short &amp; action-based, rather than vague, weird or overly clever.</p>
<p>Good luck to <a href="http://cfergeau.blogspot.com/">teuf</a> and his merry band evaluating all the proposals!</p>
<span class="net_nemein_favourites">12 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=e39dda04304811dfa6d161be7c3f17901790&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/e39dda04304811dfa6d161be7c3f17901790/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=e39dda04304811dfa6d161be7c3f17901790&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/e39dda04304811dfa6d161be7c3f17901790/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Mon, 15 Mar 2010 15:08:18 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-e39dda04304811dfa6d161be7c3f17901790</guid>
        </item>
        <item>
            <title>2009 blog links collection</title>
            <link>http://blogs.gnome.org/bolsh/2009/12/24/2009-blog-links-collection/</link>
            <description><![CDATA[
<p>Looking back on 2009, I wrote quite a bit on here which I would like to keep and reference for the future.</p>
<p>This is a collection of my blog entries which gave, in my opinion, the most food for thought this year.</p>
<p><strong>Free software business practice<br />
</strong></p>
<ul>
<li> <a href="http://blogs.gnome.org/bolsh/2009/01/29/pure-software-is-not-the-only-way-to-go/">Pure software is not the only way to go</a></li>
<li><a href="http://blogs.gnome.org/bolsh/2009/02/01/free-software-consulting-marketing-business-model/">Free Software consulting: marketing &amp; business model </a></li>
<li><a href="http://blogs.gnome.org/bolsh/2009/05/20/too-many-platforms/">Too many platforms?</a></li>
<li><a href="http://blogs.gnome.org/bolsh/2009/09/17/the-value-of-engagement/">The value of engagement</a></li>
<li> <a href="http://blogs.gnome.org/bolsh/2009/09/28/estimating-merge-costs/">Estimating merge costs</a></li>
</ul>
<p><strong>Community dynamics and governance<br />
</strong></p>
<ul>
<li> <a href="http://blogs.gnome.org/bolsh/2009/04/01/how-do-you-count-your-community-size/">How do you count your community size? </a></li>
<li> <a href="http://blogs.gnome.org/bolsh/2009/04/01/decision-making-critical-mass/">Decision making &amp; critical mass</a></li>
<li><a href="http://blogs.gnome.org/bolsh/2009/02/20/governance-best-practices/">Governance best practices</a></li>
<li><a href="http://blogs.gnome.org/bolsh/2009/05/18/community-analysis-as-risk-management/">Community analysis as risk management</a></li>
<li><a href="http://blogs.gnome.org/bolsh/2009/05/07/football-clubs-and-free-software-projects/">Football clubs and free software projects</a></li>
<li><a href="http://blogs.gnome.org/bolsh/2009/07/22/barriers-to-community-growth/">Barriers to community growth</a></li>
</ul>
<p><strong>Software licensing &amp; other legal issues<br />
</strong></p>
<ul>
<li> <a href="http://blogs.gnome.org/bolsh/2009/04/08/copyright-assignment-and-other-barriers-to-entry/">Copyright assignment and other barriers to entry</a></li>
<li><a href="http://blogs.gnome.org/bolsh/2009/07/02/why-i-disagree-with-rms-concerning-mono/">Why I disagree with RMS concerning Mono</a></li>
<li> <a href="http://blogs.gnome.org/bolsh/2009/12/23/side-effects-of-copyright-assignment/">Side-effects of copyright assignment</a></li>
</ul>
<p><strong>Other general stuff</strong></p>
<ul>
<li><a href="http://blogs.gnome.org/bolsh/2009/10/10/giving-great-presentations-speaker-notes/">Giving Great Presentations – speaker notes</a></li>
<li><a href="http://blogs.gnome.org/bolsh/2009/11/23/running-advice/">Running advice</a></li>
</ul>
<p>Happy Christmas everyone, and have a great 2010.</p>
<span class="net_nemein_favourites">8 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=9231eb84f0a511de89e0fdcebfc939fb39fb&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/9231eb84f0a511de89e0fdcebfc939fb39fb/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>5 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=9231eb84f0a511de89e0fdcebfc939fb39fb&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/9231eb84f0a511de89e0fdcebfc939fb39fb/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Thu, 24 Dec 2009 14:57:37 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-9231eb84f0a511de89e0fdcebfc939fb39fb</guid>
        </item>
        <item>
            <title>Giving Great Presentations – speaker notes</title>
            <link>http://blogs.gnome.org/bolsh/2009/10/10/giving-great-presentations-speaker-notes/</link>
            <description><![CDATA[
<p>Earlier today I gave <a href="http://wiki.maemo.org/Maemo_Summit_2009/Schedule/Lightning_talks#Giving_Great_Presentations">a lightning talk</a> on giving great presentations at the <a href="http://wiki.maemo.org/Maemo_Summit_2009">Maemo Summit</a>. The response has been great, and here are the notes I wrote for the presentation, so that people can refer back tol the advice when the time comes.</p>
<h2>Giving Great Presentations</h2>
<p>It was said that when Cicero finished speaking, people turned to each other and said &#8220;that was a great speech&#8221;. But when Demosthenes finished speaking, people said &#8220;we must march&#8221;.</p>
<p>Throughout history, great orators have changed the world. Entire movements can grow from the powerful communication of an idea.</p>
<p>Yet most technical presentations are horrible. Slides filled with bullet points, and monotone delivery. How many people here have asked themselves at one stage or another during a presentation, &#8220;why am I here?&#8221;</p>
<p>You might not be Obama, but you can still give better presentations. Here are some basic tips for improving. Nothing I&#8217;m going to say here is difficult, but there are no easy fixes either.</p>
<h3>Think of your audience</h3>
<p>The first tip is for when you are considering giving a presentation, and when you start writing your content. Think of what your audience will get from your presentation. What&#8217;s in it for them?</p>
<p>If your point is &#8220;to talk about&#8230;&#8221; you&#8217;re off track. You will put your audience to sleep. Seriously.<br />
If you want to share some information, why not just write a blog entry? Why do you need to be in the room?</p>
<p>People don&#8217;t care about you. They care about themselves. So make your presentation about them.</p>
<p>A presentation is a sales pitch. You are there to convince people of something. Maybe it&#8217;s an idea you want them to believe. Maybe it&#8217;s a product you want them to use. If you&#8217;re not *selling* something, why are you giving a presentation? You may as well write a blog entry, and stay at home.</p>
<p>So cut to the chase. When you&#8217;re thinking about your presentation, think about one core question: What do I want audience members to do once they&#8217;ve seen my presentation? And then make sure everything in your presentation is driving towards that goal.</p>
<h3>Tell a story</h3>
<p>The best way to convince someone of something is to entertain them. And stories are entertaining. Some people are funny, and can use humour to entertain. I&#8217;m not funny. But everyone can tell a story.</p>
<p>Human beings are natural storytellers. And stories are a wonderful way to get a point across, especially if you structure your narrative well.</p>
<p>One possible narrative you could use is this:</p>
<ol>
<li>Problem statement</li>
<li>Proposed solution</li>
<li>Supporting evidence</li>
<li>Conclusion</li>
</ol>
<p>It&#8217;s important to finish your presentation will a call to action. Make people march. The action can be small. Integrate the key lesson of your presentation into their work. Download an SDK and try out some sample apps. Write a letter to a local politician. Donate to your cause.</p>
<p>But make it clear to people what you want from them.</p>
<h3>Presentation design</h3>
<p>The third suggestion is to design slides to compliment what you say, rather than repeat it.</p>
<p>Don&#8217;t write everything you&#8217;re going to say on the slide. Otherwise people will just read it, and won&#8217;t concentrate on you. You might as well just write a document and stay at home. Bullet points are especially bad for this – avoid them. Slides should be sparse. Pictures work better. Use images that reinforce your point – show, then tell.</p>
<p>Let&#8217;s say I wanted to convince you that Ethiopia was once again on the brink of famine. I could show you charts of crop yields, child mortality, and displaced populations. Or I could show you a photo and tell you the rest.</p>
<p>It&#8217;s emotional. It&#8217;s cheating. It works.</p>
<h3>Practice</h3>
<p>The biggest sin that people make when giving presentations is not to say what they want to say out loud before getting on stage.</p>
<p>Runners train. Football players practice. Musicians and actors spend hours getting performances right. So shouldn&#8217;t you too? How do you know how long it will take you to get through your content? How do you know what&#8217;s useful and what&#8217;s superfluous? Does your presentation have a good flow? Practice will tell you.</p>
<p>Doing all this takes time. It&#8217;s not as easy as throwing bullet points together the day before your presentation and hoping for the best.</p>
<p>But think of how many man-hours people will spend watching your presentation. How much of your time is it worth to ensure that your audience isn&#8217;t wasting theirs?</p>
<p>So go do it. Concentrate on your audience&#8217;s interests. Tell stories and entertain people. Make slides sparse. And prepare beforehand by practising. This is harder than what you do now. The pay-off is huge.</p>
<p>The best part is that your audiences will thank you.</p>
<p>Related links:</p>
<ul>
<li><a href="http://sethgodin.typepad.com/seths_blog/2007/01/really_bad_powe.html">Really Bad Powerpoint</a> &#8211; Seth Godin (source of many of the ideas in this presentation)</li>
<li><a href="http://headrush.typepad.com/creating_passionate_users/2005/06/kill_your_prese.html">Kill your presentation (before it kills again)</a> &#8211; Kathy Sierra &#8211; Kathy has lots of material on focusing on your users rather than on yourself &#8211; and this is true for presentations too</li>
<li><a href="http://www.presentationzen.com">Presentation Zen</a> &#8211; the great blog of Garr Reynolds &#8211; there is an accompanying book which is well worth reading</li>
<li><a href="http://www.amazon.com/slide-ology-Science-Creating-Presentations/dp/0596522347/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1255191338&amp;sr=8-1">slide:ology</a> &#8211; Nancy Duarte &#8211; one of my favourite books on presentation design &#8211; a must-read on all stages of presentation design from deciding what to talk about through to working on your delivery</li>
</ul>
<span class="net_nemein_favourites">5 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=a1a193a0b5bb11deb59673ab048f56655665&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/a1a193a0b5bb11deb59673ab048f56655665/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=a1a193a0b5bb11deb59673ab048f56655665&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/a1a193a0b5bb11deb59673ab048f56655665/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Sat, 10 Oct 2009 16:18:08 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-a1a193a0b5bb11deb59673ab048f56655665</guid>
        </item>
        <item>
            <title>Estimating merge costs</title>
            <link>http://blogs.gnome.org/bolsh/2009/09/28/estimating-merge-costs/</link>
            <description><![CDATA[
<p>After <a href="http://www.neary-consulting.com/index.php/2009/09/17/the-value-of-engagement/">commenting</a> on Mal Minhas&#8217;s<a href="http://www.limofoundation.org/images/stories/pdf/limo%20economic%20analysis.pdf"> &#8220;cost of non-participation&#8221; paper</a> (PDF), I&#8217;ve been thinking about the cost of performing a merge back to a baseline, and I think I have something to work with.</p>
<p>First, this might be obvious, but worth stating: Merging a branch which has changed and a branch which has not changed is trivial, and has zero cost.</p>
<p>So merging only has a cost if we have a situation where the two trees concerned with the merge have changed.</p>
<p>We can also make another observation: If we are only adding new function points to a branch, and the mainline branch does not change the API, there is a very small cost to merging (almost zero). There may be some cost if functions with similar names, performing similar functions, have been added to the mainline branch, but we can trivially merge even a large diff if we are not touching any of the baseline code, and only adding new files, objects, or functions.</p>
<p>With that said, let&#8217;s get to the nuts &amp; bolts of the analysis:</p>
<p>Let&#8217;s say that a code tree has n function points. A vendor takes a branch and makes a series of modifications which affects x function points in the program. The community develops the mainline, and changes y function points in the original program. Both vendor and community add new function points to extend functionality, but we&#8217;re assuming that merging these is an almost zero cost.</p>
<p>The probability of conflicts is obviously greater the bigger x and y are. This probability increases very fast the bigger the numbers. Let&#8217;s assume that every time that a given function point has been modified by both the vendor and the community that there is a conflict which must be manually resolved  (1).  If we assume that changes are independently distributed across the codebase (2), we can work out that the probability of at least one conflict is 1 &#8211; (n-x)!(n-y)!/n!(n-x-y)! if I haven&#8217;t messed up my maths (thanks to derf on #maemo for the help!).</p>
<p>So if we have 20 functions, and one function gets modified on the mainline and another on the vendor branch, we have a 5% chance of a conflict, but if we modify 5 each, the probability goes up to over 80%. This is the same phenomenon which lets you show that if you have 23 people in a room, chances are that at least two of them will share a birthday.</p>
<p>We can also calculate the expected number of conflicts, and thus the expected cost of the merge, if we assume the cost of each of these conflicts is a constant cost C (3). However, the maths to do that is outside the scope of my skillz right now <img src='http://blogs.gnome.org/bolsh/wp-content/mu-plugins/tango-smilies/tango/face-sad.png' alt=':-(' class='wp-smiley' />  Anyone else care to give it a go &amp; put it in the comments?</p>
<p>We have a bunch of data we can analyse to calculate the cost of merges in quantitative terms (for example, Nokia&#8217;s merge of Hildon work from GTK+ 2.6 to 2.10), to estimate C, and of course we can quite easily measure n and y over time from the database of source code we have available to us, so it should be possible to give a very basic estimate metric for cost of merge with the public data.</p>
<p>Footnotes:</p>
<p>(1) It&#8217;s entirely possible to have automatic merges happen within a single function, and the longer the function, the more likely this is to happen if the patches are short.</p>
<p>(2) A poor assumption, since changes tend to be disproportionately concentrated in a  few key functions.</p>
<p>(3) I would guess that the cost is usually proportional to the number of lines in the function, perhaps by the square of the number of lines &#8211; resolving a conflict in a 40 line function os probably more than twice as easy as resolving a conflict in an 80 line function. This is slightly at odds with footnote (1), so overall the assumption of constant cost seems reasonable to me.</p>
<span class="net_nemein_favourites">11 <a href="http://maemo.org/news/?net_nemein_favourites_execute=fav&net_nemein_favourites_execute_for=b016412aac5511deac3213e27fd82a4a2a4a&net_nemein_favourites_url=https://maemo.org/news/favorites//json/fav/midgard_article/b016412aac5511deac3213e27fd82a4a2a4a/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-favorite.png" style="border: none;" alt="Add to favourites" title="Add to favourites" /></a>0 <a href="http://maemo.org/news/?net_nemein_favourites_execute=bury&net_nemein_favourites_execute_for=b016412aac5511deac3213e27fd82a4a2a4a&net_nemein_favourites_url=https://maemo.org/news/favorites//json/bury/midgard_article/b016412aac5511deac3213e27fd82a4a2a4a/" class="net_nemein_favourites_create"><img src="http://static.maemo.org:81/net.nemein.favourites/not-buried.png" style="border: none;" alt="Bury" title="Bury" /></a></span>]]></description>
            <author>Dave Neary &lt;dneary@maemo.org&gt;</author>
            <category>feed:ec4eaeec3783414b0575c53865227f65</category>
            <pubDate>Mon, 28 Sep 2009 16:52:03 +0000</pubDate>
            <guid>http://maemo.org/midcom-permalink-b016412aac5511deac3213e27fd82a4a2a4a</guid>
        </item>
    </channel>
</rss>
