[Kolab-devel] Thoughts about an optional alternative to Guam

Aaron J. Seigo aseigo at mykolab.com
Mon Nov 7 00:33:53 CET 2016


Hi Timothy,

thanks for the thoughtful reply. it certainly helps me out :)

On Saturday, November 5, 2016 07.42:22 Timotheus Pokorra wrote:
> Perhaps we need a blog post explaining how to get started with
> debugging Guam, or even developing for it.

https://docs.kolab.org/about/guam/troubleshooting.html

I'm sure more can be added, but there's a start.

> I did make a start a while ago:
> https://github.com/TBits/KolabScripts/wiki/Debugging-Guam

Some nice things there .. would be great to merge them into the doc above. Do 
you want to do that, or should I?

> that knows a little bit of PHP and Python and packaging.
> I wonder if those people from the community should need to learn Erlang.

One can dream ;) But, no, I don't think it is entirely necessary.

On that note: While we would like to get rid of PHP in the long term, Python 
will not be going away. There will be more Elixir in the future, however. 
Thankfully that is MUCH more like the Python/Ruby world in terms of syntax and 
overall form, so the learning curve is less (though not entirely zero, of 
course).

The CloudSuite bridge has been written in Elixir, for instance.

(Yes, I wrote "has been" ... we have some exciting things to share with all of 
you this month ..)

> >> But for the open source user that just wants to manage his family
> >> email, it is overkill.
> > 
> > I would say that's true of a lot of things in Kolab, though ...
> 
> Perhaps we (as a community) should collect a basic set of features
> that is expected from Kolab.

Regardless of whether this results in a minimal edition or whatever, I feel 
this would have great value in that it would help Kolab Systems understand 
better what the *community* needs and wants. 

In a dream world this would be a broad community survey helping us all 
understand where and how people use Kolab at home or in their work.

> And then work on a minimal edition of Kolab?

Hopefully that isn't necessary; every variance is a complication for everyone.

> I just think, if we have trouble getting a release Kolab 16.1 out,
> perhaps we should focus on the core?

That isn't the core issue behind release problems ... the core issues are 
rooted in priorities and resource management, something we've made huge 
strides forward in at Kolab Systems this past year. We have a few more things 
to get sorted out, but I expect 2017 to be a lot smoother in general here.

As to focusing on the core, I agree that there is more complexity in places 
that makes it feel like there must be a "kernel" of Kolab  in there somewhere. 
That is something we need to address in the coming year(s). Personally, I 
would like to see each release of Kolab become less complex and more 
predictable, and that does indeed require a focus on "the core" as you put it, 
and thinking about the design of the pieces a bit more with our "big picture" 
glasses on.

.. but more on that in other threads in other days ...

> I also say that because packaging Kolab for Distributions like Fedora,
> it would be less work, and more likely to happen.
> Sometimes it is better to have something than nothing at all?

IME, having variants increases work loads in key areas that ends up reducing 
quality overall. It would be nice to avoid multiple versions, and instead 
focus on how we can simplify what we have to the point that it is attainable.

> >> Too many dependancies on Erlang and such.
> > 
> > .. that is really its ONLY dependency. Everything else, like openssl, is
> > already required for Kolab. So .. I don't understand "too many"
> > dependencies .. unless what you mean is "Erlang is a new dependency, and
> > any new dependency is undesired"?
> > 
> > If so, can you explain why?
> 
> Sorry, my words "and such" was not appropriate to what I wanted to say.
> What I meant: Looking at
> https://obs.kolabsys.com/project/monitor?project=Kolab%3AWinterfell
> There are 64 packages with a name starting with erlang.

Yeah, that's because Fedora/CentOS/RHEL split erlang all to hell and back 
coupled with the fact that we are doing non-vendorized builds of the 
erlang/elixir apps.

Having the core erlang distribution chopped up the way Fedora does is very 
annoying. Other distributions respect the upstream intentions of the erlang 
project much better and ship a single package for the core erlang OTP. Ah, 
well, it is what it is.

As for the non-vendorized builds, that means we ship packages for each of the 
erlang libraries used. When it is just guam, that looks like a fair number. 
But as the number BEAM apps we ship grows, those packages get shared as they 
will be re-used from project to project. We don't need more than one logging 
library, after all :)

