Andrew Godwin, a Python developer, writes about Django, async Python, migrations, Channels, and the Fediverse project Takahē.
HN commenters credit him as the creator of South and Django migrations, and link his posts on Takahē's maintenance status.
In contrast, donations by Roberto Rosario:
- Gold sponsor of Django schema migration work (http://www.aeracode.org/2013/04/11/whole-load-kickstarting/)
- Gold sponsor of the Django multi template engine work (https://myks.org/en/multiple-template-engines-for-django/funders/)
- Gold sponsor for the Django REST framework work (http://www.django-rest-framework.org/topics/kickstarter-announcement/#gold-sponsors)
- Gives money and time to groups looking to increase participation of women to STEM fields like #IncludeGirls (https://medium.com/ladies-storm-hackathons/include-girls-137ab2168bbe) (https://aldia.microjuris.com/2013/10/07/ciclo-de-conferencias-sobre-criptografia/) (https://www.eventbrite.com/e/python-django-workshop-tickets-9132677083#).
- Has started initiatives like PythonLatino and DjangoLatino to increase Latinamerican participation in Django and Python.
- Was chairman of the group that got the PyCon started in Cuba after travel restrictions were relaxed.
- Author or many Python and Django popular projects that help a lot of people like Awesome Django (https://github.com/rosarior/awesome-django).
- Sponsored STEM books.
- PSF candidate with endorsements by Python leaders like Anna Ravencroft, co-author of the Python Cookbook along with her husband Alex Martelli, fellow of the Python Software Foundation (https://en.wikipedia.org/wiki/Alex_Martelli) (https://wiki.python.org/moin/PythonSoftwareFoundation/BoardCandidates2015#roberto-rosario).
Many more but…
> The issue is if you need to add an async call to an existing synchronous code base.
What it seems is needed is a blue function that wraps a red function with (in the simple case, though the actual inplementation needs to be more complicated to identify when thr sinple case applies vs when you have to do something more complicated) a dedicated single-item event loop and returns its result [0] (in async-await, I’d want to have a keyword “sync” used much like “await” but in an otherwise synchronous context to wrap a red function in this blue function.) JS—or at least browsers specifically—might avoid having this, or the tools to do it, to avoid encouraging use of async constructs in a sync context which could kill UI liveness, but for other red/blue async/sync environments it would be useful to have, whether in function or keyword form.
[0] “async_to_sync" in this article is an example (for Python, but the general idea would be the same un any environment): https://www.aeracode.org/2018/02/19/python-async-simplified/
Kind of.
48 contributors total (Yes, Andrew is doing most) - https://github.com/andrewgodwin/channels/graphs/contributors
It sounds like it wasn't decided to keep 3rd party as much as decided not to not combine yet:
> The feedback I got during the proposal process for putting Channels into Django 1.10 (it did not get in before the deadline, but will still be developed as an external app with 1.10) was valuable; some of the more recent changes and work, such as backpressure and the local-and-remote Redis backend, are based on feedback from that process, and I imagine more tweaks will emerge as more things get deployed on Channels.
https://www.aeracode.org/2016/6/16/philosophy-channels/
You can still use Channels today in 1.8–1.10.
https://blog.heroku.com/in_deep_with_django_channels_the_future_of_real_time_apps_in_django
This project is very much in the spotlight, was heavily discussed at PyCon, etc. I don't think it's going anywhere.
Close, but not exactly, Andrew Godwin, the creator of South, has added support for migrations into the dev branch of Django, to be part of the Django 1.7 release.
https://docs.djangoproject.com/en/dev/topics/migrations/
Andrew has significantly rethought migrations and applied the lessons he's learned from years of maintaining and developing South.
He's kept a developer diary that has been pretty fascinating to read (YMMV):
http://www.aeracode.org/2013/11/27/new-apps-migrations/
and others at:
http://www.aeracode.org/category/django-diaries/
[update: route3 is faster than me, but still it's worth checking out the developer diaries]
I think part of what he's insanely good at is carefully soliciting feedback from other people, particularly those with a lot of experience with similar but distinct problems. The final spec goes back close to a year (https://www.aeracode.org/2015/6/17/beyond-request-response/ https://groups.google.com/d/topic/django-developers/mt1mTNvc0Ew/discussion) and the polish really shows.
I think of that as a “senior developer” skill which is easy to underestimate since it doesn't directly translate into tons of commits but is so critical to the long-term success of a project.
As I understand it, the new migrations module is more fully featured than south: eg, it intelligently squashes/flattens migrations together to avoid redundancy when you run the migrations (say you create a model in migration 1, and remove it in migration 3 after changing approach, the whole operation will be skipped).[0] This will speed things up if you have a lot of migrations to run.
I think I heard that some of this stuff will be backported to South for those of us stuck on 1.5/1.6, however.
[0] http://www.aeracode.org/2013/10/23/flat-pancake/