[Haskell-cafe] Re: Haskell Forum

Benjamin L. Russell DekuDekuplex at Yahoo.com
Tue Jul 27 19:44:14 EDT 2010

Kevin Jardine <kevinjardine at gmail.com> writes:

> On Jul 26, 6:45 pm, Nick Bowler <nbow... at elliptictech.com> wrote:
>> Since when do mailing lists not have threading?  Web forums with proper
>> support for threading seem to be few and far apart.
> Most of the email clients I'm familiar with don't support threaded
> displays and most of the web forums I'm familiar with do (although the
> feature is not always switched on).
> In my experience the debate between mailing list vs. web forum can
> become very emotional (especially when discussed via a mailing list)
> and I don't think it is that productive. Some people like one, some
> people like the other. That's why I think that it is useful to give
> people a choice.

One problem with creating a Web forum for a topic supported by a
community that already chiefly communicates via a mailing list is that
cross-referencing/cross-posting can become difficult.

Suppose that somebody addresses a topic that has already been introduced
on the mailing list on the forum, and that someone on mailing list then
sees this topic and wants to respond.  Should he/she respond on the
mailing list, or the forum?  How about follow-ups?  What if he/she
wishes to restrict follow-ups to either the forum or the mailing list?

Conversely, suppose that somebody addresses a topic that has already
been introduced on the forum on the mailing list, and that someone on
the forum then sees this topic and wants to respond.  What then?  What
happens if the forum users see some of the content as "appropriate" for
the mailing list, but not for the forum?

The only viable solution is to have every mailing list post forwarded to
the forum and vice-versa, and have a moderator for the forum filter out
posts containing content that is deemed inappropriate for the Web.  But
then this leads to an additional problem:  What if some users on the
mailing list deem content that has been filtered out by the moderator as
appropriate for discussion on both forums, while the forum users
consider it as inappropriate it?

Consider the following sample discussion (which I just wrote for the
purpose of this discussion, but which actually discusses a possible
topic), which contains issues of technical terms containing scatological
(i.e., "dirty") language, multiple levels of indentation, representation
of URLs, and article length (please ignore this example if you feel
upset by technical terms that contain scatological terms):