> Perhaps if erlang was uptodate in the mainstream distributions (it
> seems it is in Debian, but not in the Redhat Universe), and Kolab
> would not need to package it, then I would not complain. It just looks

We'd still have the erlang libraries we use that distros don't package 
(because 99% of erlang apps vendorize..)

But yes, as the distros catch up with newer Erlang OTP versions, the number of 
packages will drop. As you note, some distros already do a better job of that 
than others. Debian and Suse are two examples.
 
> > There are very good reasons for using Erlang here, and we are producing
> > more code using BEAM (the Erlang equivalent of Java's JVM) languages ...
> > so I'd like to understand this.
> 
> Perhaps you need to communicate more what you want to do with it.
> I read
> https://exote.ch/blogs/aseigo/2015/12/10/guam-an-imap-session-filterproxy/
> and came to the conclusion that only one scenario (filtering folders) has
> been implemented and makes sense to a home user or small business. For huge
> enterprises, I understand that you need Erlang.
> If I see more practical use of Erlang that also benefits smaller
> users, I am ok with it.

It allows us to use the resources of large enterprises to bring cool things to 
the home users. That is a pretty compelling benefit imho.

The other benefit is that once an application is mature, it is far easier to 
make it bullet-proof, meaning lowered maintenance and troubleshooting because 
something keeps falling over. We've had so many issues with even quite small 
installations and the reliability of things like kolabd .. and yes, those 
could be sorted out without using Erlang, but it's a lot more work and lot 
easier to get wrong. A system that keeps working as intended even in the face 
of occasional error conditions is quite a blessing for small installations.

> > So of course you can do it in the imap server. Only you are now dealing
> > with C, which is not only lower productivity but a greater security risk
> > and rather more work to get to be performant.
> > 
> >> What do people think?
> > 
> > It really is not a question of "can you" (one can do almost anything with
> > enough effort, after all), but what the effort required and results out
> > the
> > other side are.
> > 
> > I would be interested in seeing your patches to cyrus for this.
> 
> Thank you for the challenge. This motivated me to look at it.

:)

> I have attached a patch.

Cool; would be nice to have this put in for review somewhere to have one of 
the cyrus devs look at it. Even if it can not be upstreamed, polishing it 
can't hurt.

> compared to
> https://cgit.kolab.org/guam/tree/apps/kolab_guam/src/rules/kolab_guam_rule_f
> ilter_groupware.erl the patch is quite small.

Certainly, because it doesn't have to filter anything and the folder metadata 
is already locally available.

> Does this make the Cyrus server slower than guam?

Probably not, no.

> We probably cannot submit the patch upstream, 

Not without making it rather more generic, no.

> but maintaining it
> locally is still less work than the guam package with its extra
> service.

it may well be. maintaining downstream patches never quite leaves a good 
feeling.

> Until there are more scenarios implemented by guam that make
> sense for home users and small offices.

BTW .. a couple of odd uses for guam: 

 * proxying multiple imap servers to just one local server over different 
ports. I've actually already used this myself to be able to swap the 
configuration of the destination IMAP server without having to touch client 
config.

 * securing stupid clients that can't do security right. I've already helped 
set it up in one place where some users were dead set on continuing to use 
their squirrel mail installation (!!!) and thanks to guam they could connect 
insecurely to guam on the local network (same machine, even) and guam would 
then do the TLS to the IMAP server. instant security improvement.

 * troublshooting IMAP .. ok, this is more of a developer thing, but being 
able to see ALL the IMAP traffic in both directions and even inject data into 
that is handy in circumstances. All things you can do with enough wireshark 
voodoo, but rather easier with an actual IMAP proxy at hand.

... and that's without even doing any fancy rulesets :)

THAT said .. if people do have needs / desires for such rulesets, I'd be very 
happy to get them as tasks on git.kolab.org so we could get around to 
implementing some of them.

-- 
Aaron Seigo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.kolab.org/pipermail/devel/attachments/20161107/c94e7c21/attachment.sig>


More information about the devel mailing list