Menu

Problem Solving

The four words I need to know to get by in Valencia, Venezuela, for the 2012 FUDCon in LATAM while being an english speaker. (The fifth word may be “poker,” we shall see tonight.) I’ve had a lovely time here thus far, though the internets have been somewhat unkind to me :) I’d go on and on about how lovely it is here, and how good it is to see everyone, but you all know that stuff anyway (all true!) so I’ll skip right ahead to the meat of this post:

FUDCon here is distinctly different from from how it works in North America, and even EMEA to some extent; I haven’t had the pleasure of attending a FUDCon in the APAC region yet, but I suspect it is somewhat similar. Lots of people showing up to learn about Fedora; there are maybe 30 or so people here from various parts of South America who are Fedora contributors, all of whom contribute in varying parts of the Fedora Project, in different capacities. Lots of sharing of knowledge – from the use of different applications, robotics hacking, graphic design, becoming a contributor.

We did get the opportunity today to have two solid chunks of time to gather the regional ambassadors and spend some time making plans around a few things, though we did see a few folks shuffle in and out to give presentations. It comes down to a few things, and they’re things that I’d like to be seeing ambassadors in all regions think more about.

One of the items is planning for the next year to 1.5 years. First off: the budget for each fiscal year (our money year runs from March 1 – February 28) gets set around the December/January time-frame, maybe into February a bit. So knowing what the needs are when that time comes helps us to get the money we need to continue to do outreach, FUDCons, etc. The things I’m talking about planning, at least in this particular situation, are specific events where we’d like a Fedora presence. There are a few things we need to know:

Event name/type of conference

When, where, how many attendees, does it have a booth fee

How many people needed to staff at a minimum; how much it will cost to get people there if they need sponsorship

The “we” here is the Ambassadors from the LATAM region – finding this out for each country, making sure that there is coverage, and then prioritizing what to go to. If there are events where we want to have a bigger presence, figure out what the plan is around that. Figuring out what the needs will be for swag at the event.

The second major issue for ambassadors here is really logistics of shipping; some countries can’t ship to others, customs is a nightmare, and items need to be printed in various languages. We talked today about the possibilities of just possibly having a hired person specializing in shipping, or outsourcing to a logistics company who can package and drop ship things as needed, having FADs where we can put together packages and bring them home, as well as simply coordinating what countries are best for production and shipping, finding out who their friendly neighbors are, and making sure there are volunteers to wrangle ordering, payment, shipping, etc.

LATAM has spent very small amounts of money in the past; part of this is cultural tendency, part of it is simply difficulty of payment (some places don’t have paypal, we can’t directly pay in some places, etc), some of it is simply lack of coordination, or someone saying, by God, GO FORTH AND DO THINGS, the money is there. So to those of you in LATAM, please: Make plans. Think big. Let’s think about where we can go, where we can reach the most people, in this region of the world where people are incredibly interested in open source and the opportunities it can provide them.

The logistics piece is going to take a number of people to investigate; planning out the event “wish list” for the next year or so should take less time, and I suggested that September 28 (about a month from now) be the goal date for having a complete list of events that could possibly be attended over the next year to year-and-a-half. Alejandro Perez has a wiki page already for coordinating this, and a number of people volunteered to help push in weekly meetings and to work with other ambassadors in their more immediate regions to try and coordinate this list. Remember: it’s a “wish list” – once the LATAM ambassadors have that as a starting point, it’s easier to narrow down the priorities, so don’t be afraid to throw your favorite event on the list. From there, it’s easier to start thinking about swag needs, and when and where things are needed, which helps from the view of ordering things like media, shirts, stickers, and the like. Which will put us at a good point come December, right as the budget planning for next year starts. This is also when the planned EMEA FAD in Rheinfelden will be – a fair amount of that FAD is centered around planning the next year+ of events, swag, etc. I’m hoping that we’ll be in way better shape as far as planning and knowing our target budget for next year than we ever have been by this point.

Ambassadors worldwide have always done an excellent job of being responsible with the budget, carefully weighing the value of what we spend against the return on that money, ensuring that those attending events are contributing event reports and blog posts. But I have noticed that towards the end of the year – when we are getting lower on the amount in the bucket, we tend to slow down spending – mostly because of concern about “I don’t know what other people are planning” – and I know that in EMEA and NA, I have seen people say things like, “We’ve already spent plenty, and LATAM and APAC have hardly spent, but we don’t know what they have coming, either.” So planning – not just in LATAM, but really, in all the regions – is one thing that can absolutely help each of these groups to know what is expected in terms of spending, and helps us to be more confident about decisions towards the end of the year; ideally, spending all the money is where we want to be at, so that we don’t wind up with a lower budget in the next year.

