#pragma page-filename DEV/versions/10715181 {{{#!wiki note This page needs more clean up. You can help! }}} = About Dynamic Sub-lists = '''Dynamic Sublists''' or dlists, is a feature added by Systers to the Mailman-2.1.10 version they use. This feature was implemented with the aim of providing flexibility to the list subscribers and has been in our production branch for more than 6 years now. In between Systers have carried out various discussions with Mailman team regarding Dlist. We aim to upstream/integrate this feature with the upcoming Mailman 3 version so that the larger Open Source world can benefit from it. == Flexibilty provided by Dynamic Sub-lists to Subscribers == === Subscribe/Unsubcribe from new conversations === List subscribers can decide whether to be a part of new conversations or not. If the users decide to subscribe to new conversations, then they will receive all the messages of a new conversation unless they explicitly unsubscribe from it. If they otherwise decide to unsubscribe from new conversations,then they will receive only the first message of every new conversation unless they explicitly subscribe to it. '''Advantages Served:''' 1. List Users depending upon the conversation can anytime opt to be a part of conversation or not. 1. It prevents the inbox to get unnecessarily filled up with conversations that are of no interest. 1. It prevents List Users to either switch over to Digest or worst Unsubscribe from the entire list if many uninteresting conversations start hitting their mailbox at some point of time.    === Other incoming Email-Address/Alias === The list subscribers can like to be able to send messages to the list from 1 or more email addresses other than the one with which they subscribed. '''Advantage Served:''' 1. One situation that I think this feature can be of great importance is the one where a list user wants to send a message to the list but also wants to hide his/her identity at the same time. This is achieved as he/she can send that message from an anonymous email-address entered as alias and not otherwise known to the list. == List Administrator and Dlists == === Create a list as DLIST or Non-Dlist === While creating a list the List Administrator can choose to define a list as either a Dlist (Original Mailman list with Systers added features) or Non-Dlist (original Mailman list). == Essay == An essay is a set of questions that can be asked by the listadmin, which has to be answered by the subscriber in order to subscribe. The essay feature can be enabled by the list creator when creating the list, and at the same time the list creator can choose which questions to ask. The default when enabling this feature are the questions used for the Systers mailing list at present (during integration this Default will be changed to NULL string) but by simply editing the field with the questions the list creator can choose to have other questions instead. The field takes markdown syntax and if only plain text is entered, it will appear as just such. If the essay feature is enabled the subscribers can't subscribe to the list without entering at least some text in the appropriate field. Should list creators not want to have an essay, they can simply mark this when creating the list and ignore the questions field. === USE CASES === '''Create List ''' || '''Actor''' || List Owner || || '''Goal''' || To create a list with Dynamic Sublist feature enabled. ||| '''Basic course of events''' 1. Use Case begins when Owner wants to create a new list. 1. Owner goes to the list creation page(or can also use command line utility to create a list) 1. He/She chooses the Dlist option as 'yes' and also whether to have the 'Essay' feature enabled or not during the list creation process. 1. System creates the list with Dynamic Sublist feature enabled and also creates the database required for that list. '''Delete List''' || '''Actor''' || List Owner || || '''Goal'''  || To delete a list || '''Basic course of events''' 1. List Owner decides to delete one of the existing lists. 1. He/She Executes the rmlist command on terminal and can also mention whether the List Archives are to be deleted or not.  1. System checks whether the list is a Dlist or not,if yes then it deletes all dynamic list related info including the database associated with it.If not then it deletes the Non-dlist.     '''!SubscribePeopleTo List''' || '''Actor''' || Moderator || || '''Goal'''  || To subscribe People to list || '''Basic course of events''' 1. Moderator decides to invite a person(or a group) to a list. 1. Moderator selects whether he/she wants to send an invitation message or not and sends invites by entering the email id(or list of email ids) on the Mass Subscription page. 1. System subscribes the Person(or group) to the mailing list. 1. If the list is a Dlist then the system also updates the subscriber info in the database associated with the Dlist.  '''!UnsubscribePeopleFrm List''' || '''Actor''' || Moderator|| || '''Goal''' || To unsubscribe a Person or Group  from a list || '''          Basic course of events''':     1. Moderator decides to unsubscribe a spammer or a subscriber not abiding to the rules of the list or a subscriber for any specific reason. 1. He unsubcribes the person or group by entering their email id on the mass removal page. 1. System unsubscribes the Person(or group). 1. If the list is a Dlist then System updates the database accordingly. '''!GetSubscribedTo List''' || '''Actor''' || List User || || '''Goal''' || To subscribe to a list || '''Basic course of events''':     1. User decides to subscribe to a List. 1. He/she fills all details including the 'ESSAY' portion(if the essay feature was enabled during List Creation) on the !ListInfo page. 1. System subscribes the Person to the mailing list and sends an invitation message with all user account details. 1. If the list is a Dlist then system also updates the database associated with the Dlist with the new subscriber info. '''!GetUnsubscribedFrm List''' || '''Actor''' || List User || || '''Goal''' || To unsubscribe from a list with Dlist feature enabled. || '''Basic course of events''':     1. List user decides to unsubscribe from a List due to some reason. 1. List User goes to the member Options page and selects the unsubscription option. 1. System unsubscribes the user from the List. 1. If the list is a Dlist then the System automatically updates the database.  '''!GetAllConversationTrafficOf List''' || '''Actor''' || List User || || '''Goal''' || To subscribe to all new conversation always(unless user wants to explicitly unsubscribe from a particular conversation) || '''Basic course of events:''' 1. List User decides to hear all conversation mails(Mail of the person who initiated a conversation and all the corresponding replies to that conversation for all List Users) 1. List user goes to the Options page. 1. Sets the 'Subscribed to new conversations?' option to 'Yes' 1. System updates the user request in the Database for Dlist. '''!GetOnlyInitialCnvrstnMsgsOf List''' || '''Actor''' || List User || || '''Goal''' ||To unsubscribe from all new conversation always(unless user wants to explicitly subcribe to a particular conversation),ie to get only the *1st* mail of every new conversation started and not the corresponding replies. || '''Basic course of events:''' 1. List User decides to get rid off  all conversation traffic of a list hitting the inbox except the first mail(Mail of the person who initiated the conversation) 1. List user goes to the Options page. 1. Sets the 'Subscribed to new conversations?' option to 'No' 1. System updates the user request in the Database for Dlist. '''Get Digest''' || '''Actor''' || List User || || '''Goal''' || To get all List Discussions as Digest. || '''Basic course of events:''' 1. List User decides to receive List conversations as Digest 1. List user goes to the Options page and sets the ''''Set Digest Mode'''' option to 'Yes' 1. The System sends mails bundled in Digest to the subscriber from then onwards.If its a Dlist then depending on the user preference of either receiving the entire list traffic or just getting the initial mails of every conversation thread the System sends Digest accordingly. '''!StartA Discussion''' || '''Actor''' || List User || || '''Goal''' || To start a new conversation thread on Dlist || '''Basic course of events:''' 1. List User decides  to start a new discussion. 1. He/She sends email to listname+new@domain or listname+new+name@domain where the name is the 'name you will like to give the conversation'. 1. System sends the mail to all List Users and automatically updates the Dlist database with conversation thread details.   '''!ReplyToA Discussion''' || '''Actor''' || List User || || '''Goal''' || To reply to an ongoing discussion. || '''Basic course of events:''' 1. List User decides to reply to a discussion going on in the list. 1. He/She Replies back to a conversation by using mailers Reply-all option or by simply replying to address listname+subject@domain if he/she wants his/her message to goto all List Users.If the List User wants to reply only to the sender of the mail then he/she simply uses the 'reply' option. 1. The system checks whether the list is a Dlist or not,If not then it processes the reply and sends it to all List Users.Otherwise if its a Dlist then the system sends the mail only to those List users who have opted to receive all conversation traffic of the list. '''!GetNoFurtherMailOf  Discussion''' || '''Actor''' || List User || || '''Goal''' || To unsubscribe from an ongoing Dlist conversation. || || '''!PreCondition''' || List User has opted to receive all conversation traffic of the list.|| '''Basic course of events:''' 1. User Finds a particular discussion not useful and decides not to make his/her inbox filled up with messages following that discussion. 1. He/She sends email to listname+subject+unsubscribe@domain or goes to a link as mentioned in the footer of each conversation message to opt out from conversation. 1. The system records the user request in the Dlist database.If later on any message is send to that discussion all List users will get that message except those who have decided to opt out from discussion. '''!GetAllMsgsOf a Discussion.''' || '''Actor''' || List User || || '''Goal''' || To subscribe to an ongoing Dlist conversation.|| || '''!PreCondition''' || List User has opted to receive only the first conversation message of every discussion of the list. || '''Basic course of events:''' 1. List User decides to get all the messages of a discussion started on the list. 1. They send email to listname+subject+subscribe@domain or go to a link as mentioned in the footer of the first conversation message received.  1. The system records the user request in the Dlist database.If later on any message is send to that discussion the List user will get all following messages and replies. '''!HaveAlias Email-id''' || '''Actor''' || List User || || '''Goal''' || To be able to send mail from an email-address other than the one from which the list user had subscribed to the Dlist. || '''Basic course of events:''' 1. List User decides to have another email-id(either to be able to send as anonymous or for any other reason) to be able to send mail from. 1. List user enters the email-id to 'Other incoming email addresses' option in Options page for members. 1. System updates the database for that Dlist with the List User's other incoming email-address '''!SendMailFrm Alias''' || '''Actor''' || List User || || '''Goal''' || To be able to send mail from an email-address other than the one from which the list user had subscribed to the Dlist. || '''Basic course of events:''' 1. List User decides to send mail from Alias email-id. 1. List user initiates a conversation or reply to one on the List from the alias address. 1. System performs a check to ensure that the sender exists in list of subscribers or their respective aliases,If yes then his/her mail is processed further and send to all list users otherwise he/she gets an automated reply and the mail is dropped or send to the moderator(depending on the list settings). '''!ChngOrRmv Alias:''' || '''Actor''' || List User || || '''Goal''' || To be able to change or Remove the Alias email address. || '''Basic course of events:''' 1. List User decides to change his/her Alias email-ids. 1. List user can change the list of Aliases in 'Other incoming email addresses' option in Options page for members.He/She can set it to blank for removing all aliases. 1. The System updates all the changes to Dlist database and allows the user to send mails from his/her Alias email-id thereafter.  '''HOW DLIST WAS IMPLEMENTED IN MAILMAN (A brief insight into technical details):''' * [[DEV/Brief Technical Details|Brief Technical Details]]