= Google Summer of Code 2019 Ideas Page = Mailman is free software for managing electronic mail discussion and e-newsletter lists. Mailman is integrated with the web, making it easy for users to manage their accounts and for list owners to administer their lists. Mailman supports built-in archiving, automatic bounce processing, content filtering, digest delivery, spam filters, and more. Many open source denizens will be familiar with Mailman 2.1, which is used to manage many project mailing lists. All of our current work is on Mailman 3, which was released in 2015, but there's still lots of room for new features and ideas! Not sure about how GSoC works? Check out the [[https://google.github.io/gsocguides/student/|GSoC student Guide]] <> == Getting Started == The [[https://google.github.io/gsocguides/student/|GSoC student Guide]] has some great general GSoC information. Read it first! Before you ask any questions about how to do anything in git or initialize your repository please read through the [[../HowToContributeGit|git howto]] and see if that answers your questions. == Recommended Skills == Here's a few skills that will make it easier for you to get started as a Mailman developer: * '''Python programming.''' You can be fairly new to Python, but you're going to have to be comfortable reading the Mailman code and asking questions if you aren't sure how it works. * '''Familiarity with any version control.''' We use git on Gitlab, but any experience will help you here. * '''Ability to setup a development environment for Mailman.''' You'll need access to a Linux machine or VM, and we will help you set to it up. * '''Ability to communicate with the Mailman developers.''' You'll be expected to post to the public mailing lists, ask questions, and describe the work you're doing. Specific projects may have additional desired skills listed along with them. == What is Mailman Suite? == In Mailman 3, we've divided up the code into a number of sub-projects. We refer to the whole package as "Mailman Suite" and there's a few really important pieces you should know: * [[https://gitlab.com/mailman/mailman|Mailman Core]] - This is the part that actually sends and receives mail and handles subscriber and list information. * [[https://gitlab.com/mailman/postorius|Postorius]] - A web interface for managing Mailman lists (e.g. subscribing, changing preferences) * [[https://gitlab.com/mailman/hyperkitty|Hyperkitty]] - A web interface to access GNU Mailman v3 archives. There's also a number of smaller projects that provide the glue to make these pieces work well together, or allow them to be used separately. [[https://gitlab.com/groups/mailman|All the Mailman source is now on GitLab]]. == Documentation & Installation == Here are some useful links to get you started with Mailman Development: * [[http://docs.mailman3.org/|Documentation homepage]] * [[../HowToContributeGit|Contribution Guidelines]] * [[http://list.org/|The Mailman website]] * [[http://gnu-mailman.readthedocs.org/en/latest/|Mailman Core documentation]] Mailman is written in Python. Mailman supports Python 3.5+. Each individual projects may have their own restrictions on the Python versions you can use depending on the support of the their dependencies. Development work on Mailman 2.1 has been frozen for some time, so '''all new project ideas must be related to Mailman 3'''. == GSoC Application Process == To be considered as an applicant for Google Summer of Code 2019, we need you to contribute at least one non-trivial Merge Request and have that accepted. The best way to get started is to set up a local development environment, documentation for which is [[http://docs.mailman3.org/en/latest/devsetup.html | available here]]. You can then find issues tagged with "beginner-friendly" and "easy" on [[https://gitlab.com/groups/mailman/-/issues?sort=created_date| our Gitlab Page]]. Feel free to open more issues when you find them. == Contacting us == '''The most successful GSoC students are the ones who work closely with the Mailman team.''' As you might expect from a group that makes mailing list software, our preferred method of communication is our mailing list, but we also have an IRC channel. Please do not send private messages or emails unless asked to do so or the subject is personal rather than technical, since we get a lot of similar questions and would rather the questions and answers happen in public so everyone can benefit. * Mailing list to use for GSoC discussions: [[https://mail.python.org/mailman/listinfo/mailman-developers|Mailman developers mailing list]] * IRC channel: #mailman on irc.freenode.org == Writing Your Application == * The [[https://google.github.io/gsocguides/student/|GSoC student Guide]] has some great information * [[DEV/Tips for Prospective Google Summer of Code Students|Tips for Prospective Google Summer of Code Students]] (general good advice) * [[DEV/SPAM|Tips for writing a good GSoC proposal]] (advice on structuring and composing the document) * [[DEV/GSoC-Application-Template|Our GSoC Application Template]] You might also want to look at [[http://wiki.list.org/DEV/Google_Summer_of_Code_2015|Last year's page]] == FAQ == * I am interested to contribute to Mailman and participate in GSOC, how do I start? [[http://wiki.list.org/DEV/Tips%20for%20Prospective%20Google%20Summer%20of%20Code%20Students| This page]] might be of some help. This question has been asked tons of times on the mailing list (mentioned above) and IRC Channel (again, mentioned above). Both of them are logged publicly and are searchable. It would be really nice to go through them once before you ask the same question again. More specific questions are encouraged and receive more attention than "How do I start?". Mentors do try hard to reply to each and every email to the developers list, but in case you don't get any replies on trivial questions, don't be discouraged. Also, in case you are a student, helping others with small problems that you know about is also a great way to get noticed. Don't worry too much about giving wrong answers, list is constantly monitored by the core developers and your mistakes would be corrected. * I am a beginner, what is the best way for me to contribute? Issues, bugs and tests are obviously a good way to contribute. But, writing/improving documentation is another great way to contribute for beginners. It doesn't have to be a real commit or patch, write up a detailed blog post about what problems you faced while setting up mailman for development. What parts of mailman you find are difficult to understand? What are awesome things about mailman? '''Note:''' To qualify for Google Summer of Code, your proposed project must be a coding project. That's Google's rule. Documentation and tests help to make a substantial contribution, but only count toward GSoC to the extent that they apply to your ''new or changed'' code. Additional work on documentation or testing is considered a community contribution, which is a consideration in deciding who to accept. * My MR has been pending for a long time, what should I do? In most of the cases the reason for a MR to be pending is that there is either something missing or something incorrect. In either of those cases, first check the MR itself and any issues associated with it, to see if there are comment you have missed. If it's not obvious what you need to do next, contact any mentor or the org admin (maxking) and we'll look into it, or ask the relevant person. I don't mean that you do that for each one, just the ones that haven't been noticed by anyone for a *long time*. (Use your judgment as to what is "long" when there's a deadline coming up.) == Project Ideas == If you have other idea you'd like to propose , please send it to mailman-developers@python.org for discussion! You can also look at the to-do list for Mailman 3.0 [[DEV/Mailman 3.0|here]], and see if anything is interesting enough that you would like to work on it through the summer. == Moderating Emails and Threads in Hyperkitty == Hyperkitty is GNU Mailman's official archiver. However, it also supports some advanced functionality which allows users to send messages/emails through its web interface. Moderation of topics being discussed in a Mailing List has been one of the biggest complaints on Mailman Users. Email is a very distributed and open protocol, which makes it hard to restrict users from following up on threads that have been going on for a long time and need to be shut down. With Hyperkitty, we can tackle this problem by adding moderation actions to specific Email Headers. This allows us to moderate all the replies to a message (In-Reply-To: and References: header fields). ==== Requirements ==== * Intermediate level ==== Mentors ==== * Abhilash Raj (maxking on IRC) * Stephen J. Turnbull (yaseppochi on IRC) == Add support for bounce processing in Core == In Mailman 3, bounces (undeliverable posts) from various email addresses are recorded. This information can be used to temporarily suspend delivery to the subscriptions of that address, alert the administrators and list owners, and/or various other actions can be taken. There exists an implementation in Mailman 2.1.x series and can be used as a reference to implement a similar or more advanced system in Mailman Core. ==== Requirements ==== * Intermediate level ==== Mentors ==== * Abhilash Raj (maxking on IRC) * Stephen J. Turnbull (yaseppochi on IRC) == Support for REST Callbacks in Core == Mailman Core exposes a REST API for the clients to request information from it and display that to users in their respective UI. Postorius uses the API to allow admins/list owners to manage the lists and subscribers to manage their subscription. Hyperkitty uses the API to fetch information about the new mailing lists created so that it is ready to archive emails for those lists. The changes in the Core's database today aren't conveyed to Clients. Instead, clients which care about changes must poll the REST API , which is quite inefficient. Core could use a pub-sub model to send out events, which Hyperkitty and Postorius (clients) can subscribe to. ==== Requirements ==== * Hard level ==== Mentors ==== * Abhilash Raj (maxking on IRC) * Stephen J. Turnbull (yaseppochi on IRC) == Support for multiple wsgi servers == Mailman Core's API today runs using wsgiref, which is a reference implementation of wsgi protocol in standard library. However, there are some other more performant implementations of wsgi servers, like gunicorn or uwsgi. The intent of this project is to support running the REST API using any random wsgi server with little configuration. ==== Requirements ==== * Intermediate Level ==== Mentors ==== * Abhilash Raj (maxking on IRC) * Stephen J. Turnbull (yaseppochi on IRC) ----