Fast, Flexible, and Incremental Task Automation With doit

The Python Podcast.__init__

Episode | Podcast

Date: Sun, 26 Dec 2021 19:00:00 -0500

<div class="wp-block-jetpack-markdown"><h2>Summary</h2> <p>Every software project needs a tool for managing the repetitive tasks that are involved in building, running, and deploying the code. Frustrated with the limitations of tools like Make, Scons, and others Eduardo Schettino created doit to handle task automation in his own work and released it as open source. In this episode he shares the story behind the project, how it is implemented under the hood, and how you can start using it in your own projects to save you time and effort.</p> <h2>Announcements</h2> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python&#8217;s role in data and science.</li> <li>When you&#8217;re ready to launch your next app or want to try a project you hear about on the show, you&#8217;ll need somewhere to deploy it, so take a look at our friends over at Linode. With the launch of their managed Kubernetes platform it&#8217;s easy to get started with the next generation of deployment and scaling, powered by the battle tested Linode platform, including simple pricing, node balancers, 40Gbit networking, dedicated CPU and GPU instances, and worldwide data centers. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/linode</a> and get a $100 credit to try out a Kubernetes cluster of your own. And don&#8217;t forget to thank them for their continued support of this show!</li> <li>Your host as usual is Tobias Macey and today I&#8217;m interviewing Eduardo Schettino about Doit, a flexible and low overhead task automation tool</li> </ul> <h2>Interview</h2> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>Can you describe what doit is and the story behind it?</li> <li>What are the main goals and use cases of doit?</li> <li>Can you describe how you approached the implementation of Doit? <ul> <li>How has the design changed or evolved since you first began working on it?</li> </ul> </li> <li>The realm of task automation tools for developers is an exceedingly crowded one, with each tool prioritizing certain use cases. How would you characterize the position of doit in the current ecosystem? <ul> <li>How does it compare to e.g. Click, Invoke, Typer, etc.?</li> </ul> </li> <li>What is your guiding philosophy for when and how to add new features? <ul> <li>You have been running the project for ~13 years now. How has the evolution of the Python language and ecosystem influenced your approach to the development and maintenance of doit?</li> </ul> </li> <li>What is the workflow for getting started with doit and integrating it into your development process?</li> <li>For every project there are some tasks that are identical and some that are bespoke for that application. What are the options for maintaining a standard set of tasks across repositories and composing them with per-project activites?</li> <li>What are some of the useful patterns that you and the community have established for designing tasks and execution graphs?</li> <li>How do you use doit in your own work?</li> <li>What are the most interesting, innovative, or unexpected ways that you have seen doit used?</li> <li>What are the most interesting, unexpected, or challenging lessons that you have learned while working on doit?</li> <li>When is doit the wrong choice?</li> <li>What do you have planned for the future of doit?</li> </ul> <h2>Keep In Touch</h2> <ul> <li><a href="https://www.linkedin.com/in/eduardoschettino/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">LinkedIn</a></li> <li><a href="https://github.com/schettino72?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">schettino72</a> on GitHub</li> </ul> <h2>Picks</h2> <ul> <li>Tobias <ul> <li><a href="https://en.wikipedia.org/wiki/The_Matrix_(franchise)?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Matrix</a> series</li> </ul> </li> <li>Eduardo <ul> <li><a href="http://johnpilger.com/videos?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">John Pilger</a></li> </ul> </li> </ul> <h2>Closing Announcements</h2> <ul> <li>Thank you for listening! Don&#8217;t forget to check out our other show, the <a href="https://www.dataengineeringpodcast.com?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Data Engineering Podcast</a> for the latest on modern data management.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">site</a> to subscribe to the show, sign up for the mailing list, and read the show notes.</li> <li>If you&#8217;ve learned something or tried out a project from the show then tell us about it! Email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>) with your story.</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">iTunes</a> and tell your friends and co-workers</li> </ul> <h2>Links</h2> <ul> <li><a href="https://pydoit.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">doit</a></li> <li><a href="https://www.zope.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Zope</a></li> <li><a href="https://twistedmatrix.com/trac/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Twisted</a></li> <li><a href="https://www.djangoproject.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Django</a></li> <li><a href="https://github.com/PyCQA/pyflakes?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Pyflakes</a></li> <li><a href="https://scons.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">scons</a></li> <li><a href="https://en.wikipedia.org/wiki/Make_(software)?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Make</a></li> <li><a href="https://getnikola.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Nikola</a> <ul> <li><a href="https://www.pythonpodcast.com/episode-20-static-site-generators-with-justin-mayer-and-roberto-alsina/?utm_source=rss&amp;utm_medium=rss">Podcast Episode</a></li> </ul> </li> <li><a href="https://github.com/nose-devs/nose2?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Nose</a></li> <li><a href="https://docs.pytest.org/en/6.2.x/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Pytest</a> <ul> <li><a href="https://www.pythonpodcast.com/episode-16-holger-krekel-on-py-test/?utm_source=rss&amp;utm_medium=rss">Podcast Episode</a></li> </ul> </li> <li><a href="https://click.palletsprojects.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Click</a></li> <li><a href="https://typer.tiangolo.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Typer</a></li> <li><a href="http://www.pyinvoke.org/index.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Invoke</a></li> <li><a href="https://puppet.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Puppet</a></li> <li><a href="https://www.ansible.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Ansible</a></li> <li><a href="https://www.chef.io/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Chef</a></li> <li><a href="https://www.sphinx-doc.org/en/master/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Sphinx</a></li> <li><a href="https://snakemake.readthedocs.io/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Snakemake</a></li> <li><a href="https://airflow.apache.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Airflow</a></li> <li><a href="https://luigi.readthedocs.io/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Luigi</a></li> <li><a href="https://pytest-incremental.readthedocs.io/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">pytest-incremental</a></li> <li><a href="https://github.com/schettino72/import-deps?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">import-deps</a></li> <li><a href="https://docs.python.org/3/library/dbm.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">dbm</a></li> <li><a href="https://github.com/scality/metalk8s?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">MetalK8s</a></li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a></p> </div> <img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fwww.pythonpodcast.com%2Fdoit-software-task-automation-episode-345%2F&amp;action_name=Fast%2C+Flexible%2C+and+Incremental+Task+Automation+With+doit+-+Episode+345&amp;urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&amp;utm_source=rss&amp;utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" />