Re: squid3 comments

From: Adrian Chadd <adrian@dont-contact.us>
Date: Tue, 27 Feb 2007 22:19:28 +0800

On Tue, Feb 27, 2007, Tsantilas Christos wrote:

> Ok Adrian, I am watching the mailing list and I know what you want to
> do. I believe too that some parts of squid needs redesign, if the
> project wants to survive. Squid is an old and huge project. And you
> must continue your work because you want a fast http proxy, with cleaner
> code and better api's .

Yup. Well, I want more than a fast http proxy. I want a faster, simpler,
better structured proxy thats flexible enough to be a testbed for all
kinds of new stuff.

> In the other hand I need a proxy with an icap client because I spent
> time (and continue spending) to an icap related project. Squid3 has a
> good icap client. The first problem someones can see in squid3 is that
> there are some parts derived from c-code, which are not (fully)
> converted to real c++ code. The second is a feeling that some parts of
> code are half-completed. I am thinking that maybe it is good practice
> for someone to start fixing this things first....
>
> An alternate for me is to try fix the bugs and rewrite some of the
> icap-related parts of the squid26-icap branch. I don't know ....

I'm going to be perfectly honest, and this is just my opinion.
I think Squid-3 is ultimately a dead end. I think the people involved
got a bit overenthusiastic with applying a whole lot of paradigms which,
to be honest, just haven't delivered. So the project stalled and
I don't think its going to be going anywhere in a hurry. I tried pushing
it along myself for a few months but then I realised Squid-3 was just
as complicated as Squid-2, with all of the horribleness of Squid-3 inside
and compounded by almost-implemented data types and little understanding
of the changes made (for example, the RefCounted stuff is a great idea
but its not an immediate dropin replacement for cbdata. A lot of core
routines were converted over with some pretty disasterous results.)

C++ is a good idea and I think in the long run its the kind of direction
the codebase has to take - but we shouldn't have converted the Squid
codebase to C++ at the stage it was at.

We shouldn't have tried to convert stuff over to C++ without first giving
the code a good half dozen passthroughs, simplifying what was there
and giving everything a good tidyup. Unfortunately that wasn't done -
lots of refactoring was done but nothing was ever really "fixed".

Now, I don't have icap on my list as a specific thing to support, but:

* I'd like to look at whats been done in the icap-2.6 patchset and
  Squid-3 to plan the next evolution of the client, store and server
  side codebases to neatly support ICAP as a module, rather than a
  patch or a compile-time option with lots of #defines everywhere;

* But what I'd like to do is support all the modern architecture features
  well - lots of CPUs - fast or slow; lots of RAM or as little RAM as
  exists on an embedded board; support the modern disk IO patterns
  much more efficiently than we do at the moment, etc.
  This requires some pretty drastic internal changes - threading, at the
  outside. Maybe multi-process if people can think of a portable way of
  implementing it.

* I'd like to make the code as modular as possible so a lot of things are
  simply loadable at runtime. Don't need the URL rewriter? Don't load the
  module, no performance impact.

* But to do all of this we need to strip Squid all the way back to its core
  bits, build fast, flexible code libraries and APIs which support all
  the stuff we want to do - including, yes, icap. Its just too hard for me
  to do all of the above with the Squid codebase dragging as much
  history as it does.

Now, these are all my opinions and are definitely not to be taken
as the opinions of others or the Squid project in general.

(and I should be coding.)

Adrian
Received on Tue Feb 27 2007 - 07:11:34 MST

This archive was generated by hypermail pre-2.1.9 : Thu Mar 01 2007 - 12:00:02 MST