On Tue, Aug 30, 2011 at 11:49 AM, Robert Hailey
<robert at freenetproject.org>wrote:

> On 2011/08/29 (Aug), at 12:58 PM, Ian Clarke wrote:
>
> The problem is that we come up with solutions that are too complicated to
> analyze or fix when they don't work....
>
> The cause is complexity, which just grows and grows as we try to fix
> problems we don't understand by layering on more complexity.
>
>
> And what is the cause of that? Is the problem really one of *behavior*?
> emotions? workflow? organization?
>

A combination, but at its core I think its a failure to recognize that most
working systems are built on principles that are simple enough to understand
that they are either "obviously" correct, or can easily be proven to be
correct.  For example, AIMD, which is TCP's load management system, is
simple enough that you can describe the basic idea in a sentence.  It is
also fairly obvious that it will work, or at least its easy to simulate it
and convince yourself that it will work.

In contrast, Freenet's current load management system is a combination of
mechanisms that are perhaps individually of comparable complexity to AIMD
(in fact, AIMD is part of it although used in quite a different context to
how it is used in TCP), but together they are far more complex, and interact
in ways that are hard to predict.

For example, in a conversation with Matthew a few days ago, he realized that
the "fair sharing" mechanism which tries to allocate resources fairly among
"downstream" nodes, was probably generating a bunch of rejected messages
when it transitions from one mode of operation to another, with all kinds of
negative consequences.  Who knows how many other unintended interactions
there are?


> Matthew has presented some very real problems which he is trying to work
> around (with much frustration, I'm sure). I think he needs more leverage
>

My criticism is that Matthew's proposals for "fixing" the problem follow
exactly the same pattern of all the previous "fixes" that turned out to have
either no effect, or a negative effect.  It starts out with a bunch of
hand-wavey hypotheses about what the problem might be, which is followed by
a bunch of fixes for what might be the problem.  There is no evidence that
these problems are real, I think a big part of the reason is that the
existing system is too complicated to debug.

I know it sounds like I'm beating up on Matthew here, and that isn't my
intention, he is following a precedent set by me and others that have long
since left the project.  Having (I hope) learned some tough lessons, and
recognized the folly in our past approach, I'm now hoping its not too late
to rescue the project from an ignominious death.  I think we're talking
about weeks of work here, not months, and frankly I don't think we've got a
choice if the project is to survive.  Freenet is no use to anyone if it
doesn't work, regardless of how cool our goals are, or how clever our
algorithms and heuristics.


> If you read my suggestion below, we can discuss how it would allow:
>
> With an investment of developer time, we could separate the current freenet
> code into three interfaced sections (link-layer, routing-layer,
> user/client-interface-layer).
>
> If we then were to modify the outer layers to accept two routing-layers
> (e.g. client requests round-robin between the two but thereafter stay in
> that network) we could have "two networks in one" a stable-net (for the
> nay-sayers, a disaster/fallback, and as a control for measurement), and a
> development-net where experimentation could take place.
>
> Drawing the interface lines on theory (rather than present code-state)
> would be critical [e.g. load-balancing should be in the middle layer, imo].
> The goal being, reliable communication with near-guaranteed/methodical
> improvement
>
> While I'm sure there is much room for improvement in the way the code is
architected, and the separation of concerns - I don't think refactoring is
the answer.  We need to refactor the fundamental way that we solve problems
like load balancing.

Ian.


-- 
Ian Clarke
Founder, The Freenet Project
Email: ian at freenetproject.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20110830/42369abb/attachment.html>

Reply via email to