Hi,

Stuart Henderson wrote on Wed, Sep 09, 2015 at 05:51:18PM +0100:
> On 2015/09/09 11:47, Amit Kulkarni wrote:

>> AFAIK, the original rationale for importing sqlite into base was for
>> storing the database table (INDEX?) for building ports using dpb. It
>> can be switched to a port module with some pains.

> mandoc uses it.

True, or more precisely, man(1), apropos(1), whatis(1), and makewhatis(8)
use it, mandoc(1) itself does not.

That definitely wasn't the original rationale to import sqlite,
though.  If i remember the discussion back then correctly, people
said:

 1. It will be useful for all kinds of cool stuff in base.
    Once we have it, people will use it at various places.
 2. Code quality is not too bad.
 3. Code size is not excessive.
 4. The chief developer is very serious and cooperative.

I don't remember anybody challenging any of that at that time, and
i don't remember anybody ever challenging point 4 at any time.  Once
it was in, Kristaps got excited about point 1 above and used it to
replace db(3), and indeed, that solved some minor problems (for
example with byte order and races) and made it marginally easier
to integrate and polish some cool new features.  When i started
work to clean up mandoc-sqlite integration during t2k13, mostly
motivated by the perspective of using a database concept and
implementation less dated than db(3), i didn't question points 2
and 3 above, i neglected to consider whether points 2, 3, and 4 are
sufficient reasons that depending on it does no harm, and i neglected
to do any kind of code audit or review of development speed, goals,
and practices.  Since about s2k14, i bitterly rue that neglect.
I definitely wouldn't use sqlite again for the mandoc toolbox.
The project goals are simply and plainly incompatible.  Sqlite is
too much about database featurism, accepting considerable bloat
into the codebase, while mandoc needs to focus on minimalism and
security and is only harmed by advanced database features and in
particular by performance optimizations complicating the code.

That said, i'm considering half a dozen different options to get
rid of the mandoc dependency on sqlite.  But all of them imply
considerable effort and/or considerable loss of features.
Of course, features lost might get restored later if it comes
to that.

No definite plans exist yet.  Maybe, the dependency on sqlite
might even remain.  Who knows at this point.

Note that i'm just saying this publicly to avoid misunderstandings
about the relationship between mandoc and sqlite.  I will not
participate in a public discussion of these matters, but will discuss
this only among OpenBSD developers, and maybe privately with package
maintainers in other operating systems, for example, but no necessarily
limited to, FreeBSD, pkgsrc, illumos, and Alpine, Void, and Crux
Linux.

Yours,
  Ingo

Reply via email to