<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Alex's Adventures on the Infobahn - email</title><link href="https://www.bennee.com/~alex/" rel="alternate"></link><link href="https://www.bennee.com/~alex/blog/tag/email/feed" rel="self"></link><id>https://www.bennee.com/~alex/</id><updated>2023-10-22T12:22:00+01:00</updated><subtitle>the wanderings of a supposed digital native</subtitle><entry><title>Comparing Forge-Based and Email-Based Workflow for Open Source Projects</title><link href="https://www.bennee.com/~alex/blog/2023/10/22/comparing-forge-based-and-email-based-workflow-for-open-source-projects/" rel="alternate"></link><published>2023-10-22T12:22:00+01:00</published><updated>2023-10-22T12:22:00+01:00</updated><author><name>chatgpt</name></author><id>tag:www.bennee.com,2023-10-22:/~alex/blog/2023/10/22/comparing-forge-based-and-email-based-workflow-for-open-source-projects/</id><summary type="html">&lt;p&gt;Comparing Forge-Based and Email-Based Workflow for Open Source Projects&lt;/p&gt;</summary><content type="html">&lt;p&gt;In the open source technology universe, how teams coordinate,
collaborate and contribute is determined by the workflow they opt for.
At a high level, workflows can fall into one of two camps: Forge-based
or Email-based workflows. Forge-based workflows gained popularity with
platforms such as GitHub and GitLab, while Email-based workflows have
been a stalwart mechanism for open source software development with
mailing list platforms like GNU Mailman and SourceHut.&lt;/p&gt;
&lt;p&gt;In this post, we will look at the benefits and drawbacks of the
various approaches, hopefully lending insight to what will work best
for your project.&lt;/p&gt;
&lt;h2&gt;Forge-Based Workflow&lt;/h2&gt;
&lt;p&gt;Forge-based workflows have revolutionised open source software
development. Various advantages have made it an accessible choice for
many, including:&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;1. User-Friendly&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Forge-based platforms such as GitHub or GitLab feature a friendly GUI
and offer excellent documentation, making it super easy for beginners
to contribute to open source projects without needing an in-depth
understanding of git and email tools.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;2. Centralised and Organised&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;These platforms provide central repositories that make project
management streamlined. Access controls, issue tracking, continuous
integration, and other tools all exist in one place.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;3. Collaborative Environment&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The pull-request model common to forge platforms encourages
collaborative code review, making it an excellent tool for open-source
projects where code quality is a priority.&lt;/p&gt;
&lt;p&gt;However, there's a flip side to this coin:&lt;/p&gt;
&lt;h4&gt;Cons: Risk of Vendor Lock-in&lt;/h4&gt;
&lt;p&gt;Choosing a specific forge platform means accepting their choices of
features, tools, standard practices, and policies which subtly enforce
vendor lock-in. For most open source projects this also means relying
on the forge supporting projects with cost free access to features and
CI time.&lt;/p&gt;
&lt;h2&gt;Email-Based Workflow&lt;/h2&gt;
&lt;p&gt;Despite being considered 'old school', email-based workflows still
have merit in today's software development world. They offer:&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;1. Decentralized and Flexible&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;In sharp contrast to forge-based workflows, email workflows are
inherently decentralized. This approach offers more flexibility for
contributors and maintainers alike, as they are not bound to tools
offered by a single platform.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;2. Line-by-Line Review and Inline Feedback&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Email-based workflows stand out when it comes to the review process.
The nature of emails allows for contributors and reviewers to break
down commits line-by-line. This allows for more granular attention to
detail, leading to clearer communication about specific code changes.
Additionally, the threading mechanism of emails allows for inline
commentary during reviews, making it easier for contributors to
respond and iterate on feedback. This approach can encourage deeper
understanding and discussion around code changes, leading to
well-reviewed and robust code contributions.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;3. Enhances git Understanding&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Contributors working with email-based workflows generally have a
better understanding of git because it requires more hands-on actions
when sharing code.&lt;/p&gt;
&lt;p&gt;However, they too have potential drawbacks.&lt;/p&gt;
&lt;h4&gt;Cons: Less Beginner-Friendly&lt;/h4&gt;
&lt;p&gt;Email-based workflows requires a steeper learning curve and are less
friendly for collaborative code reviewing, making it challenging for
new contributors to a project.&lt;/p&gt;
&lt;h1&gt;Adapting Open Source Projects: Email to Forge Workflow Transitions&lt;/h1&gt;
&lt;p&gt;Transitioning from an email-based workflow to a forge-based one should
be a meticulously planned process that respects the existing
community's culture and comfort. It's pivotal to keep this move as an
evolution rather than an abrupt change.&lt;/p&gt;
&lt;p&gt;Initial steps in such transitions can include moving non-code elements
to the forge platform. Functions such as issue tracking,
documentation, and discussions could be the first set of activities
transferred to the forge platform. This strategy allows the
contributors to become proficient with the platform’s tools and
interfaces while keeping the code contributions intact on email lists.&lt;/p&gt;
&lt;p&gt;Your project might encompass several sub-systems, and it could be
worth considering this while transitioning. Instead of transforming
the entire project at once, one could start by moving individual
sub-systems to the new workflow. This incremental, phased approach can
prevent chaos and reduce the chances of any significant disruption in
the project's flow.&lt;/p&gt;
&lt;p&gt;Following the sub-system shifts, the project should then introduce
acceptance of pull requests or merge requests created by maintainers.
These PRs should still contain code that underwent email list reviews
in the previous workflow, ensuring the robustness of code quality.&lt;/p&gt;
&lt;p&gt;The final stage of the transition is welcoming all contributors to
submit merge requests through the forge platform. The key is to ensure
that contributors understand the reasons behind the shift towards a
complete merge request approach. They should be given clear guidelines
about how and why to use merge requests, making them comfortable with
the transition, and empowering them to take full advantage of the
tool's capabilities.&lt;/p&gt;
&lt;p&gt;In transition, it's necessary to alleviate concerns, clarify intents,
and provide resources to learn and help the contributors adjust to the
new workflow. Both email and forge-based workflows hold their place
and value in open-source. So, when transiting, the project needs and
the contributor adaptability should be the cornerstone of your
strategy. No two projects are the same, and neither are their paths in
adopting new workflow models.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Fuller disclosure: as
&lt;a href="https://chaos.social/@epilys/111280150345667417" title="comment spotting the chatgpt origins"&gt;@epilys&lt;/a&gt; noticed this post was generated via
chatgpt. I may have spent more time fiddling with my pelican settings
to make sure the author slug was properly shown than I did iterating
with GPT4 on the article. It has had some light copy-editing since to
clean up some copy and paste errors between iterations and some of the
more artificial phrasing it used)&lt;/em&gt;&lt;/p&gt;</content><category term="geek"></category><category term="email"></category><category term="workflow"></category><category term="git"></category><category term="gitlab"></category><category term="github"></category><category term="floss"></category><category term="development"></category><category term="chatgpt"></category></entry><entry><title>Thinking about email</title><link href="https://www.bennee.com/~alex/blog/2009/11/17/thinking-about-email/" rel="alternate"></link><published>2009-11-17T12:49:00+00:00</published><updated>2009-11-17T12:49:00+00:00</updated><author><name>alex</name></author><id>tag:www.bennee.com,2009-11-17:/~alex/blog/2009/11/17/thinking-about-email/</id><summary type="html">&lt;p&gt;I saw a &lt;a class="reference external" href="http://keithp.com/blogs/notmuch/"&gt;post on my feeds&lt;/a&gt; today discussing a new email client called &lt;a class="reference external" href="http://notmuchmail.org/"&gt;notmuch&lt;/a&gt; which set me thinking about my own use of email.&lt;/p&gt;
&lt;p&gt;I have three primary ways of accessing email at the moment. On my domain I run &lt;a class="reference external" href="http://www.mutt.org/"&gt;Mutt&lt;/a&gt; in a screen session. At work I have …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I saw a &lt;a class="reference external" href="http://keithp.com/blogs/notmuch/"&gt;post on my feeds&lt;/a&gt; today discussing a new email client called &lt;a class="reference external" href="http://notmuchmail.org/"&gt;notmuch&lt;/a&gt; which set me thinking about my own use of email.&lt;/p&gt;
&lt;p&gt;I have three primary ways of accessing email at the moment. On my domain I run &lt;a class="reference external" href="http://www.mutt.org/"&gt;Mutt&lt;/a&gt; in a screen session. At work I have the GUI behemoth that is &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Evolution_%28software%29"&gt;Evolution&lt;/a&gt; and most of my mailing list subscriptions run through a &lt;a class="reference external" href="http://en.wikipedia.org/wiki/Gmail"&gt;Gmail&lt;/a&gt; account I have set aside for the very purpose.&lt;/p&gt;
&lt;p&gt;I'm quite happy with Mutt for my main personal email. As I don't use my personal email to subscribe to mailing lists the volume is low, it's fairly quick and snappy to write email (in an emacsclient naturally) and searching is only a &amp;quot;/&amp;quot; away. However it is intrinsically a folder based email client which works fine as I only have two folders: Inbox and Oldmail. I periodically (~annually) move email into Oldmail when Mutt starts to slow down on start-up.&lt;/p&gt;
&lt;p&gt;The main bugbear is my work email. I mainly run evolution through inertia and 2 features:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;It connects to the work Exchange server, although calendering doesn't really work properly as I can't Accept/Decline meeting invites.&lt;/li&gt;
&lt;li&gt;The vFolder concept allows me to easily separate company emails from the bug tracker and CVS commits and the odd work related mailing list while still offering a quick eyeball indication of what pending emails there are.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other than those features Evolution sucks balls in every other way. It takes an age to compose a new email, I have to shut it down every night to avoid swap death and it's certainly not keyboard operable.&lt;/p&gt;
&lt;p&gt;The GMail account I have to live with as there isn't really anywhere else I can easily index and search the 4gb (and growing) of mailing lists I subscribe to. Of course it is accessible via IMAP so it would be nice if I could access it from the same client, especially as the web interface tends to munge in-line patches.&lt;/p&gt;
&lt;p&gt;The obvious choice would be to look into one of the many many modes for handling email in emacs. However the plethora of choices is one that makes selecting one to try even harder. Some people at work have fetchmail tasks setup to mirror the email on the server which sounds a little clunky but I guess must work well enough. I don't think it would be practical for Gmail though, I usually just browse through various tags for mailing lists, including the very handy 'mythreads' which marks any email list thread I'm involved in.&lt;/p&gt;
&lt;p&gt;I think the key feature I need will be something like Evolutions vFolders for the quick eyeball along with a decent way to interact with Gmail. Any suggestions?&lt;/p&gt;
</content><category term="geek"></category><category term="emacs"></category><category term="email"></category><category term="gmail"></category><category term="imap"></category><category term="mail"></category></entry></feed>