Thank you Stephen for your response.

I am interested in this task because it is a great engineering challenge which 
can help me learn a lot of things.
With my basic knowledge of pub-sub model, this is the solution I came up with -
We design a queue based pub/sub system for observing database change in the 
mailman core and this message is broadcasted. Then any independent client can 
subscribe to this message on the queue(by default implementation). As soon as 
there is any change, there will be a new change message on the subscribed feed 
and this will prompt the database to sync it with the mailman core database.

We can use a queue application like RabbitMQ or Kafka, and wrap and create a 
publisher on the mailman core using ZeroMQ library. We can use this to create a 
socket and create message and command that the client side database would need 
to run in order to sync itself. The same thing would be done on the client 
side, in which we can create a subscription model, which will subscribe to the 
message and check for the changes. Since we use Alembic for managing 
migrations, the queue will have to work closely with Alembic to observe all the 
changes and publish the required message.

For the part of code which is responsible for handling database, I think it's 
src.mailman.database.

This is all based on my preliminary research. Please let me know if I am wrong 
anywhere. I will correct myself and reinforce towards a better and new solution.

Best Regards
Shubhank

On 30/03/21 11:52 am, Stephen J. Turnbull wrote:
> Shubhank Saxena writes:
>
>  > My name is Shubhank(https://gitlab.com/shubhank-saxena).
>
> Welcome, Shubhank!
>
>  > I have now started to write a proposal in the same direction and I was
>  > wondering how can I start the discussion regarding the Mailman Core
>  > projects that are given on the webpage (
>  > https://wiki.list.org/DEV/Google%20Summer%20of%20Code%202021). I am
>  > interested in the project "Support for REST Callbacks in Core".
>
> That starts the discussion. :-)  Tell us about why you're interested
> in that task, what you plan to do (to the extent you know -- some
> people know a lot, some people know almost nothing, I can't say that
> coming in with knowledge doesn't give the former a headstart, but for
> those in the "know little" situation, plenty of students have caught
> up in the past, you can do it too!)  If you have questions about
> what's expected, what part of the docs and code to start reading, etc,
> asking those questions is a good place to start.
>
>  > Also, is the IRC channel active?
>
> Well, it's open.  At present, the core developers/mentors are in UTC-7
> and UTC+9, so getting together online at the same time is non-trivial.
> It will be more active now that GCSoC applications are open (sorry, my
> client seems to be unhappy after system upgrades, so I'm not online at
> the moment).  You can find me as yaseppochi and Abhilash as maxking in
> #mailman.
>
>  > I did not see any conversations happening so I was wondering if the
>  > mode of communication has shifted strictly to the mailing list?
>
> It depends on what we're doing.  Up until now everybody was mostly
> working solo, Abhilash on Mailman 3, Mark on Mailman 2 and user
> support, me on user support and GSoC prep.  So "asynchronous"
> communication by mailing list made sense.  It also provides a less
> ephemeral record than IRC (yes logs, but AFAICS most people don't keep
> logs all that much).
>
> Regards,
> Steve
>
_______________________________________________
Mailman-Developers mailing list -- mailman-developers@python.org
To unsubscribe send an email to mailman-developers-le...@python.org
https://mail.python.org/mailman3/lists/mailman-developers.python.org/
Mailman FAQ: https://wiki.list.org/x/AgA3

Security Policy: https://wiki.list.org/x/QIA9

Reply via email to