GSoC for working professionals

Hi everyone
Nice to meet you all! I am interested in GSoC 2022 and I discovered that Mailman might be one of the interesting projects I would like to contribute to. However, I am not a student, but I am working as a software engineer full time (10-6 on weekdays). I would like to start contributing to open source projects and stumbled upon GSoC which I thought it's a great opportunity to get started. If I am able to churn out 14.5 hours of work per week (by working on the weekends) across 12 weeks (summing up to 175 hours), do I stand a chance to be accepted as a GSoC participant?
Thanks, Christopher Chong

Hello Christopher,
the eligibility criteria by the sponsor are at https://developers.google.com/open-source/gsoc/faq#what_are_the_eligibility_... They do not seem to exclude your use case.
If you are willing to deliver results, I do not think that anybody is going to prohibit you from participating in GSOC.
https://wiki.list.org/DEV/Google%20Summer%20of%20Code%202022 contains a list of Mailman3-Ideas for GSOC.
In the meantime you can setup mailman+mailmanclient+postorius+hyperkitty+mailman- hyperkitty+django_mailman3 on your system. There are different way to get the setup. You can also submit some trivial improvement, like grammatical corrections of the documentation.
I personally installed mailman few weeks ago and have not deployed it yet in production.
The MLM I use currently has a notion of Sub-List: all subscribers of a mailing list A, are automatically subscribers of mailing list B, if B is a sub-list of A. Moreover, the subject-prefix all subscribers get is the one of the mailing list A, when a mail is sent to A (and received by B-subscribers). One of the concerns migrating to mailman3 for me is the lack of this feature (or at least I have not found it yet).
Some email providers offer “Feedback loop”. That is, when a mail is sent from your server to their server and a user clicks that mail explicitly as spam, your server gets a notification (in “Abuse Reporting Format”) and can unsubscribe the user from a mailing list, when the ARF message contains the user, and the mailing list name.
For the closed-source MLM I use I have implemented the above functionality and I would like to get it working for Mailman. That would be, upon receiving an ARF message, sending a POST-request to the REST API, containing:
- the subscriber address
- the returned message
- the mailing list name
Then Mailman shall unsubscribe the address from the mailing list, and send a (templated) message to the subscriber, telling her which email message she has marked manually as spam, why she was unsubscribed and how can she subscribe again).
Some email providers are more stubborn in sending the ARF-messages, as they delete the address of the subscriber, but keep the original Message-Id header.
So when an ARF-message is received from such providers, it shall be possible to decode from the Message-Id the real recipient, and trigger the un-subscription process for the decoded email address. The encoding of the ML-recipient in the Message-Id header is to my knowledge currently not possible.
So one idea for GSOC is to extend mailman to handle ARF-messages (or parts of it), which arrive over the REST-interface.
The rationale for the REST-interface is, that all ARF-messages for a server are send to a single email address and the software handling that address can decide, if it is a mailman-originating message and forward it to mailman, otherwise handle it differently. (In fact, the software could also redirect the message over LMTP to a special address, but getting a message over LMTP of REST is almost the same here).
Greetings Дилян
On Sun, 2022-03-20 at 15:20 +0800, Christopher wrote:

Please note that the person who wrote this is not a core developer in Mailman or participant in GSoC on the mentoring side. That may change if they volunteer, of course (you don't have to be a core dev to mentor, although the final merge to the distribution mainline needs to be by a core dev).
The official Mailman GSoC ideas page is at https://wiki.list.org/DEV/Google%20Summer%20of%20Code%202022 Proposals there have been somewhat vetted for "size" and "difficulty".
Other than that, I don't have time right now to either endorse or deprecate any of the suggestions in this post. If you find them interesting, feel free to discuss them.
Дилян Палаузов writes:

Christopher writes:
You stand a chance, yes. I don't know if we have specific preference for students, I'll have to discuss it with Abhilash, but we're not going to rule you out because you're working already. At present you're the only person who's expressed interest, too. :-) (That doesn't mean nobody's downloading code and looking for easy patches, though.)
In a later post you mention the "REST Callbacks" task. I think that was Abhilash's idea, I'll see if I can get him to flesh it out a little. But the basic idea is exactly as stated in the ideas page:
Request Request
+------+ 1 +-----------+ 2 +------+
| |---->| |---->| |
| User | | Postorius | | Core |
| |<----| |<----| |
+------+ 4 +-----------+ 3 +------+
Response Response
So this means that, for example, Postorius can't present a real-time dashboard for moderators that shows whether a list has held posts that the moderator needs to check and approve or reject. The system needs to start with a request at 1, pass it on to 2, then core responds at 3, and finally Postorius passes it back to the user at 4. What we'd like to be able to do is register a callback with core so that when it receives and holds a post, it tells Postorius without needing a request, and then Postorius would update the dashboard.
The dashboard (Postorius <--> User interaction) is not part of this project. At present we don't have such a real-time interaction between Postorius and the user. But for that to be most useful, rather than have Postorius continuously polling core with "are there held message? are there held messages? are there held messages? ...", we want to use such a callback mechanism. The REST API callbacks are a first step in that direction.
Steve

Hi Steve
Thanks for the confirmation on my eligibility and the explanation on the REST callback problem.
May I know what sort of technology do you guys have in mind to build such a REST callback? The idea page mentioned a pubsub model, which to my understanding it's to use an event queue where Core is the publisher, and Postorious is the subscriber. Does this mean building a pubsub model using some Python libraries?
Thanks, Chris
On Tue, Mar 22, 2022 at 3:58 PM Stephen J. Turnbull < stephenjturnbull@gmail.com> wrote:

Hello Christopher,
the eligibility criteria by the sponsor are at https://developers.google.com/open-source/gsoc/faq#what_are_the_eligibility_... They do not seem to exclude your use case.
If you are willing to deliver results, I do not think that anybody is going to prohibit you from participating in GSOC.
https://wiki.list.org/DEV/Google%20Summer%20of%20Code%202022 contains a list of Mailman3-Ideas for GSOC.
In the meantime you can setup mailman+mailmanclient+postorius+hyperkitty+mailman- hyperkitty+django_mailman3 on your system. There are different way to get the setup. You can also submit some trivial improvement, like grammatical corrections of the documentation.
I personally installed mailman few weeks ago and have not deployed it yet in production.
The MLM I use currently has a notion of Sub-List: all subscribers of a mailing list A, are automatically subscribers of mailing list B, if B is a sub-list of A. Moreover, the subject-prefix all subscribers get is the one of the mailing list A, when a mail is sent to A (and received by B-subscribers). One of the concerns migrating to mailman3 for me is the lack of this feature (or at least I have not found it yet).
Some email providers offer “Feedback loop”. That is, when a mail is sent from your server to their server and a user clicks that mail explicitly as spam, your server gets a notification (in “Abuse Reporting Format”) and can unsubscribe the user from a mailing list, when the ARF message contains the user, and the mailing list name.
For the closed-source MLM I use I have implemented the above functionality and I would like to get it working for Mailman. That would be, upon receiving an ARF message, sending a POST-request to the REST API, containing:
- the subscriber address
- the returned message
- the mailing list name
Then Mailman shall unsubscribe the address from the mailing list, and send a (templated) message to the subscriber, telling her which email message she has marked manually as spam, why she was unsubscribed and how can she subscribe again).
Some email providers are more stubborn in sending the ARF-messages, as they delete the address of the subscriber, but keep the original Message-Id header.
So when an ARF-message is received from such providers, it shall be possible to decode from the Message-Id the real recipient, and trigger the un-subscription process for the decoded email address. The encoding of the ML-recipient in the Message-Id header is to my knowledge currently not possible.
So one idea for GSOC is to extend mailman to handle ARF-messages (or parts of it), which arrive over the REST-interface.
The rationale for the REST-interface is, that all ARF-messages for a server are send to a single email address and the software handling that address can decide, if it is a mailman-originating message and forward it to mailman, otherwise handle it differently. (In fact, the software could also redirect the message over LMTP to a special address, but getting a message over LMTP of REST is almost the same here).
Greetings Дилян
On Sun, 2022-03-20 at 15:20 +0800, Christopher wrote:

Please note that the person who wrote this is not a core developer in Mailman or participant in GSoC on the mentoring side. That may change if they volunteer, of course (you don't have to be a core dev to mentor, although the final merge to the distribution mainline needs to be by a core dev).
The official Mailman GSoC ideas page is at https://wiki.list.org/DEV/Google%20Summer%20of%20Code%202022 Proposals there have been somewhat vetted for "size" and "difficulty".
Other than that, I don't have time right now to either endorse or deprecate any of the suggestions in this post. If you find them interesting, feel free to discuss them.
Дилян Палаузов writes:

Christopher writes:
You stand a chance, yes. I don't know if we have specific preference for students, I'll have to discuss it with Abhilash, but we're not going to rule you out because you're working already. At present you're the only person who's expressed interest, too. :-) (That doesn't mean nobody's downloading code and looking for easy patches, though.)
In a later post you mention the "REST Callbacks" task. I think that was Abhilash's idea, I'll see if I can get him to flesh it out a little. But the basic idea is exactly as stated in the ideas page:
Request Request
+------+ 1 +-----------+ 2 +------+
| |---->| |---->| |
| User | | Postorius | | Core |
| |<----| |<----| |
+------+ 4 +-----------+ 3 +------+
Response Response
So this means that, for example, Postorius can't present a real-time dashboard for moderators that shows whether a list has held posts that the moderator needs to check and approve or reject. The system needs to start with a request at 1, pass it on to 2, then core responds at 3, and finally Postorius passes it back to the user at 4. What we'd like to be able to do is register a callback with core so that when it receives and holds a post, it tells Postorius without needing a request, and then Postorius would update the dashboard.
The dashboard (Postorius <--> User interaction) is not part of this project. At present we don't have such a real-time interaction between Postorius and the user. But for that to be most useful, rather than have Postorius continuously polling core with "are there held message? are there held messages? are there held messages? ...", we want to use such a callback mechanism. The REST API callbacks are a first step in that direction.
Steve

Hi Steve
Thanks for the confirmation on my eligibility and the explanation on the REST callback problem.
May I know what sort of technology do you guys have in mind to build such a REST callback? The idea page mentioned a pubsub model, which to my understanding it's to use an event queue where Core is the publisher, and Postorious is the subscriber. Does this mean building a pubsub model using some Python libraries?
Thanks, Chris
On Tue, Mar 22, 2022 at 3:58 PM Stephen J. Turnbull < stephenjturnbull@gmail.com> wrote:
participants (3)
-
Christopher
-
Stephen J. Turnbull
-
Дилян Палаузов