I do want folks in all the regions to start thinking bigger – and thinking outside their normal event types. We’ve predominantly been attending traditional linux conferences, either of the community/homegrown type, or bigger-budget events. But I think there is definitely value in getting Ambassadors – and even non-Ambassadors who are contributing in other areas of the project who want to share their domain knowledge (and honestly, I really do consider contributors, in any area of the project, who share with others to be Ambassadors, regardless of the formalities) – to events that are more specific to interests, roles, etc. There are Ruby conferences, Python conferences, cloud conferences, etc. – and I’d like to see us think about how we can get some of our Ambassadors and/or people who specialize in an area where there is a conference (ie: get a python person to PyCon), to that conference. Get them in a Fedora shirt. Encourage them to submit a proposal to present. If they want to be learning at the conference, and not necessarily sitting at a booth, make sure they can get at least a small package of media and stickers to be a walking booth, to some extent – so they can spread the brand and media and knowledge at least in presentations they attend, when they meet others. Hopefully as we start seeing people do more planning for events in the future – we’ll see some diversity in these new areas, and maybe we’ll find that those places are just as good of locations to find new users or contributors, and possibly even better.

It seems to me – with my former program manager on – that thinking about the budget, and event and swag planning, is something that we could definitely be doing on a yearly (every other release) basis, to be coordinated with the time period when the budget gets set. (That’s not a hint, Jaroslav, it’s just me thinking out loud and wondering if that would help Ambassadors. I promise.)

I look forward to seeing what the folks in LATAM come up with over the next month, and am hopeful that these kinds of efforts will enable them to do a wider variety of events in the future – and I definitely hope that other regions (I’m looking at you, APAC Ambassadors!) start thinking about doing similar planning; I encourage everyone to take a look at Alejandro’s wiki page as he shares that information, and see if something similar will work for you.

I occasionally have days where, when reading a mailing list, I want to stab my eyeballs out at what I am reading. And then I realize that: Perhaps my thoughts might be better utilized if I make a blog post. (Bonus: I won’t look like a totally angry troll!) And then, at 4am, as I lay in bed, the thoughts still seething in my head, I say, well, maybe I’ll do that now.

And thus, today, I bring you: My observations and advice on the utilization of time-based schedules in open source software communities.

Full disclosure: I used to do program management (ie: build the schedule, kindly and repeatedly ask people to comply) for Fedora. I learned a lot in a relatively short period of time, thanks to the awesome people I work with. I have no certifications in project management, I have never officially studied it or taken a course in such things, and quite frankly, I just might not actually know what the hell I’m talking about. But I like to think I know a thing or two, or that I might at least give you, dear readers, something to ponder on as you work in your own projects.

First off: There are time-based schedules, and feature-based schedules, and those are pretty much the two models I see employed in community-land. (Yeah, yeah, agile, blah blah blah, I’m not getting into that or its relationship to these methods right now.) Time-based means that you do releases on a predictable basis, you pick a date, and you STICK TO THAT DATE, come hell or high water. Feature-based scheduling involves identifying a list of features, and working until those features are actually done, at which point… you release. I am not going to dive into the latter method, at least today, but I will say this: “Features” tend to suffer from what is referred to as scope creep – what seemed like a small task in the beginning gets a little enhancement here, a little extra love there… basically, they can go on for some time without being *done* according to someone’s opinion. Which means it could be a really long time between releases. (And that may be okay for a lot of people, but you lose out on some of the benefits I’m going to talk about.)

The benefits of time-based schedules

There are many, but these are the two big ones in my mind:

Out with the old and in with the new. If you’re doing time-based schedules on a short enough release cycle – 4 to 6 months, even 8 months – you know that anything that doesn’t make it into this release, is only going to be one more release cycle away, and you know exactly how long that will be. You also benefit from looking like you’re actually making progress; potential contributors can see that things are coming out the door, and not wonder if the community they are about to jump into is ever going to finish what they are doing. Users know when new stuff is expected, also good.

Predictability for the community. If I know that I generally contribute to one specific thing (or perhaps more), and I know when that contribution is expected, I am more likely to make that deadline. There is never any question about when things need to happen.

But announcing that the release date is X and patches are welcomed is, well, not enough. Particularly if the scope of the project is large, or you have a large number of contributors. Here are the basic pieces that I think are important:

KNOW YOUR FEATURES

Have dates by which features must be proposed and accepted. I’m not going to tell you how to decide what gets in and out; that varies from community to community. MAKE SURE that this list is prominently displayed. This gives people a way to give feedback. Sometimes features collide; this can help to avoid that, or at least, to ensure that changes are well-coordinated for things that are really dependent upon each other.

Have a date by which all features must be complete. You can scale this as you want (must be close, another date for really done). And then be very clear about the fact that features will NOT BE INCLUDED if they are not finished. Why? There may be people in your community doing documentation, marketing, translations, making test plans, etc. People need to know when a good time is to start doing all of those things, without doing it for things that are going to get dropped; they also don’t want to get hailed the day before release because this brand new thing just landed and HEY, wouldya mind dropping everything and writing replete documentation at the last second? Not cool. Having a clear cut-off is important.

Track the actual progress of accepted features. Make feature owners/contributors be responsible for providing those updates on a regular basis in an easy-to-read place. Nobody likes surprises.

Define what a feature actually is. New and shiny stuff doesn’t have to be the limit. Sometimes a feature can be a change in how the software is built, or the removal of some functionality or dependency. Again, the key here is having the list of features published; removing things arbitrarily if people depend on them, or worse, if someone is actually contributing those things or would commit to improving them if they knew that there were issues that necessitated the removal, sucks.

