Monday 9 May 2016

Proposal Explained

Hi readers,
In this post I will try to explain the project that I will be doing this summer.

Project Title : Preset List Settings Template(aka Styles)
Organization  : GNU Mailman
Mentors          : Abhilash Raj, Barry Warsaw, Terri Oda, Florian Fuchs


Some basics:
What is Mailman?
Mailman is a piece of software that is used for managing mailing lists, newsletters etc. It mainly has four components:
1: Core- It is responsible for the actual delivery of the emails, management of user data(subscriptions, preferences etc.) and for the handling of the requests made by REST API.
2: Postorius- It is official web user interface of the Mailman which helps users(list members, list admins, moderators) in managing their settings(preferences, subscriptions) and the settings of their lists.
3: Mailman Client- It provides the glue code which enables a developer to write its own scripts and front-ends which can communicate with the core without caring for the underlying details and changes. Postorius also uses it for communicating with the core.
4: Hyperkitty- It is official archiver of the Mailman which provides access to the list archives and provides a way to interact with the lists.

What's the purpose of a mailing list?
A mailing list is simply a list of e-mail addresses of people that are interested in the same subject, are members of the same work group, or who are taking class together. When a member of the list sends an email to the group's special email address(the address of the mailing list), the e-mail is broadcast to all of the members of the list automatically. The subscribers can opt either to receive the mail immediately or as digests(a single mail containing all the new mails posted to the list).
At least there can be two type of mailing lists:
1: Announcement lists: These type of lists are used for broadcasting information to a group. The users who subscribe to these lists are eligible for receiving mails from this list but they can't send mails to the list.
2: Discussion lists: These types of lists are meant for sharing ideas, discussing some thing about some particular topic etc. Each member can send message to list distribution to all other members which in turn can then share their ideas, give feedback etc.

What is a 'Style'?
Managing a mailing list may be a tedious task. The list administrators need to manage a number of settings which govern how their list behaves. Mailman refers these set of settings as 'Style'. When we define a new 'Style' we create a new set of settings that can be applied to a mailing list. Mailman uses a database to store the 'settings' of a list. By 'applying a style to a list' we mean to take the 'values' of the attributes(settings) from a style and copy them to the database.

Present Scenario(Or the problem)-
Currently for defining a new style, the users need to create a file containing a python class which implements the 'IStyle' interface. This class will be containing all the necessary details required for defining the new style and the name of this class will be the name of the new style(which has to be unique). This file then needs to be copied to one of the import paths so that mailman can load it. This is process is much more tedious than it seems. Also only the users having shell access to the machine are able to define a new style. Furthermore, managing styles becomes an extremely difficult task. For defining a new style, it becomes mandatory to know Python(as he/she will need to write python code). Not only this, there is a one more big issue that is: At present a style can be applied to a list only when it is created. It means that if we change a style, then, the settings of the mailing lists using that style are not updated automatically. This posses a serious problem in managing the list. For tackling this problem, the Postorius provides a "List Settings Form" which enables a user to change the settings of the list. But that too contains just a handful of the settings and if the user has to take the support of an external web form for managing the list settings then it becomes a serious question on the usefulness of the styles in managing the list settings.

Aims of my project-
My project aims at providing a web interface(as part of Postorius) that will help the users in creating the new styles and managing the existing ones and to make it possible to manage the list settings via modifying a style, i.e., if a user updates some settings in the style then those the corresponding settings of the mailing list using that style should automatically get updated. This will make the whole process of defining a new style and managing a list's settings using it just a matter of few clicks.

That's it for now. I hope that it was not difficult to follow. I will be posting more of the technical details about the project as soon as my semester exams end.

Thanks,
Harshit Bansal

No comments:

Post a Comment