Unifying the Cyrus World

Nicola Nye nicolan at fastmail.com
Wed Jan 6 20:00:45 EST 2016


Hi Patrick,

I've logged all your recommendations (great feedback, thanks!) in the
Phabricator system so they're not lost in the dusty archives of our
collective inboxes.

https://git.cyrus.foundation/maniphest/
https://git.cyrus.foundation/T226
https://git.cyrus.foundation/T225
https://git.cyrus.foundation/T224
https://git.cyrus.foundation/T223

There's also my large placeholder for all the missing outstanding doc
items that Bron wrote up for me last year at
https://git.cyrus.foundation/T219

Our documentation contribution guide is here:
http://cyrusimap.org/new/imap/developer/documentation.html

If you end up making a Phabricator account, let me know and I can
reassign the relevant tasks to you. But if you'd rather just send
through some files/patches on the mailing list, I can merge it all back
in.

I'm going to take a look at the overall structure and come up with A
Plan. While we do currently have the contributor section (for
developers) and the administrator section (for folks running cyrus), I
agree the navigation is confusing and the content within those sections
feels buried in a maze of twisty passages all alike. Takes too many
clicks to find what you're looking for.


   Nicola

On Thu, Dec 31, 2015, at 12:01 AM, Patrick Goetz via Cyrus-devel wrote:
> Hi -
> 
> Having just recently struggled with a 
> still-not-100%-clear-how-it-happened mailboxes.db corruption issue that 
> Bron ended up having to help me fix, I have some thoughts on this.  And 
> the recent bout of banging my head against the wall over this issue for 
> days has left me motivated to write up some of this documentation 
> myself, assuming I can find the information necessary.  Here is my list
> 
> 1. Suppose the /var/imap folder (the one containing the critical *.db 
> files) disappears completely:  A step by step tutorial on how to get 
> your mail system back up and running.  Such a tutorial alone would go a 
> long way towards clearing up the mysteries of how indexing is related 
> user mail folders.  This tutorial should include explanations of what 
> can't be recovered (e.g. which messages have been viewed, possibly sieve 
> scripts, etc.).
> 
> 
> 2. Documentation on safely backing up and restoring a cyrus mail system. 
> There was a discussion about this on the list a year ago:
> 
>  
> https://lists.andrew.cmu.edu/pipermail/info-cyrus/2014-December/037849.html
> 
> (Further up the thread)
>  
> https://lists.andrew.cmu.edu/pipermail/info-cyrus/2014-December/037799.html
> 
> Which I consider inconclusive.  While Nic's suggestion to use 
> replication is probably the safest approach, there still needs to be 
> something for people who run a single mail server and want to keep it 
> that way.  There's something to be said for simplicity.  Also, the 
> process of setting up a replication server (with and without murder) 
> needs to be documented better.  In the thread above, Nic suggested that 
> I look at this documentation:
> 
>    http://cyrusimap.web.cmu.edu/docs/cyrus-imapd/2.4.17/ag.php
> 
> which I found to be mostly unhelpful.  Tutorials are good even when they 
> dont match your exact use case.  Too much abstract hand-waving is just 
> confusing to most people.  I'd rather read a common use case tutorial 
> and then extrapolate to my own situation from there.  Way too many 
> critical details end up getting left out when you talk about these 
> issues absractly.
> 
> 
> 3. The creation, use, and maintenance of sieve scripts.  I dug into this 
> earlier this month and found almost nothing available online.  I did get 
> some helpful responses on the cyrus list:
> 
>  
> https://lists.andrew.cmu.edu/pipermail/info-cyrus/2015-December/038701.html
> 
> but this should be in the documentation; including a tutorial on how to 
> work with sieve scripts and pointers to 3rd party tools, with perhaps 
> even a description of how to set up and use them.
> 
> 
> 4. Organization of the documentation.  It looks like the worst case 
> scenario of having docs spread out over 2 domains with completely 
> different organizational schemes, style, etc.. is being addressed, but 
> some thought should nevertheless be given to this very difficult task. 
> My suggestion is to look at the organization of the documentation from 
> different perspectives:
> 
>   - a new or potentially new cyrus user who knows absolutely nothing
> 
>   - a somewhat experienced cyrus admin looking to quickly get an answer 
> to a specific question
> 
>   - a cyrus admin who wants to implement some new functionality, say 
> moving from a single server to a murder, or start using sieve scripts
> 
> I use both cyrus and dovecot (the first by choice, the latter because I 
> got outvoted in a larger organization).  Arch, Red Hat, and Ubuntu all 
> package dovecot as the default IMAP server; on Arch I have to install 
> cyrus from the AUR.  I'm convinced that the one and only one reason for 
> this is that the dovecot guy has had pretty good and thorough 
> documentation from the very beginning.  (That, and the cyrus project was 
> dormant for a while.)  Technically, cyrus is cleaner, faster, more 
> scalable, etc..
> 
> Soapbox:  having worked with open source software for decades, it's very 
> clear to me that open source projects become successful not on the 
> quality of the code, but rather the quality of the documentation.  Good 
> projects with poor documentation generally die if there is an 
> alternative, poorly conceived projects with good documentation succeed. 
>   Django is (in my opinion) pretty crappy software compared to say, 
> bottle.py (which most people haven't even heard of).  Why is Django so 
> popular?  Because they took the time to write good documentation.  In 
> fact, if you want to use an MVC python web framework, the trick is to 
> read the Django documentation first, and then use something like 
> bottle.py or flask for your web app.  Most developers don't bother to 
> follow up with step 2.  They read the Django documentation ... and then 
> use Django.
> 
> 
> 
> On 12/30/2015 03:02 AM, Nicola Nye via Cyrus-devel wrote:
> > Hi Patrick,
> >
> > Just before Christmas we got all the access sorted out and there's now a
> > copy of docs.cyrus.foundation on cyrusimap.org/new, and it's
> > auto-updating. It all took longer than we had hoped given FastMail's
> > exciting few weeks with the DDoS situation.
> >
> > When I'm back in the office after the New Year I'll look at what's the
> > best way to go moving the old site out of the way and whether we
> > maintain any redirects so any old bookmarks still work for common entry
> > points.
> >
> > Then we can start on the larger task of integrating the docs source back
> > into the cyrus code source.
> >
> > If there's areas that you think need immediate and obvious updating, do
> > let me know (especially if you can provide pointers to where I can get
> > the information from, even if it's just links to list threads); I'd
> > rather ensure that my time is spent easing definite pain points.
> >
> > Cheers,
> >
> >     Nicola
> >
> > On Mon, Dec 28, 2015, at 01:45 AM, Patrick Goetz via Cyrus-devel wrote:
> >> Was this issue ever resolved?  I'm still finding the documentation split
> >> between cyrus.foundation and cyrusimap.org, and it's incomplete in both
> >> places.
> >>
> >> On 09/16/2015 08:50 PM, Nicola Nye wrote:
> >>> Dear Cyrus folks,
> >>> After nominally completing the migration of the docs from the wiki at
> >>> cyrusimap.org onto the sphinx repository at docs.cyrus.foundation, I
> >>> worked out there was a whole bunch of existing services at cyrusimap.org
> >>> that were non-trivial to relocate. Which, after some discussion at the
> >>> Cyrus hangout, we felt that retaining cyrusimap.org as our primary (and
> >>> sole) presence made more sense.
> >>> Equally, there are some documentation issues that are affected by our
> >>> current straddling of two worlds. Read on for a discussion of the issues
> >>> and down to the options and recommendation.
> >>> I'd love to have your input (particularly Nic Bernstein on the docs
> >>> angle!) if you agree or disagree so we can make for a more unified Cyrus
> >>> presence.
> >>> *Issues*
> >>> 1) Branding
> >>> We are currently split across two internet presences: cyrus.foundation
> >>> and cyrusimap.org. This is confusing. We should only have one.
> >>> The cyrus.foundation domain name is not of real use as there is a
> >>> pre-existing entity (The Cyrus Foundation) of the same name.
> >>> Swapping our internet domain name presence from cyrusimap.org to
> >>> cyrus.foundation is no longer a significant driver as a result,
> >>> especially as cyrusimap.org is already indexed and linked to around the
> >>> net and is unambiguous. (Yes, Cyrus does so much more than just imap,
> >>> but it's the primary association)
> >>> Currently services are split across the two domains - git repos,
> >>> phabricator and authoritative online docs on cyrus.foundation, while
> >>> downloads, bugzilla and generated docs are on cyrusimap.org.
> >>> 2) Docs logistics
> >>> The docs repo is separate to source which is causing friction keeping
> >>> man pages updated.
> >>> We want man pages in two formats: *nix for actual man pages to ship and
> >>> install with cyrus, and html for web presentation.
> >>> Nice to have: ship a snapshot of all current docs (not just man pages)
> >>> along with source distribution.
> >>> 3) Sphinx vs wiki
> >>> We have been working towards making the content on cyrus.foundation to
> >>> be the most up to date. This is using Sphinx, which allows us to
> >>> generate, from the same source, man pages as well as web pages. (And
> >>> even pdf or single page html). So we get nicer output format options.
> >>> Clearer history in the git log than you get from wiki.
> >>> Cyrusimap docs are held in mediawiki. Not so great for man pages. But
> >>> it's much easier for third party contributor to pitch in and help out:
> >>> they don't need to learn rst, they don't need a phabricator account,
> >>> they don't need to navigate git.
> >>> *Possible solutions*
> >>> In all cases it seems clear that we should stop using the
> >>> cyrus.foundation domain and ideally services that are hosted there be
> >>> shifted to live alongside cyrusimap.org for ease of access.
> >>> There are a number of @cyrus.foundation email accounts that would need
> >>> to be dealt with for Chris Davies' testing.
> >>> Option 1: Single domain, unify git repos, use sphinx everywhere
> >>> --------------------------------------------------------------------------------
> >>> Moving the git repo to cyrusimap (or anywhere) isn't hard. (a job for Bron)
> >>> Get rid of separate cyrus-docs repo. Put cyrus-docs stuff back inside
> >>> cyrus-imapd/docs for easier man page generation and tagging of docs
> >>> versions with source, and shipping of current docs with source.
> >>> Put sphinx on cyrusimap to replace the wiki. This requires either:
> >>>
> >>>   1.
> >>>      working out how to set up the existing generated docs for use with
> >>>      sphinx,
> >>>   2.
> >>>      or make all the stuff in cyrus-imapd/doc into rst so it works with
> >>>      sphinx. We can still ship the built html.
> >>>
> >>> Option 2: Single domain, unify git repos, use wiki for docs
> >>> -----------------------------------------------------------------------------
> >>> Put sphinx on cyrusimap.org just for generating man page html. Leave the
> >>> existing wiki where it is for documentation. (Requires porting the page
> >>> updates I made from cyrus.foundation onto the wiki).
> >>> This means the only thing left in the cyrus-docs git repo would be the
> >>> man pages, at which point it makes more sense to put them back into the
> >>> cyrus-source repo.
> >>> We can still ship docs with the release if we tie in a wiki export into
> >>> the release-building process. (A job for Ellie and I)
> >>> Option 3: Single domain, separate git repos, use sphinx for docs
> >>> ----------------------------------------------------------------------------------
> >>> Move all services to cyrusimap.org, but still leaves us with all the
> >>> docs logistics and sphinx and wiki chafe points. Not recommended.
> >>> *Recommendation*
> >>> I am leaning towards suggesting option 2. Anything that makes
> >>> documentation support easier is a good! But we'd still like to retain
> >>> the usefulness of sphinx for generating two output formats from single
> >>> source man pages.
> >>> *What Now?
> >>> *
> >>> Discuss! I imagine those folks who come to the Hangout in the next few
> >>> meetings will kick it around and we'll come to a decision next week.
> >>>      Nicola
> >


More information about the Cyrus-devel mailing list