Re: Call for roadmap features for future releases

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 04/13/2012 02:47 AM, Fabio M. Di Nitto wrote:
> On 4/13/2012 11:07 AM, Jan Friesse wrote:
>> I invite all of our contributors to help define the X.Y roadmap of
>> Corosync.  Please submit your ideas on this list.  Some
>> examples of suggested ideas have been things like "remove binding to
>> localhost", "don't rely on multicast loop facility" or "include user
>> data in cpg join/callbacks".
>>
>> Please submit your ideas by May 11, 2012 (Friday).
> 
> - re-evaluate using libtool to link libraries.
>   current method is suboptimal and it´s not easy to port across
>   different OS´es.
> 
> - reorganize library/headers/code in the tree.
>   right now we have libraries in 3 dirs:
>   common/ (corosync_common)
>   exec/   (totem)
>   lib/    (user exposed service libraries)
> 
>   the logical division is crystal clear but it has the disadvantage
>   to duplicate a lot of the build logic around and it duplicates
>   some util.h bits (confusing).
>   It also make header inclusion a bit more complex than it needs to be.
>   Also the way headers are layered it creates an unnecessary amount
>   of define/struct duplications between user visible header/ipc/services
> 
this seems like a major change - not something suitable for a y release
but perhaps an x release.

>   My suggestion is to simplify it all at once (only because it makes
>   more sense to do it in one-pass) by:
> 
>   1) move all the libraries in libs/ subdirectory and still retain
>      logical division libs/{common,totem,lib}
>   2) move all internal headers to includes/internal
>   3) deduplicate definitions by creating corosync/common/ headers
>      to share between exec and user libraries.
> 
>   *NONE* of the above has any user visible change (except for
>   packagers).
> 
>   the end result would be cleaner in terms of code location,
>   headers readability (this needs to be discussed in more details)
>   and deduplicating data around.
> 
>   One simple example to make it more clear (that applies to some
>   structs and many other defines too in several services):
> 
>   [fabbione@daikengo corosync]$ grep VOTEQUORUM_INFO_LEAVE * -r | grep
> define
>   include/corosync/ipc_votequorum.h:#define VOTEQUORUM_INFO_LEAVE_REMOVE
>           32
>   include/corosync/votequorum.h:#define VOTEQUORUM_INFO_LEAVE_REMOVE
>        32
> 
>   There is no point to keep this duplication around.
> 
>   votequorum.h can simply include common/votequorum.h
>   ipc_votequorum.h can do exactly the same
> 

yes

>   common/votequorum.h would define INFO_LEAVE.
> 
>   From a votequorum (or service foo) perspective there are no changes
>   as the application using it will see no difference, but it simplifies
>   the amount of code changes when adding new flags or adding new IPC
>   calls and all.
> 
> - change and simplify build defaults.
>   Right now we have a major discrepancy between the way we build
>   upstream and the way distributions build corosync.
>   Default corosync is to build no features unless enabled.
>   Default for distributions is to build everything that can possibly
>   be built.
>   I think this is just plain silly.

The reason is we don't want to have a ton of build/runtime dependencies
by default.  The current system makes perfect sense.  If a distro wants
to go to the trouble of enabling all of those things, then they can sort
it out.  Asking them to "trim" makes less sense - how will they know
what to trim?

>   My suggestion here is:
>   - architecture independent features should be on by default
>     (example: xml, dbus, monitoring, watchdog, augeas, systemd,
>      initddir...)

systemd, dbus, watchdog, augeas are all either platform or linux
specific so they are not candidates for enable by default.

>   - architecture dependent features should be off by default
>     (example: rdma, small-footprint)
>   - general policy for features:
>     - stable feature: ON
>     - devel/experimental features: OFF

This is how the code base builds currently..  Everything is fairly
experimental that isn't already in an on state.

>   - test/debugging components/options off by default
> 
> In time we can take a step forward and remove all the conditionals
> around "INSTALL_FOO" and simply install it. It doesn´t harm
> the final user as packagers will strip down as necessary
> and makes the build system incredibly simpler.
> Simplicity will also reflect in the spec file.
> 
> - porting of qdisk to votequorum and eventually finalize qdevice API
>   in votequorum.
> 
yes

> - support more encryption methods (other than none/aes256) from nss.
> 
yes

> - libtotem cleanup/rewrite (3.x)
>   During the last phase of 2.0 devel, we did hit a few limitations
>   on what we could fix and how due to the way libtotem layers
>   call each other. We should evaluate and consider to simplify those
>   layers and make code easier to maintain.
>   Simplification will give us also the option to improve runtime
>   reconfiguration of totem (right now very limited).
> 

no

Totem was incredibly painful to write and debug.  Not broken, don't fix.
 I personally believe totem below totempg layer is nearly perfect with
exception of few nitpicks like the bind issue and kernel loopback
requirement.

The top layer of the stack (totempg) needs a good beating.  It is not 64
bit aligned, and the interface itself is muddy.  This
fragmentation/assembly should likely be rewritten at some point, but
that will break compatibility.  I'd even support a needle rewrite of the
implementation if there was a "enable-next-gen-fragmentation" option
added (while keeping the previous around).

Also there should be a layer between process groups and fragmentation
(ie: totempg, that calls totemfrg, that calls totemsrp).

I understand that dynamic config becomes more difficult with this
layered approach.  But the linux ip stack in linux supports it quite
well via getops/setops.  Perhaps we copy that design.

Surgical changes may make more sense - could you propose those instead?

Thanks
-steve
> _______________________________________________
> discuss mailing list
> discuss@xxxxxxxxxxxx
> http://lists.corosync.org/mailman/listinfo/discuss

_______________________________________________
discuss mailing list
discuss@xxxxxxxxxxxx
http://lists.corosync.org/mailman/listinfo/discuss



[Index of Archives]     [Linux Clusters]     [Corosync Project]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]    [Yosemite Photos]    [Linux Kernel]     [Linux SCSI]     [X.Org]

  Powered by Linux