6 ms·
Downside: Holy shit fuck mailing lists. They're terrible. Major downside: You miss a huge percentage of possible contributors.
by fake-name 9y ago
Downside: Holy shit fuck mailing lists. They're terrible.
Major downside: You miss a huge percentage of possible contributors.
- kazinator 9y agoI don't want to deal with people who think e-mail is terrible, or contributors who can't copy a URL from a page served up CGIT, do a "git clone" on it, and then mail off the results of "git format-patch" when they are done. This stuff is incredibly easy.
- greenhouse_gas 9y agoIt's not about email being easy. It's that I don't want my email getting out (spam and all that - you send one email to a bad behaving mailing list, and your email is all over the internet forever for spambots to harvest.)
- zenhack 9y agoRealistically if you've got commits in a public git repo, your email address is public no matter how they got there.
- detaro 9y agoRealistically, people concerned about that (or just being lazy) don't put real e-mail addresses in there.
- kazinator 9y agoYou can post using a fake or cloaked From: address to my mailing lists. I don't require a subscription for posting. You can always check the mail archive for replies to your post, if you care. I don't allow mail archives to be downloaded in the raw format. I added extra patches to the archiving software to conceal addresses better. Mailman just replaces @ with "at" which spam harvesters could easily reverse; I made it better for my users; see below. Kazinator's got your back! 0:webserver:/var/lib/mailman# quilt applied privacy pipermail-to-lurker 0:webserver:/var/lib/mailman# cat patches/privacy Index: mailman/Mailman/Archiver/HyperArch.py =================================================================== --- mailman.orig/Mailman/Archiver/HyperArch.py 2012-11-29 21:26:57.000000000 -0800 +++ mailman/Mailman/Archiver/HyperArch.py 2012-11-29 22:27:51.000000000 -0800 @@ -93,6 +93,8 @@ True = 1 False = 0 +def hide_domain(s): + return re.sub(r'([\w])([-+,.\w]+)([\w])@([\w])([-+.\w]+)([\w])[.]([\w]+)', '\g<1>...\g<3>@\g<4>...\g<6>.\g<7>', s) def html_quote(s, lang=None): @@ -281,10 +283,9 @@ try: i18n.set_language(lang) if self.author == self.email: - self.author = self.email = re.sub('@', _(' at '), - self.email) + self.author = self.email = hide_domain(self.email) else: - self.email = re.sub('@', _(' at '), self.email) + self.email = hide_domain(self.email) finally: i18n.set_translation(otrans) @@ -412,9 +413,7 @@ otrans = i18n.get_translation() try: i18n.set_language(self._lang) - atmark = unicode(_(' at '), Utils.GetCharSet(self._lang)) - subject = re.sub(r'([-+,.\w]+)@([-+.\w]+)', - '\g<1>' + atmark + '\g<2>', subject) + subject = hide_domain(subject) finally: i18n.set_translation(otrans) self.decoded['subject'] = subject @@ -466,7 +465,7 @@ d["in_reply_to_url"] = url_quote(self._message_id) if mm_cfg.ARCHIVER_OBSCURES_EMAILADDRS: # Point the mailto url back to the list - author = re.sub('@', _(' at '), self.author) + author = hide_domain(self.author) emailurl = self._mlist.GetListEmail() else: author = self.author @@ -574,10 +573,8 @@ if mm_cfg.ARCHIVER_OBSCURES_EMAILADDRS: otrans = i18n.get_translation() try: - atmark = unicode(_(' at '), cset) i18n.set_language(self._lang) - body = re.sub(r'([-+,.\w]+)@([-+.\w]+)', - '\g<1>' + atmark + '\g<2>', body) + body = hide_domain(body) finally: i18n.set_translation(otrans) # Return body to character set of article. @@ -1049,7 +1046,7 @@ author = self.get_header("author", article) if mm_cfg.ARCHIVER_OBSCURES_EMAILADDRS: try: - author = re.sub('@', _(' at '), author) + author = hide_domain(author) except UnicodeError: # Non-ASCII author contains '@' ... no valid email anyway pass @@ -1221,7 +1218,7 @@ text = jr.group(1) length = len(text) if mm_cfg.ARCHIVER_OBSCURES_EMAILADDRS: - text = re.sub('@', atmark, text) + text = hide_domain(text) URL = self.maillist.GetScriptURL( 'listinfo', absolute=1) else: Index: mailman/Mailman/Utils.py =================================================================== --- mailman.orig/Mailman/Utils.py 2012-11-29 21:26:57.000000000 -0800 +++ mailman/Mailman/Utils.py 2012-11-29 21:26:58.000000000 -0800 @@ -438,9 +438,9 @@ When for_text option is set (not default), make a sentence fragment instead of a token.""" if for_text: - return addr.replace('@', ' at ') + return 'address-hidden' else: - return addr.replace('@', '--at--') + return 'address-hidden' def UnobscureEmail(addr): """Invert ObscureEmail() conversion."""
- comex 9y agoPersonally, I just feel more socially intimidated when sending email than opening a GitHub pull request. In an email I feel like there's more of an expectation of at least basic pleasantries, whereas on GitHub I feel like I can get away with writing a good, matter-of-fact commit message and just leaving that as the PR message. Of course, most people are not as inhibited as I am…
- kazinator 9y agoWould it help if there is a dedicated mail alias for patches? As in <project-patches@example.com>. Niceties are off-topic there by definition so you don't have to worry. Git writes e-mails out of commits: see the "git format-patch" command. You can practically send that straight to the mail command.
- drej 9y agoThis is fairly sad, because a lot of software is still maintained using mailing lists. Often not because it's the best solution, but because it's the least bad (for some). Also, if one wants to ensure that the whole lineage will be with us 20 years from now, a mailing list is a better bet than all the Gerrits and Githubs of the world. I remember I wanted to check out what was happening in Postgres, since it's my favourite database. But the sheer complexity of getting to the code diffs and comments and all that... I quickly gave up, because the environment was rather unfriendly to newcomers (actually, I didn't completely give up, I just browsed the Github mirror, which was the only usable part of their version control). And I'm not blaming them, it works well for the core devs, but they can't expect many new contributors (and contributions are even things like documentation, tests etc.!). Which is a pity.
- williamdclt 9y agoI'd argue that if one wants to ensure that the whole lineage will be with us 20 years from now, the first step is to make sure that the software is still alive 20 years from now. And using a mailing list is a good way of starving your project to death, if you're not Git or Linux or Postgres. And I'm even worried about those... what will happen in a few years/decades from now, when the generation of devs that are using mailing lists is not active anymore?
- u801e 9y ago> Also, if one wants to ensure that the whole lineage will be with us 20 years from now, a mailing list is a better bet than all the Gerrits and Githubs of the world. Unfortunately, email lists are not easy to browse if you're not subscribed and browsing past messages from before you described isn't that easy. The easiest way I've found around that problem is to use an email to NNTP gateway like gmane. Though that makes me wonder why project discussion isn't managed via a newsgroup as opposed to an email list.
- anarazel 9y agoPostgres' archives aren't that bad. You can find things via $search_engine, view by time, thread view crosses months etc: https://www.postgresql.org/list/pgsql-hackers/ https://www.postgresql.org/list/pgsql-hackers/
- kuschku 9y agoSolution: gitlab, gitea and gogs exist. Same advantages of self hosting, simple UI for inexperienced users, all the ability to control your own stuff.
- andrewmcwatters 9y agoI love mailing lists. They're a natural filter and get rid of a lot of the demographic you don't want in the first place.
- u801e 9y ago> Holy shit fuck mailing lists. They're terrible. What do you find terrible about them? When browsing email lists like the one used for developing git itself, I find it very easy to go through various patch sets and follow the discussion they have on each commit. My client makes it easy to search for subjects, expand or collapse threads, search for authors, etc. The emails themselves are easy to read and don't require an excessive amount of scrolling to go through even if the patch set has multiple commits. It's quite easy to see comments on a patch set inline with the patch itself.