DEFINE THE END GAME

After the point where features should be done, well, people are probably doing bugfixing for a while, and then testing and getting ready for release. The length of time for all of these things is up to you; just be sure that, again, IT IS PUBLISHED AND KNOWN. But here are a few other things you can add to make the sprint to the finish line more efficient:

Have a list of release criteria. Nobody wants to sit around arguing whether or not something is shippable. What functionality does the software ABSOLUTELY have to have to make it useful after shipping? Write it down. Make sure people are in agreement. Make sure your test plan actually tests those specific criteria.

Publish your test dates. Advertise them. Make sure when you’re deciding these dates that it’s actually a reasonable amount of time to test things. Methamphetamines are illegal and bad for you, kids: don’t make your QA folks stay up 24/7 for a week.

Have a date on which key contributors/stakeholders/stuff-doers can meet or communicate and agree upon shippability.

If it is not shippable, have a pre-determined (as in: not during the meeting!) length of time during which bugs will be fixed and testing will happen before you meet again.

Some last bits of advice, at least for this blog post, for those of you who are just absolutely convinced by now (or were already moving that way):

Pick your date, and work backwards. Figure out how much time it takes to reasonably test a final product, how long it takes to build a release candidate, how long you want to do bugfixing on features for before you make a release candidate, how long the development phase is, the date by which all features should be accepted and defined, how long your planning/feature proposal period is. And remember that it’s not all about the code; if you have people doing documentation, translations, etc. make sure that their roles are defined and considered as well. And above all: Make sure people are in agreement when you’re doing this for the first time.

Bugs in the release process are expected. Especially the first time. Document them and fix them, yo.

PUBLISH YOUR SCHEDULE. Pro tip: Publishing your schedule on a mailing list and having it be the only place where it is seen is not helpful. Put it on a wiki, a webpage, whatever it is you have. People do not want to go trolling through their mail to find this when they likely refer to it often. Newcomers do not want to search through archives in the hopes that it might be there. Users don’t want to do that either.

Advertise your schedule at major milestones. If you have a blog, a twitter account, whatever, NOTIFY people of looming deadlines and of actually reaching those milestones. If people look like they are falling behind, reach out to them personally. You don’t want people saying, how was I supposed to know? Added bonus: you will look like you have your act together! (Even if inside you’re wondering deep down inside how the hell this is ever going to come together into something that resembles anything.)

Bugs. You have them. Remind people of their existence as deadlines loom. Paste the list and owners if necessary.

Haz too many dependencies and relationships between tasks? Taskjuggler, my friend. Use it.

And finally: If you are making the move — don’t magically cut over to a point that is skipping half of the steps above. Seriously: If I’ve been steadily plugging away at something, and suddenly I have this major impending deadline out of nowhere that I can’t meet, or if I am a maintainer of some sort and I am suddenly faced with fix it or it disappears, that’s not a pretty feeling. Time-based schedules can help to build your community by ensuring that people can be successful contributors to the project, which makes them come back to give more; it helps them to know when they can contribute, make changes, and helps them to prioritize your project amongst all of the other stuff in their lives. Skipping key milestones, skipping listings of features or changes or agreement upon those changes, effectively prevents some people from being able to participate or contribute. You can accelerate under certain circumstances – but don’t skip the meat of what needs to happen. Good processes can help to build great communities, which can build great software. Don’t disenfranchise your contributors (who are also your best evangelists) – they are the ones who will get you through this release, and many after it, and make it better.

Anyhoo: In passing, we discussed the (totally awesome) Fedora multi-desktop media that we have had since F15 for distribution by Ambassadors. I know he’s also discussed this to some extent or another with Toshio and Rex, but I figured I’d give it some love and attention in the form of….

… asking someone to SOLVE THIS PROBLEM!

Here’s the quick and dirty summary, kids: We have this awesome media that we hand out, and those receiving it have no idea where to easily find the checksums to verify the media (and apparently, people do ask about where this information is published). We also have this handy-dandy website, which I’ll refer to abbreviative-ly as Get Fedora, which has a link to verify your media, but appears to only cover downloaded media. Additionally: there are questions as to whether or not these compilations are signed, should be signed, etc. by release engineering.

I seeketh a person who wants to tackle said problem. It involves coordinating with the websites team and release engineering and possibly the design team (do we want to put a link on media sleeves about how to verify media?) and itsuptoyoutofigureoutwhoelse.

If you’re interested, stake your claim on the logistics mailing list. (HINT: You will probably want to make copious use of this mailing list to solve this problemo. It’s the awesome place for cross-team coordination of All Things Fedora.) And then get going!

“My only weakness is: a list of tasks…..” :)

* Note: My other only weakness, apparently, is PRESSING THE PUBLISH BUTTON on a blog post; I was sitting here thinking, Gosh, I can’t believe nobody responded to that, and LO AND BEHOLD, it’s in my drafts bucket… for the past week. Sadface. Better late than never, eh?