You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mitogen/docs/history.rst

59 lines
2.5 KiB
ReStructuredText

History And Future
==================
History
#######
The first version of Mitogen was written in late 2006 for use in an
infrastructure management program, however at the time I lacked the pragmatism
necessary for pushing my little design from concept to finished implementation.
I tired of it when no way could be found to unify every communication style
(*blocking execute function, asynchronous execute function, proxy
slave-of-slave context*) into one neat abstraction. That unification never
happened, but I'm no longer worried by it.
Every few years I would pick through the source code, especially after periods
of commercial work involving some contemporary infrastructure management
systems, none of which had nearly as neat an approach to running Python code
remotely, and suffered from shockingly beginner-level bugs such as failing to
report SSH diagnostic messages.
And every few years I'd put that code down again, especially since moving to an
OS X laptop where :py:func:`select.poll` was not available, the struggle to get
back on top seemed more hassle than it was worth.
That changed in 2016 during a quiet evening at home with a clear head and
nothing better to do, after a full day of exposure to Ansible's intensely
unbearable tendency to make running a 50 line Python script across a 1Gbit/sec
LAN feel like I were configuring a host on Mars. Poking through Ansible, I was
shocked to discover it writing temporary files everywhere, and uploading a
56KiB zip file apparently for every playbook step.
.. figure:: _static/wtf.gif
All contemporary Devops tooling
Searching around for something to play with, I came across my forgotten project
directory and somehow in a few hours managed to squash most of the race
conditions and logic bugs that were preventing reliable operation, write the IO
and log forwarders, rewrite the module importer, move from
:py:func:`select.poll` to :py:func:`select.select`, and even refactor the
special cases out of the main loop.
So there you have it. As of writing :py:mod:`mitogen.core` consists of 681
source lines, and those 681 lines have taken over a decade to write. I have
long had a preference for avoiding infrastructure work commercially, not least
for the inescapable depression induced by considering the wasted effort across
the world caused by universally horrific tooling. This is my small contribution
to a solution, I hope you find it useful.
Future
######
`View the issue list on GitHub`_
.. _View the issue list on GitHub: https://github.com/dw/mitogen/issues?q=is%3Aopen%20is%3Aissue%20-label%3Abug