[Libssh] Enhancements proposals
Rodolphe Rocca
rodolphe.rocca at kabira.fr
Thu Feb 28 17:50:33 CET 2008
Aris Adamantiadis wrote:
> Rodolphe Rocca a écrit :
>> On Wed, 27 Feb 2008 23:38:02 +0100
>> Aris Adamantiadis <aris at 0xbadc0de.be> wrote:
>>
>
>> Are you sure you want to switch to a C++ version ? I mean, libssh has
>> already a good OO design in C, it is not so far from a _very good_
>> OO design. Furthermore, there is the classical argument in favor of C :
>> everything can link to it. Personnally I don't see a very strong reason
>> for a protocol library to use C++.
> The ease of development ? Doing a good OO design is C is nearly
> impossible. There is no inheritence, no virtual methods,...
Off course I wasn't talking about strict OO but more of using OO
notation as in the linux kernel or many C libraries (cairo, gnutls are
very good examples of this). A big part of libssh already uses 00
notation, I was just talking about making libssh use OO notation everywhere.
However I understand that C++ allows for much cleaner design than C.
> look at the
> mess in error.c to support inheritence (ssh_set_error that works on two
> datastructure) and the mess in crypt.c to support virual methods.
Are you talking about multiple #ifdef ? I agree it's not the cleanest
thing ever. However libssh could probably integrate a much cleaner
crypto backend framework along with a libcrypto and libgcrypt backends.
> C and C++ are completely compatible : it's easy to build a C stub which
> runs the C++ methods behind.
Well I know that C is compatible with C++, but not C++ with C, unless by
using very complex technics. So I'm very curious how you would do your
stub in such a way that any native C library could compile and link
against it.
And even if it's possible, you'll still have to design your C API...
Notice that I don't have any personal interest in keeping C for libssh :
my application is written in C++. However I'm seriously thinking about
the wide amount of applications written in C that could not use libssh.
>>> Thus, I think a good action I have to make to repair my lack of
>>> attention is to install a correct bug manager (I think about mantis).
>>> That way, every bug report and feature request would be kept
>>> somewhere. Also, I promise working a day or two this week to address
>>> some of the known bugs and include the patches.
>> It would be very very good for us if you could setup a git repository
>> somewhere for source control. And it would be good for you too making
>> really easy to merge patches and developpers branches.
>>
>> NB : For those who don't know git is a distributed source management
>> software used by the Linux kernel, and many of the big free software
>> projects.
> I already have a SVN repository on berlios. I don't know what features
> of git lacks in subversion
OK I didn't know you already had a SVN repository. It's already a good
choice.
The main difference between git and svn is that svn is centralized while
git is distributed. In brief every developer _locally_ owns a complete
copy of the repository. It has many advantages among those :
- the ability to work on different branches locally
- the ability to do local checkins
- it is really fast (all operations are local)
- and many others
So every developer works on its own copy of the main repository and when
a developer branch is ready people send you a patch, or better tell you
to merge the branch in your main repository.
It is very well adapted to free software development.
If you want to know more I can recommend to try the tutorial on the git
web page it's quite informative.
Rodolphe
More information about the Libssh
mailing list