State of SILC Project

Pekka Riikonen <[email protected]> Thu, 27 Nov 2003 12:30:17 +0100 (CET)
Newsgroups gmane.network.silc.announce
Message-ID <[email protected]>
Hello,

As most of you probably noticed the SILC Client 1.0 has been released.
What most of you probably also noticed is that I didn't make the release
of SILC Client 1.0.  That release was done by Jochen Eisinger, who is also
known as c0ffee.  The purpose of this email is to explain the current
status of the SILC project and to give some idea about the short term
future we are faced with, where the project is going next and what are the
challenges we are facing.  The email is quite long, so prepare some time
to read it.

I have asked Jochen (c0ffee) to take over the maintainance of the SILC
Client 1.0 series.  This means that I will not do any active maintainance,
development or releases to the SILC Client 1.0 series anymore.  This means
that the man in charge with SILC Client now is c0ffee.  I am not going
away, I am there for support and I am always willing to help as much as I
can.  For those that do not know who c0ffee is, he is the author of SILC
Plugin for Irssi and authors many other programs as well.  He has an
excellent knowledge in both Irssi code and SILC code which is important,
as SILC Client is based on Irssi.  He has previously done work on security
software products as well which is a good thing.

As far as the development of the SILC Client 1.0 series goes the decisions
will be made by c0ffee.  If you want a new feature to SILC Client, if you
want some bug to be fixed or something else, the c0ffee is the man that
makes the decision whether or not it will be done.  He will also decide
the releases and the release schedule.  I hope that other developers will
lend hand to c0ffee as well.  It would be good if c0ffee wouldn't have to
face the task alone.

From the SILC Project's point of view the SILC Client is very important
application and we would like to see it continue strong in the future as
well.  It is the reference client implementation of the SILC protocol and
it has a wide user base.  Even though, there has been some talks that
maybe SILC Client should be replaced by SILC Plugin, from project point of
view this is undesirable.  It would be a real shame if the SILC project,
the developer of the SILC protocol, would not provide a full reference
client, silc(1), and full reference server, silcd(8).  I feel that it is
important to provide standalone client instead of relying on a third-party
client.  What I would like to see is perhaps more closer integration of
SILC Client and SILC Plugin, so that perhaps in the future they are one
and the same.  One is just compiled as standalone client and one as Irssi
plugin.  In this case, the SILC Plugin could then become as "official"
SILC project software, available from the SILC project sites.

The reason why I want to give away the SILC Client development is simply
because of lack of time.  The next stable release in succession is SILC
Server 1.0 if all goes as I have planned.  I have already focused my main
development efforts to the SILC Server, to see that it will be stable and
supports all the SILC protocol features what a reference server should
support.  I will also turn my focus to the SILC Toolkit 1.0 which awaits
its release as well.  So, lets talk about the status of SILC Server and
SILC Toolkit.

I have no definite schedule for the SILC Server 1.0 yet.  This is because
I have not yet assessed what needs still work, what is missing, what will
be in 1.0 and what will be left out.  The server however is becoming more
stable all the time and we are moving towards the 1.0 quickly.  I would
say that if SILC Server 1.0 isn't out within next 7-6 months I would be
disappointed.

The SILC Toolkit is basicly ready.  It awaits two big tasks to be
completed before it can come out.  The first one is the completion of the
Toolkit Reference Manual.  More documentation, guides and tutorials will
have to be written.  The second one is the revamp of the SILC distribution
system.  This isn't part of Toolkit actually but relates closely to it.
The reason why it needs to be done is the dual licensing which the Toolkit
will have.  There are other more technical reasons which I will not get
into now why it needs to be revamped.  This is actually quite big task,
it's invisible to the public, requires careful work in the SILC CVS and
something we just need to do.  After that I am able to create SILC Toolkit
distributions the way I want and this is also the time when SILC Toolkit
1.0 will come out.  This could happen quite quickly actually if some
volunteers with good skills in perl sign up. :)  However, my current plan
is that SILC Server 1.0 would come out before SILC Toolkit 1.0.

I am calling everyone willing to contribute to take part in the SILC
Server 1.0 and SILC Toolkit 1.0 development so that we can get them out as
quickly as possible.

