{"thread":{"id":"29727","subject":"Announcing nntpgit","startedAt":"2012-02-24T20:39:42Z","lastAt":"2012-02-27T21:02:31Z","messageCount":5,"participants":["Jonathan Corbet","Junio C Hamano","Andreas Schwab","Michael Haggerty"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"185375","messageId":"20120224133942.49a7a420@dt","threadId":"29727","inReplyTo":null,"subject":"Announcing nntpgit","fromName":"Jonathan Corbet","fromEmail":"corbet@lwn.net","sentAt":"2012-02-24T20:39:42Z","receivedAt":"2012-02-24T20:39:42Z","isPatch":false,"sender":{"key":"corbet@lwn.net","avatar":null},"body":"When kernel.org went down, it took the mainline kernel commits list with\nit. That had a fairly serious and unfortunate effect on my workflow,\nwhich, among other things, depends on knowing what's being merged.  I\nhacked up various workarounds, but none of them were as useful or\nefficient.\n\nEventually it occurred to me that what I *really* wanted was the commit\nstream as an NNTP feed so I could read it in gnus along with most of the\nother lists I follow.  The result was nntpgit, a small Python3 program\nthat tracks repository branches and makes new commits available as\n\"articles\" to all comers.  I've been working with it for a few weeks now\nand I'm quite happy; it works better for me than the old list did.\n\nShould anybody wish to experiment with it, they can do so in two ways.\nFirst, the code is available (GPLv2) from:\n\n\tgit://git.lwn.net/nntpgit.git\n\nAlternatively, it's running on port 8119 on git.lwn.net.  There are\ncurrently two \"newsgroups\": lwn.mainline for mainline commits, and\nlwn.networking for davem's networking tree.  I expect to add others over\ntime.\n\nBe warned that this is very early stage software!  It does what I need it\nto do and little else.  I've not tested it with any newsreaders other than\ngnus, so the chances of interoperability problems with others are\nsignificant.  I'd be happy to accept bug reports, though, and even happier\nto take patches.  I hope it's useful to somebody.\n\njon\n"},{"id":"185384","messageId":"7v62evykrq.fsf@alter.siamese.dyndns.org","threadId":"29727","inReplyTo":"20120224133942.49a7a420@dt","subject":"Re: Announcing nntpgit","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-02-24T21:38:33Z","receivedAt":"2012-02-24T21:38:33Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jonathan Corbet <corbet@lwn.net> writes:\n\n> When kernel.org went down, it took the mainline kernel commits list with\n> it. That had a fairly serious and unfortunate effect on my workflow,\n> which, among other things, depends on knowing what's being merged.  I\n> hacked up various workarounds, but none of them were as useful or\n> efficient.\n>\n> Eventually it occurred to me that what I *really* wanted was the commit\n> stream as an NNTP feed so I could read it in gnus along with most of the\n> other lists I follow.  The result was nntpgit, a small Python3 program\n> that tracks repository branches and makes new commits available as\n> \"articles\" to all comers.  I've been working with it for a few weeks now\n> and I'm quite happy; it works better for me than the old list did.\n>\n> Should anybody wish to experiment with it, they can do so in two ways.\n> First, the code is available (GPLv2) from:\n>\n> \tgit://git.lwn.net/nntpgit.git\n>\n> Alternatively, it's running on port 8119 on git.lwn.net.  There are\n> currently two \"newsgroups\": lwn.mainline for mainline commits, and\n> lwn.networking for davem's networking tree.  I expect to add others over\n> time.\n\nNeat.\n\nThis is something I wanted to write (or see somebody write so that I can\nuse it ;-)) even before I became the maintainer of this project, as I\npractically live inside GNUS, but never got around to go beyond the design\nphase.\n\nHow do you handle message threading (References: and In-Reply-To:)?\n\nWould a commit on the \"mainline\" (a rough approximation of it would be\n\"log --first-parent\" starting from the tip) form the discussion starter\narticle, and any side branch that fork from them would be a discussion\nthread starting at the commit?\n"},{"id":"185385","messageId":"20120224144309.4657052e@dt","threadId":"29727","inReplyTo":"7v62evykrq.fsf@alter.siamese.dyndns.org","subject":"Re: Announcing nntpgit","fromName":"Jonathan Corbet","fromEmail":"corbet@lwn.net","sentAt":"2012-02-24T21:43:09Z","receivedAt":"2012-02-24T21:43:09Z","isPatch":false,"sender":{"key":"corbet@lwn.net","avatar":null},"body":"On Fri, 24 Feb 2012 13:38:33 -0800\nJunio C Hamano <gitster@pobox.com> wrote:\n\n> How do you handle message threading (References: and In-Reply-To:)?\n> \n> Would a commit on the \"mainline\" (a rough approximation of it would be\n> \"log --first-parent\" starting from the tip) form the discussion starter\n> article, and any side branch that fork from them would be a discussion\n> thread starting at the commit?\n\nThere's really no threading at all at this point; it's just a linear\nseries of commits-as-messages as provided by a vanilla \"git log\".  I could\ncertainly see trying to do something fancier, if it were useful, but it's\nnot something I've thought about much yet.\n\nLike I said, it's really young stuff :)\n\njon\n"},{"id":"185400","messageId":"m2boonzq3h.fsf@igel.home","threadId":"29727","inReplyTo":"20120224133942.49a7a420@dt","subject":"Re: Announcing nntpgit","fromName":"Andreas Schwab","fromEmail":"schwab@linux-m68k.org","sentAt":"2012-02-25T00:58:10Z","receivedAt":"2012-02-25T00:58:10Z","isPatch":false,"sender":{"key":"schwab@linux-m68k.org","avatar":"https://avatars.githubusercontent.com/u/2175493?v=4"},"body":"How about generating an RSS/ATOM feed, that is converted to nntp through\ngwene? :-)\n\nAndreas.\n\n-- \nAndreas Schwab, schwab@linux-m68k.org\nGPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5\n\"And now for something completely different.\"\n"},{"id":"185561","messageId":"4F4BEF67.1070609@alum.mit.edu","threadId":"29727","inReplyTo":"7v62evykrq.fsf@alter.siamese.dyndns.org","subject":"Re: Announcing nntpgit","fromName":"Michael Haggerty","fromEmail":"mhagger@alum.mit.edu","sentAt":"2012-02-27T21:02:31Z","receivedAt":"2012-02-27T21:02:31Z","isPatch":false,"sender":{"key":"mhagger@alum.mit.edu","avatar":"https://avatars.githubusercontent.com/u/119718?v=4"},"body":"On 02/24/2012 10:38 PM, Junio C Hamano wrote:\n> This is something I wanted to write (or see somebody write so that I can\n> use it ;-)) even before I became the maintainer of this project, as I\n> practically live inside GNUS, but never got around to go beyond the design\n> phase.\n> \n> How do you handle message threading (References: and In-Reply-To:)?\n> \n> Would a commit on the \"mainline\" (a rough approximation of it would be\n> \"log --first-parent\" starting from the tip) form the discussion starter\n> article, and any side branch that fork from them would be a discussion\n> thread starting at the commit?\n\n>From contrib/hooks/post-receive-email I've locally derived a Python\nversion that sends one email message per commit.  It generates a thread\nof messages for each reference that was pushed, starting with a summary\nof how the reference was changed, and one followup email for each new\ncommit added to that reference.  In a threaded mail reader, this groups\nall of the changes to a reference due to a particular push in a thread\nthat can easily be expanded, collapsed, or deleted as a group.  I find\nthis a convenient workflow.\n\nI believe that NNTP threading works much the same way as email\nthreading, so probably the same style could be used there.  My script is\nstill not published, though.\n\nMichael\n\n-- \nMichael Haggerty\nmhagger@alum.mit.edu\nhttp://softwareswirl.blogspot.com/\n"}]}