> subject:  A Comparison of Whitespace in Haskell and brainfuck
> I discovered an article (see http://en.wikipedia.org/wiki/Brainfuck)
> on the brainfuck programming language (not to be confused with the
> "Brain Fuck Scheduler" (BFS) (see
> http://en.wikipedia.org/wiki/Brain_Fuck_Scheduler)) that introduced a
> sample "Hello World!" program:
> > The following program prints "Hello World!" and a newline to the screen:
> > 
> > +++++ +++++             initialize counter (cell #0) to 10
> > [                       use loop to set the next four cells to 70/100/30/10
> >     > +++++ ++              add  7 to cell #1
> >     > +++++ +++++           add 10 to cell #2 
> >     > +++                   add  3 to cell #3
> >     > +                     add  1 to cell #4
> >     <<<< -                  decrement counter (cell #0)
> > ]                   
> > > ++ .                  print 'H'
> > > + .                   print 'e'
> > +++++ ++ .              print 'l'
> > .                       print 'l'
> > +++ .                   print 'o'
> > > ++ .                  print ' '
> > << +++++ +++++ +++++ .  print 'W'
> > > .                     print 'o'
> > +++ .                   print 'r'
> > ----- - .               print 'l'
> > ----- --- .             print 'd'
> > > + .                   print '!'
> > > .                     print '\n'
> > 
> > For readability, this code has been spread across many lines and
> > blanks and comments have been added. Brainfuck ignores all characters
> > except the eight commands +-<>[],. so no special syntax for comments
> > is needed. The code could just as well have been written as: 
> > 
> > ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
> By comparison, a corresponding article on Haskell (see
> http://en.wikipedia.org/wiki/Haskell_(programming_language)) provided
> the following Haskell alternative::
> > The following is a Hello world program written in Haskell (note that
> > except for the last line all lines can be omitted):
> > 
> > module Main where
> > 
> > main :: IO ()
> > main = putStrLn "Hello, World!"
> I became curious about the use of whitespace in the brainfuck example,
> and decided to see if the Haskell code could also be written more
> compactly.  While doing some research on this topic, I discovered a
> Wikibook article (see
> http://en.wikibooks.org/wiki/Haskell/Indentation) that discussed
> indentation in Haskell, and discovered that it was indeed entirely
> possible to write compact code in Haskell, "using semicolon[s] to
> separate things and curly braces to group them back."  The following
> four rules were provided to summarize this layout process:
> > 1. If you see one of the layout keywords, (let, where, of, do), insert an open curly brace (right before the stuff that follows it)[.]
> > 2. If you see something indented to the SAME level, insert a semicolon[.]
> > 3. If you see something indented LESS, insert a closing curly brace[.]
> > 4. If you see something unexpected in a list, like where, insert a closing brace before instead of a semicolon.
> In particular, the article discussed an interesting example of an "in
> within do" structure that reportedly confuses many Haskell
> programmers; _viz._:
> > -- why is this bad?
> > do first thing
> >    if condition
> >    then foo
> >    else bar
> >    third thing
> According to the article, the problem with this layout lies not with
> the if-then block, but with the fact that "the do block notices that
> the then part is indented to the same column as the if part...."
> According to the article, the problem here is that the do block causes
> the compiler to parse the following code such that since the line
> beginning with "then" is indented to the same level as the previous
> line, it is treated as beginning a new statement.  However, in fact,
> "then" is a keyword used to form a conditional branch of the same
> "if-then" statement, so we have a contradiction.  Here is the 
> desugared version:
> > -- still bad, just explicitly so
> > do { first thing
> >    ; if condition
> >    ; then foo
> >    ; else bar
> >    ; third thing }
> According to the article, the desugared version is equivalent to
> something similar to "if condition;", which is considered
> "unfinished."  Here is the revised sugared version:
> > -- whew, fixed it!
> > do first thing
> >    if condition
> >      then foo
> >      else bar
> >    third thing
> According to the article, "This little bit of indentation prevents the
> do block from misinterpreting your then as a brand new expression."
> Here is the corresponding desugared version:
> > -- the fixed version without sugar
> > do { first thing
> >    ; if condition
> >       then foo
> >       else bar
> >    ; third thing }

Content of this nature is generally considered appropriate for discussion
on a mailing list; however, some readers may consider it inappropriate
for discussion on a Web forum, because of the following issues:

1. The article contains technical terms that contain scatological terms,
either as a part of words within the terms, or as separate words within
the terms.  Such terms (especially in the latter case) may be considered
offensive by some readers, particularly on a Web forum.

2. The article contains multiple levels of indentation.  Most articles on
Web forums contain zero or one level of indentation, and multiple levels
of indentation are generally more concisely represented by right
angle-brackets on a mailing list than by quotation boxes on a Web forum.
What happens if the article contains three or four levels of indentation
of long sentences, which is not at all uncommon on mailing lists, but
relatively unusual on a Web forum?

3. The article contains multiple URLs represented as ASCII text within
pairs of parentheses.  These are usually hyperlinked as HTML text on a
Web forum.  What happens if a forum article containing many URLs
represented as hyperlinked text is discussed on a mailing list which
represents such URLs as ASCII text?  Should the URLs be left out, or
translated to an alternative representation?  If the latter, then to
what represenation?

4. The article contains 115 lines, which is not considered very long by
mailing list standards (many mailing list article are much longer), but
is considered long by most Web forum standards.  What happens if this
article is to be quoted on the forum, and then printed out in a frame
where the article must be scrolled vertically to see its entire length?
Can we be certain that readers of the forum can print out the entire
article?  What happens if the quoted article is then to be quoted on the
mailing list, and the mailing list and forum use different
representations of quotation?  What happens if the readers on the Web
forum neglect to include portions that readers on the mailing list
consider necessary, and then the article is subject to multiple
cross-quotations on the mailing list and forum?  Are readers to jump
back and forth between articles on the forum and the mailing list?  What
happens if readers of the mailing list respond using a newsreader which
supports multiple levels of threading, but the forum software supports
only a single level of threading, and readers from the mailing list
browse the forum wishing to focus on a single sub-thread?  Can these
issues be safely ignored?

There are also important cultural differences between a mailing list
audience and a Web forum audience as well.  Most mailing list readers
are averse to any kind of censorship, and feel comfortable using filters
to screen out spam; most Web forum readers assume expect that articles
containing unnecessarily profane or scatological terms be moderated out,
and resent having to deal with spam on their own.

I once tried to create a Usenet group for a Lisp-like programming
language where existing discussion already took place on a Web forum.
The attempt ended in a disaster, with members of a related Usenet group
(where I tried to invite discussion of the topic) casting flames at
various aspects of the programming language and its community, and
members of the Web forum refusing to post articles on the Usenet group
for fear of inviting spam.  Discussion on the newsgroup became extremely
acerbic, with some readers using scatological terms in reference to the
programming language whose potential newsgroup was under discussion, and
at least one person who went to the trouble of assigning the lowest
possible score to articles favoring the creation of the potential
newsgroup by at least one participant on the corresponding Google
group.  In addition, at least one reader on the newsgroup used the
"Followup-To" feature in the middle of a cross-posted thread on multiple
newsgroups to direct any replies to his criticism so that they would not
get posted on some of the newsgroups where the topic was being actively
discussed, and at least one participant then had to send extra messages
to the disincluded newsgroups and then check each following message in
that thread for a "Followup-To:" header to ensure that replies were
being appropriately cross-posted.

In addition, I was astonished with one forum reader who mentioned that
he had been surprised to receive "150 to 200 spam-scam e-mails a month"
after posting three messages to a Lua Usenet group; I regularly deal
with that volume of spam in approximately two business days when I have
it forwarded from the spam filter of one mailing list that I administer
(fortunately, none of that spam has ever reached the mailing list
proper, but has been shut out by the spam filter).

In short, I believe that there are certain vast and fundamental cultural
differences between a mailing list (or newsgroup) readership and a
potential Web forum readership.

It would seem that in order for a Web forum for Haskell to function
smoothly, it would need to support equivalent functionality to that of
mailing list applications (or newsreaders) currently used by the Haskell
community, in addition to dealing with the above issues appropriately.
Ideally, the Web forum should be mirrored on some mailing list, and
vice-versa, and readers should be able to reply with equal facility
using either interface; this assumes that both representations be
congenial to their readers--a difficult task indeed for readerships with
such disparate preferences.

If someone can offer an effective and appropriate solution for all the
above issues, then by all means, perhaps a Web forum could help expand
readership.  However, the above issues should probably be considered and
resolved in some manner first.  In particular, steps should be taken to
ensure that creation of the Web forum does not invite a cultural schism
between the mailing list audience and the potential Web forum audience.

-- Benjamin L. Russell
Benjamin L. Russell  /   DekuDekuplex at Yahoo dot com
Translator/Interpreter / Mobile:  +011 81 80-3603-6725
"Furuike ya, kawazu tobikomu mizu no oto." -- Matsuo Basho^ 

More information about the Haskell-Cafe mailing list