I'm very overwhelmed in trying to put my 2 cents into this, but here it goes

1) We need to have a documented release strategy, even if it's loosely 
documented.  I've been working on some grant proposals, and many of them want a 
timeline of goals. This timeline is very important. It's used in evaluating if 
the project is worth the grant, as well as determining if the project has 
reached the goals for which the grant was given.  The problem is that in order 
to have the timeline we need to have a good release strategy that says here is 
our workflow.  Here is how we get from where we are, to where we want to be, 
and here is how we can evaluate the changes.  This is key.   I'm not even 
talking about what goes in, and what stays out, and when we do a release.   We 
need to document HOW we do it and HOW we follow up.  Without this it's kind of 
hard to ask for money.

2) Freenet kind of looks like it is very unorganized.  Again it's hard to ask 
for things if we don't have our ducks in a row.  If you look at some of the 
more successful projects they have a clearly defined set of goals, timelines to 
those goals, designated roles for key people, and a defined workflow.  All of 
which is listed in a public place somewhere.  This disorganization is limiting 
Freenet in other ways as well.   Right now it's very hard to for new users to 
contribute to the project, and I think that a lot of this is because people are 
overwhelmed and get lost when they try.  Freenet is a very technical project 
and there are a lot of places it can break.  I think that if we were a bit 
better organized then we could direct new users to where they would be most 
useful.  There should be a set of clearly defined groups.  Each group should 
have a general set of guide lines, and responsibilities, and how to contact the 
group.  Examples would be a group in charge of website(s), another in charge of 
donations and grants, the programming group,  Bug squishing group, the plugin 
group, documentation group, and a group that oversees everything.  There might 
already be something like this, but I just don't see it.

3) drop the release numbers, and go to a rolling release.   It really doesn't 
matter if it's version .75, .8, or even if it is 222.  Those version #'s are 
meaningless.   Freenet is self bootstrapping.  In other words after someone 
downloads and installs the client, Freenet will normally update itself to the 
latest version.    Define the parts that need to be updated, and the order in 
which they need to be done.   In other words, something like we need to have 
feature Z, but to do that we need feature Y, and that needs feature X.  This 
gives us our timeline for #1 above.  And it also sets our progress level, 
making it easy to see what needs doing and how fast we are doing it.   I also 
think that this might make things feel less pressured trying to get things done 
for some arbitrary deadline.   If some feature turns out to not be that liner 
then even better.  It also give the us something to update on the website, as 
each feature is finished we can put a little blurb up.  Gives people something 
to look at and not think that Freenet is dead (because it's not)

Anyway I'm not done yet, but my fingers hurt and my mind lost track.. So I'm 
done for now...   You can now start the flamb?...



-----Original Message-----
From: devl-bounces at freenetproject.org 
[mailto:devl-boun...@freenetproject.org] On Behalf Of Matthew Toseland
Sent: Monday, January 24, 2011 11:31 AM
To: devl at freenetproject.org; support at freenetproject.org
Subject: [freenet-dev] Solving the release policy problem for 0.8.0

oWe need a release, because:
1) We haven't had one for quite some time.
2) We will run out of money eventually, we cannot presume on Google's 
generosity and even if we do they will want results.
3) We need more users.
4) We have something of a publicity opportunity resulting from various 
political developments.

However:
- I agreed (foolishly) to a deadline that I am now 100% confident is not 
achievable (31st jan for feature complete alpha).
- The features list that I had expected when I agreed to the deadline was 
significantly different to what I think is needed now.
- The network has serious problems. This is partly because of my efforts on new 
load management, which have tended to be fairly disruptive. It is partly 
because of the way that those changes have been deployed.
- There has been a tendency to accumulate serious bugs and brush them aside 
because they are not related to the first goal. This will cost us users and 
probably developers.
- Likewise there are workflow issues related to deadlines and developers.
- This has all resulted in major stresses on me which also may cost us users 
and developers.

Clearly we need to work towards a release. IMHO the first thing to do is:
1) Define a path features-wise, or a set of requirements that drive features, 
and
2) Make it clear how to deal with things that are not on that path.
3) Work towards a point where we can focus on debugging less serious (not 
structural) issues, which will involve a reasonably clear deadline only 
modifiable if very bad things turn up that we didn't realise.

Second point first: I will revoke most people's git rights to simplify release 
management. If you are working on stuff that isn't directly relevant to the 
release, please continue to work on it, but do so on a branch, e.g. on a github 
fork. If it is stable, small, and non-disruptive there may be points at which 
it can be considered.

So what do we need for 0.8.0? I have created an ietherpad document:
http://ietherpad.com/z1kgs1fmSg

I appreciate we have had such discussions a lot over the last 6 months. And 
this has been my fault as much as anyone's. Sorry folks...

My proposal is that the list of features and goals in the above shall guide my 
behaviour and what gets merged vs postponed from volunteer efforts:
1) I will not code on stuff that doesn't support the release.
2) Volunteer efforts that don't support the release should be kept separate 
until after the release.

Because I have to casually review everything in fred anyway, it is 
significantly easier for me if I merge stuff. I don't believe I will become a 
bottleneck, or will end up using most of my time reviewing stuff, with the 
current level of volunteer contributions. I will therefore revoke everyone 
else's (or almost everyone else's) commit rights to the fred-staging 
repository. Or maybe we should just have a separate branch for out-of-scope 
stuff? Other repos can and should be owned by other people, although I casually 
review all released code (e.g. Freetalk). Of course on other projects I still 
ultimately decide what gets released e.g. when to deploy the new 
freenet-ext.jar.

Reply via email to