Other important goal of the SILC Project is the SILC protocol's
standardization.  This is work that should have started with IETF last
summer but I was busy with other stuff so I was unable to start it.  This
is something I want to get into again.  I don't have anything interesting
to say about it at this point, but I will let people know when I have
something.  Now that the SILC Client 1.0 is out I hope I get some time to
do something about this as well.

What else?  What happens after all software is at 1.0?  Well, the
development goes into 1.1.  The 1.0 has taken this many years because the
protocol was being developed at the same time.  The protocol is ready as
far as I see it.  It is not perfect but it is what it is.  If we want it
better then it's to be called SILC2. :)  The purpose of 1.1 versions
development is now to make the software "the right way (tm)".  The 1.0 is
the reference implementation, it is excellent implementation, it is quite
fast, and supports almost everything.  But it's not perfect, it's not as
optimized as I would like it to be and it has years and years of history
hanging over its head.  This is something I want to change in 1.1, to make
it right, to make it perfect, to make it small, compact and fast.

Most of you probably doesn't even know that development towards 1.1 has
already begun.  I started developing for 1.1 almost a year ago.  I have
been doing that in private because I didn't want to release another code
base when the 1.0 code base isn't stable or released as stable yet.  It
would have moved the focus away from making sure the 1.0 is stable and
doesn't have any hard edges.  That would have been a bad thing.  For this
reason the work I have done, I have done in private.  But rest assured,
the code will be released to the public.

So, what is so special about 1.1? (rest of the email gets technical, you
can ignore it if you don't care about it)

The first thing is the need to fulfill my need to be perfect in what I do,
to make sure that the stuff I hate in 1.0 will be rewritten in 1.1.  Some
of those parts has already been rewritten in the 1.1 code base.  Majority
has not been done yet.  The purpose is to make the generic SILC code fast,
optimized, small, compact and to consume memory as little as possible.
This will mainly result into changes in the utility library.  I want the
code to be fast and usable on small memory systems (such as hand held
devices) as well, into which the 1.1 is focused too.

The second thing is a full rewrite of SILC Server.  Currently, the server
is standalone application.  I would like to rewrite it as library, just
like the client is now.  The server also has so, so, so much history
behind it that it just screams to be rewritten.  The current server code
is still quite good and I like it for the most parts.  But I want to
rewrite it, now that I know how to do it. :)  When developing a protocol
and software implementation of it at the same time, it becomes very hard
to do consistent code and consistent design choices all the time.  For
this reason it gets kludgey as time passes.  Now that the protocol is ready
I can concentrate on making the implementation perfect.

Third thing in 1.1 is in bringing the X.509 certificate and CRL support to
applications.  Work for this has already been partly done in the 1.1 code
base.  This is a big task and will require time and hard work to be
completed.  An OpenPGP certificate support should be done as well, and
SSH2 public key support perhaps too.  My personal interest is in X.509.

Fourth thing in 1.1 is a possible rewrite of SILC Client library.  I have
not yet decided whether it will be done.  Some parts of it will definitely
be rewritten because of other changes in the 1.1 code base but for the
most parts the Client library is pretty good.  So it's possible that it
won't be rewritten entirely, only partly.  No work for this has been done
in 1.1 code base and I haven't yet decided its fate.  I want to do the
server as library first.

And there you have it.  You can live with 1.0, but you will definitely
want the 1.1.  If you are SILC Toolkit user (application developer) you
will kill for 1.1. :)  If you think current SILC Toolkit is good, easy to
use, you ain't seen nothing yet. :)  Well... that's the goal anyway.
Once the development of 1.1 goes "public", there will be lots of
interesting stuff for other developers to get involved with it as well.
And I welcome this.  I call this future version as 1.1.  That isn't to say
that it couldn't be called something else later.  All the stuff I wrote
about what will be in 1.1, has been for a very long time in TODO-1.0 file
in CVS as well.

So, things can look quite interesting in the future.  But now the focus is
in 1.0.

	Pekka
________________________________________________________________________
 Pekka Riikonen                                 priikone at silcnet.org
 Secure Internet Live Conferencing (SILC)       http://silcnet.org/
_________________________________________________________
Info:    http://lists.silcnet.org/listinfo/silc-announce
Archive: http://lists.silcnet.org/pipermail/silc-announce
FAQ:     http://silcnet.org/?page=faq