Skip to content

Roadmap

Amitai Schleier edited this page Jan 23, 2021 · 53 revisions

1.09

  • Remove 1.08's "intent to remove" programs (unless any of them make sense as extensions)
  • #35 FHS (issue #2)
    • split conf-qmail in to conf-qmail-bin, conf-qmail-queue, conf-qmail-man, etc.
    • /var/qmail/DIR unless /var/qmail not in conf-qmail
    • Configuration sugar: ./configure && make && make install (issue #9)
  • Debian (deb), RedHat (rpm), and /package packaging
    • #76 binary builds on openSUSE build service and locally
      • deb and rpm builds. (was issue #59)
    • FHS-aware (default on): /var/qmail contains symlinks to FHS-compatible paths
    • FHS-strict (default off): /var/qmail does not exist
    • #61 Extract an "instqueue" program from instpackage.
    • issue #91 Include support for slashpackage-format packages
  • bugfixes
  • code standardization
    • Refactor the C code, by replacing valid K&R (The C Programming Language first edition) constructs with valid C89 (ANSI, The C Programming Language second edition) constructs, when there is a C89 feature that supersedes a construct in K&R. (e.g., function signatures, adding int type specifiers.) Even when a K&R construct is legal in C89.
      • headers
        • #65 fix usage of most POSIX functions
      • types
        • #70 remove register storage class declaration from codebase.
        • #84 use ssize_t in substdio library.
    • Fix all compiler warnings generated by warning settings consistent with the codebase being legal C89, and possibly informed by later C standards, to include at least the default conf-cc.
      • correctness (undeclared function)
        • #77 use ANSI/C89 function signatures.
        • issue #7 Stop redeclaring system functions
      • C89 v C99
        • issue #7 Stop redeclaring system functions
    • issue #48 Make regular use of code analysis tools development
  • documentation modernization
    • #36 Append .md suffix to text docs. Adjust references.

1.9

Use the latest DJB libraries

  • Replace stralloc with array
  • Replace substdio with buffer
  • Replace time-handling code with libtai
  • Replace DNS resolver code with djbdns's
  • #88 Use mess822.
  • Replace poll/select with iopause
    • Possibly add kqueue and/or epoll support to iopause
  • Replace exec (and related env_puts) with pathexec
  • Update to latest cdb
  • Use socket for any remaining networking code that's still necessary

Introduce new programming interfaces for use by extensions

  • Custom error strings for qmail-queue
  • Extension interface
    • #50 This adds spawn-filter binary for filtering message passed to qmail-remote/qmail-local
  • Extension API for qmail-smtpd
  • Tiny changes to qmail-smtpd for optionally running under a qmail-popup-alike SMTP AUTH parent program
  • Refactor qmail-remote to call an admin-configurable tcpclient
  • Publish qmail-popup, qmail-pop3d, qmail-qmtpd, and qmail-qmtpc as extensions
  • code standardization
    • Refactor the C code, by replacing valid K&R (The C Programming Language first edition) constructs with valid C89 (ANSI, The C Programming Language second edition) constructs, when there is a C89 feature that supersedes a construct in K&R. (e.g., function signatures, adding int type specifiers.) Even when a K&R construct is legal in C89.
      • headers
        • #43 cleanup: remove readwrite.h, use unistd.h instead.
        • #44 cleanup: remove exit.h, use unistd.h instead.
        • cleanup: remove fork.h, use unistd.h instead.

2.0

queue-breaker release

  • new build time defaults for on-disk queue
  • add queue repair tool.
    • #67 remove qmail-upq
    • including the ability to upgrade a 1.x queue to 2.x in-place.
  • merge big-todo (changes queue layout)
  • increase default conf-split to 31 (changes queue layout)
  • merge ext-todo
    • add a qmail-todo manpage, issue #23
  • merge netqmail-big-concurrency
  • qmail-ldap, or enough interfaces to let extensions provide LDAP integration
  • make sure everything works with vmailmgr, vpopmail, other approaches to "virtual users"
  • Merge changes for high-volume installations that are harmless defaults in 2020 (taking care to migrate smoothly)
  • remove deprecated code
    • #71 remove install script.

2.1

Port unmerged, blessed netqmail patches to the extension interface

2.2

Extensions for postmaster interfaces

  • Help developers adapt some code of theirs and get it merged

2.3

Extensions for email clients

  • Help developers convert more of their existing code to plugins

2.4

Modernize Binc IMAP

  • Get our hands on the original repo; else reconstitute as best we can
  • Push the repo to a new notqmail-org project ("notbinc"? "ninb"?)
  • Fix compile warnings
  • How well does it handle huge maildirs?
  • Fix how Maildir++ folders have to appear as subfolders of INBOX (by seeing how Dovecot manages)
    • Then remove IMAPdir support, unless there's some other reason to keep it
  • Assuming it has unconstrained MIME recursion (@leahneukirchen's pet bug found in most mail software), constrain it
  • Add UCSPI-TLS to bincimap-up
    • Then remove OpenSSL code
  • Optionally reindex on message delivery (some sort of qmail-local integration)
  • Maybe gradually refactor C++ to C