Hi Glyph,

Thanks for sharing this info from PyCon. Much appreciated.

On Fri, 31 May 2024 at 00:07, Glyph <gl...@twistedmatrix.com> wrote:

> Hello Twisted list,
>
> We had a brief Twisted birds-of-a-feather session at PyCon 2024.
>
> One issue that came up was that while Twisted works fine for the things
> that it does, we don't have a great onboarding process to motivate new
> developers to get involved and maintain it or build new things.  In
> particular, Twisted's main value these days is no longer in the reactor, as
> the stdlib's core asyncio functionality is quite capable, but in our suite
> of protocol implementations and integrations.
>
 However, "it's got a ton of custom wire protocols" is less interesting in
> an era where there are fewer mainstream things that use custom wire
> protocols.  So what are interesting things that we already do with wire
> protocols that, with a fresh coat of paint, could appeal to an audience of
> new developers to revitalize the project in general?
>
>
To that end, we discussed a few projects:
>
>
>    1. We should resurrect the effort to build a first-party websockets
>    implementation: <https://github.com/twisted/twisted/issues/4173>.
>    It's been nice to have Autobahn available, but websockets are by far the
>    quickest and easiest way to provide a *native* demonstration of
>    Twisted's capabilities.  Luckily, we do not have to build an implementation
>    ourselves, as a maintained sans-io kernel implementation exists in the <
>    https://github.com/python-hyper/wsproto> project.  So we just need to
>    do a direct integration with the Resource model in twisted.web.  I will
>    probably do some work on this project myself.
>    2. Twitch's chat is IRC <https://dev.twitch.tv/docs/irc/>, but
>    Twisted's IRC implementation is missing some implementation details.  An
>    IRC bot tutorial could thus actually be a very relevant introduction to a
>    large audience of developers.  Joel McGrady has volunteered for this effort
>    and has written up some of the IRCv3 issues that will need addressing as
>    part of it: https://github.com/twisted/twisted/issues/12180
>    3. We could probably do something interesting and fun with email, if
>    we updated twisted.mail to make sure it worked with recent mail clients and
>    did a little tutorial?  Email is still relentlessly popular despite decades
>    of progress.  Nobody has volunteered for this yet.
>    4. We already have a ton of work on SMB that just needs to be
>    un-stuck, both in terms of reviews and fixes: <
>    https://github.com/twisted/twisted/pull/1274>.  I really appreciate
>    Ian contributing this to Twisted and I'd like it to see it eventually make
>    it into a release, so I'm highlighting it here.  If anyone wants to pick up
>    responding to review feedback, you can make a fork of his fork, grab the
>    branch and open a new PR to start addressing things.
>    5. Everyone then mumbled "HTTP/3"? But nobody seemed to actually care
>    about that.
>
>
>
1. For Twisted web, before looking into websocket I think that it would
help to add support for streaming.
The main thing is to allow dispatching / traversing the URL as soon as the
headers are received, rather than as soon as the whole request is received.

I am doing a few "custom" HTTP things and since the beginning I had to use
a fork of twisted.web

But yes. Websocket would be nice.

3. SMTP is still popular. I am using it in production
with simple authentication methods.

 I don't think that POP3 is popular.

And I don't know if IMAP4 is still relevant.

For SMTP and IMAP4 what we can do is provide "out of the box" helpers for
implementing the whole XOAUTH2 dance for various OAuth2 providers.

Recently I had to interact with Exchange Online.
I have implemented XOAUTH2 with Entra ID, but the Exchange Online security
setup was complicated.
I ended up just using the MS Graph API for the job.

4. For SMB , I don't know if we need yet another Python SMB library.

I am using https://github.com/jborean93/smbprotocol .... it uses thread,
but I know that the maintainer would like to have support for async.

In general, I would prefer to see Python developers working on sans-io
libraries and then you can have them backed by asyncio, twisted, trio,
greenlet.

5. Before implementing HTTP3, I think it would help to get support for
streaming in HTTP 1.1 and web socket.

---------

The main reason why I use Twisted is the commitment for backward
compatibility, twisted.conch.ssh and ldaptor

I have not yet tried AsyncSSH

I don't know if there is any other LDAP server for Python, with MIT or BSD
licence.

All of these efforts should be done documentation-first, to try to evaluate
> how to build a successor to the aging "finger" tutorial series, and to make
> sure that we have something to point new developers at so that they can
> find their way around Twisted.
>
>
Writing documentation is hard... and in the end , new developers will
always go with the project that has the best documentation... even if the
project might not have a clean code  or a good suite of automated tests.

I think that one of the big issues that a Twisted  developer is facing is
the lack of documentation.

I feel that with the goal of creating secure and complete examples, the
documentation and examples are hard to understand.
A new developer might be overwhelmed by all the complexity and then try
some other library.

I remember that I was trying to create a simple SSH server example.
And the code ended up quite complex to avoid users reusing a testing SSH
key or supporting both user + password and ssh key...
and using the Twisted Cred infrastructure.

Recently I checked the IMAP4 client.
There is an example, but I found it hard to navigate.
The TrivialPrompter adds extra complexity, and the whole code would be much
easier to read with inlineCallbacks.

Another example is setting up an SSH server on Windows or SFTP server or
client on any OS... this is hard

Regards

-g
> _______________________________________________
> Twisted mailing list -- twisted@python.org
> To unsubscribe send an email to twisted-le...@python.org
> https://mail.python.org/mailman3/lists/twisted.python.org/
> Message archived at
> https://mail.python.org/archives/list/twisted@python.org/message/XGSMXM3X2IVD7GEUI3AKYTP2YTJK356M/
> Code of Conduct: https://twisted.org/conduct
>


-- 
Adi Roiban
_______________________________________________
Twisted mailing list -- twisted@python.org
To unsubscribe send an email to twisted-le...@python.org
https://mail.python.org/mailman3/lists/twisted.python.org/
Message archived at 
https://mail.python.org/archives/list/twisted@python.org/message/TWYZNR545CPD372ZSTDJ4WCXKMM3RBXY/
Code of Conduct: https://twisted.org/conduct

Reply via email to