Precise project plan


now I try to create a more detailed plan for the gsoc time. It should now split up the big step into small steps. Additional to the plan, I will try to identify major milestones for successful completion of the project time.


  • Make detailed plan and schedule
    • Make blog and branch for reporting progress. Done
    • Post draft plan to blog and commit to branch. Done
    • Get mentor comments. Done
    • Revise and repost, commit revision. Done
    • Get mentor approval. Done
  • Get initial software (Mailman 3 and Twisted)
    • Download/checkout Mailman 3. Done
    • Download/checkout Mailman 3 requisites, if any. Done
    • Download/checkout Twisted. Done
    • Download/checkout Twisted requisites, if any. Done
  • Get initial software running
    • Build Mailman 3. Done
    • Run test suite successfully. Done
    • Create a test list. Done
    • Successfully post a test post. Done
    • Explore admin interface
      • Discover possible places for extension with NNTP specific global settings.
      • Find places for NNTP specific settings per list.
    • Build Twisted. Done
    • Run test suite successfully. Done
  • Get protocol documentation
    • Get RFCs 3977,5322,5536,5537,6048 (NNTP), commit to branch. Done
    • Review reference list and Appendix A of RFC 3977 for more references. Done
    • Check for updates (including IETF drafts) to protocol documentation. Done
    • Get/commit any references identified in previous steps. Done
    • Study protocol documentation
      • Identify the minimal subset of the available commands to support. Done
      • Identify additional commands needed for Mailman 3. Done
      • Identify commands, that need special handling for Mailman 3 in contrast to a classical news server. Done
      • Identify requirements for archived messages (f.e. to have a global unique identifier). Done
  • Check Twisted NNTP server for suitability
    • Find out how "heavy" Twisted server is Done
      • Find out how much code in Twisted NNTP is for the NNTP server. (Currently most code seems to be for example back ends and some huge interfaces with empty methods.)
      • Respecting code size, evaluate if such a "huge" dependency like Twisted is reasonable for only one archiving daemon.
      • Evaluate compatibility between Twisted reactor framework and asyncore from python core. Estimate required changes of NNTP code, if ported to asyncore and dropping Twisted requirement.
    • Review Twisted docs (or source if necessary or contact the author) for RFC conformance claims. Try to test conformance if no documentation is available. Done
    • Verify Twisted implementation of needed functionality identified during studding of protocol documentation. Done
  • Design integration of NNTP daemon control to Mailman 3
    • Identify the main settings, that should be configurable by the user, using the configuration file. Done
    • Identify needed daemons (if needed more than the NNTP server). Done
    • Identify needed extension of the REST mailman.client API (if needed).
  • Design integration of NNTP server to message store
    • Check out HyperKitty. Done
    • Study message store implementation. Done
    • Review Mailman-Developers traffic about message store. Done
    • Identify possibilities to ensure required properties of messages identified before (from the protocol documentation).
  • Implement daemon control
    • Extend the schema.cfg with the new configuration options and document the possible values. Done
    • Supply needed default configuration values in mailman.cfg and extend if needed. Done
    • Extend the admin web interface with the required run time settings for the NNTP daemon.
    • Implement the daemon start up. Done
    • This step could be extended further, if new requirements appears during the design phase of the daemon control.
  • Implement message store integration
    • Add possibility to get messages from message store on request. Done
    • Add required changes to the messages, if they are archived for the NNTP server (if some required changes identified before). Done
    • This step could be extended further, if new requirements appears during the design phase of the daemon control.
  • Other integration of NNTP into the Mailman 3 core
    • Add login with registered accounts to NNTP Server. Done
    • Handling of messages, posted via the NNTP Server.
  • Test
    • All significant functions should be covered with unit tests that are integrated into the test framework.
    • Additional to this, the final code version, committed to my personal mailman branch should be fulfil at least the following acceptance tests. The acceptance tests could also be ensured using the built in test framework. But is this test should use real infrastructure and therefor have to be run separately.
      • Message posted to a mailing list, with enabled NNTP archiver, should be accessible via NNTP just after it was delivered using the mail infrastructure. Done
      • Messages posted to a mailing list, with disabled NNTP archiver, must not be accessible via NNTP.
      • Messages posted to a private mailing list, must not public accessible via NNTP. Done
      • Registered Mailman 3 accounts should be able to log into the NNTP server, optional via TLS. Done
      • Private archives of a list should be only accessible if logged in, with the registered Mailman 3 account, that is subscribed to that list. Done
      • It should be possible to send a message to the NNTP daemon using the POST command, that should be forwarded to Mailman 3 core and handled like messages that are delivered via SMTP, especially they should be send out as mail to the subscriber of the list and should appear in all enabled archivers like normal messages.


  • All tasks, that should be ready until mid term, are marked bold above. These are manly the planing and evaluation tasks. There for the committed code may only be some test cases. But depending on the evaluation results, maybe also the port of Twisted NNTP to asyncore.

    My personal deadline for these tasks is Friday 6th July. So it should be possible to look through the documentation and the commits to give feedback before midterm and to be able to evaluate for mid term submission in google melange.

    If necessary, the response to the feedback should be completed before mid term deadline.

  • The first step after mid term would be to study the protocol documentation and identify all required features, that should be supported by the NNTP server and that are needed for Mailman 3. If the NNTP implementation does not support all necessary functionality it should be extended in this step.

    Depending on the amount of needed extension of the NNTP implementation, the time this step requires could be very different. If all is supported out of the box, it should be done within one week (Friday 20th July). But even if some functionality is missing, this step should not need more then two weeks (Friday 27th July).

  • The next step would be the design steps. These steps does not essentially produce code. Therefore the results should be presented in a blog post and as posts to the developer mailing list.

    It should be possible to create a design for the daemon and message store integration within on week. Until this deadline, the marked steps should be revised and extended if necessary.

  • If the design is ready, it should be simple to implement the required parts as module into the Mailman source. Withing one week afterwards the integration of the daemon control and the interface to the message store should be ready. So even if the second step lasts longer because of massive extensions of the NNTP server, this step should be ready at the last Friday 10th August and so even before suggested pencil down date.

  • The Tests task should be run always besides coding. The written code should get test and documentation immediately after creation. Also it should be ensured, that the code suit the coding guidelines of Mailman 3 and it should be tried to get the code into the mainline.

Yeah. Larger than expected but I hope this plan and schedule will be a good fundament to successfully complete the gsoc project.


Comments !