Difference between revisions of "IRC channel"

From HaskellWiki
Jump to navigation Jump to search
(→‎Related channels: Adding more channels to the list)
(Add Matrix as way to join IRC)
 
(46 intermediate revisions by 25 users not shown)
Line 2: Line 2:
 
of users among various irc networks.
 
of users among various irc networks.
   
The Freenode IRC network hosts the very large #haskell channel, and we've had
+
The Freenode IRC network used to host the very large #haskell channel, and we've had
 
up to 1046
 
up to 1046
 
concurrent users, making the channel consistently
 
concurrent users, making the channel consistently
[http://irc.netsplit.de/channels/details.php?room=%23haskell&net=freenode one of the most popular]
+
[https://netsplit.de/channels/details.php?room=%23haskell&net=freenode one of the most popular]
 
of the thousands of channels on freenode. One famous
 
of the thousands of channels on freenode. One famous
 
resident is [[Lambdabot]], another is [http://hpaste.org hpaste] (see
 
resident is [[Lambdabot]], another is [http://hpaste.org hpaste] (see
 
the [[#Bots|Bots]] section below).
 
the [[#Bots|Bots]] section below).
  +
  +
As of May 19 2021, the #haskell channel and associated channels began to migrate to https://libera.chat/ . This process is still underway, but at this point it is recommended to join the channel there, and ''not'' freenode.
   
 
The IRC channel can be an excellent place to learn more about Haskell,
 
The IRC channel can be an excellent place to learn more about Haskell,
Line 21: Line 23:
 
As always, #haskell remains the primary place for new user questions.
 
As always, #haskell remains the primary place for new user questions.
   
{| border="0" align="right"
+
{| border="0"
 
|+ '''#haskell visualized'''
 
|+ '''#haskell visualized'''
 
|-
 
|-
Line 33: Line 35:
 
== Getting there ==
 
== Getting there ==
   
If you point your irc client to [irc://chat.freenode.net/haskell chat.freenode.net] and then join the #haskell channel, you'll be there. Alternately, you can try http://java.freenode.net/ or http://webchat.freenode.net/ which connects inside the browser.
+
If you point your irc client to [irc://irc.libera.chat:6697 irc.libera.chat:6697 (TLS)] and then join the #haskell channel, you'll be there. Alternately, you can try a client (some listed at [https://libera.chat/guides/clients] ) which connects inside the browser.
   
 
Example, using [http://www.irssi.org/ irssi]:
 
Example, using [http://www.irssi.org/ irssi]:
   
$ irssi -c chat.freenode.net -n myname -w mypassword
+
$ irssi -c irc.libera.chat:6697 -n myname -w mypassword
 
/join #haskell
 
/join #haskell
   
Line 47: Line 49:
   
 
[[Image:Irc--haskell-screenshot.png|frame|A screenshot of an irssi session in #haskell]]
 
[[Image:Irc--haskell-screenshot.png|frame|A screenshot of an irssi session in #haskell]]
  +
  +
=== Matrix ===
  +
  +
If you use [https://matrix.org Matrix], you can join the [https://matrix.to/#/#haskell-space:matrix.org #haskell-space:matrix.org] Space, where you'll find most Haskell Matrix rooms (look for the "Haskell IRC Channels" sub-Space for IRC rooms).
   
 
== Principles ==
 
== Principles ==
Line 73: Line 79:
 
The #haskell channel appeared in the late 90s, and really got going
 
The #haskell channel appeared in the late 90s, and really got going
 
in early 2001, with the help of Shae Erisson (aka shapr).
 
in early 2001, with the help of Shae Erisson (aka shapr).
 
A fairly extensive analysis of the traffic on #haskell over the years is
 
[http://www.cse.unsw.edu.au/~dons/irc/ kept here]
 
   
 
== Related channels ==
 
== Related channels ==
Line 81: Line 84:
 
In addition to the main Haskell channel there are also:
 
In addition to the main Haskell channel there are also:
   
  +
=== Language/Country specific ===
{| border="1" cellspacing="0" cellpadding="5" align="center"
 
  +
  +
Language channels are consolidated into the "#haskell-" namespace. Eventually the language channels below listed with "#haskell." will have to move.
  +
  +
{| border="1" cellspacing="0" cellpadding="5"
 
! Channel
 
! Channel
 
! Purpose
 
! Purpose
 
|-
 
|-
| #haskell-br
+
| style="width: 20%;" | #haskell-br
 
| Brazilian Portuguese (pt_BR) speakers
 
| Brazilian Portuguese (pt_BR) speakers
 
|-
 
|-
Line 103: Line 110:
 
| Finnish speakers
 
| Finnish speakers
 
|-
 
|-
| #haskell-fr (note the hyphen!)
+
| #haskell-fr
| French speakers
+
| French speakers (note the hyphen! in the channel name)
 
|-
 
|-
 
| #haskell.hr
 
| #haskell.hr
 
| Croatian speakers
 
| Croatian speakers
 
|-
 
|-
| #haskell.it
+
| #haskell-id
  +
| Indonesian speakers (note the hyphen! in the channel name)
| Italian speakers
 
  +
|-
  +
| #haskell-it
  +
| Italian speakers (note the hyphen! in the channel name)
 
|-
 
|-
 
| #haskell.jp
 
| #haskell.jp
 
| Japanese speakers
 
| Japanese speakers
  +
|-
  +
| #haskell.scandinavian
  +
| Scandinavian speakers
  +
|-
  +
| #haskell-kr
  +
| Korean speakers
 
|-
 
|-
 
| #haskell.no
 
| #haskell.no
Line 129: Line 145:
 
| #haskell_ru
 
| #haskell_ru
 
| Russian speakers again, in UTF-8. For those, who prefer good ol' IRC channel with a lambdabot.
 
| Russian speakers again, in UTF-8. For those, who prefer good ol' IRC channel with a lambdabot.
  +
|-
  +
| #haskell-ro
  +
| Romanian speakers.
 
|-
 
|-
 
| #haskell.se
 
| #haskell.se
 
| Swedish speakers
 
| Swedish speakers
 
|-
 
|-
| #haskell.tw
+
| #haskell-tw
 
| Chinese speakers (mainly in Taiwan)
 
| Chinese speakers (mainly in Taiwan)
  +
|-
  +
| #haskell.vn
  +
| Vietnamese speakers
  +
|-
  +
| #chicagohaskell
  +
| [http://chicagohaskell.com Chicago Haskell] programmers group
  +
|}
  +
  +
=== Platform-specific ===
  +
{| border="1" cellspacing="0" cellpadding="5"
  +
! Channel
  +
! Purpose
  +
|-
  +
| style="width: 20%;" | #haskell-beginners
  +
| Haskell people focused on teaching and learning Haskell, not just beginners.
  +
|-
  +
| #haskell-offtopic
  +
| Haskell people talking about anything except Haskell itself (no TLS required)
 
|-
 
|-
 
| #haskell-blah
 
| #haskell-blah
| Haskell people talking about anything except Haskell itself
+
| Haskell people talking about anything except Haskell itself (TLS required)
 
|-
 
|-
 
| #haskell-game
 
| #haskell-game
Line 150: Line 187:
 
| #haskell-apple
 
| #haskell-apple
 
| projects that target iOS or OS X using Haskell.
 
| projects that target iOS or OS X using Haskell.
  +
|-
  +
| #haskell-lisp
  +
| [[Haskell Lisp]] - projects that are creating Lisps written in Haskell, or Haskell implementations written in Lisps.
 
|-
 
|-
 
| #haskell-llvm
 
| #haskell-llvm
Line 160: Line 200:
 
| Friendly, practical discussion of haskell web app/framework/server development
 
| Friendly, practical discussion of haskell web app/framework/server development
 
|-
 
|-
  +
| #haskell-robotics
| '''Platform-specific:'''
 
  +
| Discussion about the use of Haskell for robotics applications.
|
 
 
|-
 
|-
 
| #arch-haskell
 
| #arch-haskell
Line 167: Line 207:
 
|-
 
|-
 
| #fedora-haskell
 
| #fedora-haskell
| [[Fedora]] Haskell SIG
+
| [https://fedoraproject.org/wiki/Haskell Fedora] Haskell SIG
 
|-
 
|-
 
| #gentoo-haskell
 
| #gentoo-haskell
 
| [[Gentoo]]/Linux specific Haskell conversations
 
| [[Gentoo]]/Linux specific Haskell conversations
  +
|}
  +
  +
=== Projects using haskell ===
  +
{| border="1" cellspacing="0" cellpadding="5"
  +
! Channel
  +
! Purpose
 
|-
 
|-
  +
| style="width: 20%;" | #darcs
| '''Projects using haskell:'''
 
|
 
|-
 
| #darcs
 
 
| [[Darcs]] revision control system
 
| [[Darcs]] revision control system
 
|-
 
|-
Line 183: Line 226:
 
| #hackage
 
| #hackage
 
| Haskell's software distribution infrastructure
 
| Haskell's software distribution infrastructure
  +
|-
  +
| #haskell-cryptography
  +
| Discussions about the [https://github.com/haskell-cryptography Haskell Cryptography] toolkit
 
|-
 
|-
 
| #haskell-lens
 
| #haskell-lens
 
| [[Lens]] discussions
 
| [[Lens]] discussions
  +
|-
  +
| #haskell-servant
  +
| [https://github.com/haskell-servant/servant Servant web framework] discussions
  +
|-
  +
| #haskell-stack
  +
| [https://github.com/commercialhaskell/stack/tree/master/doc Stack] discussions
 
|-
 
|-
 
| #happs
 
| #happs
Line 196: Line 248:
 
| [http://leksah.org Leksah] IDE for Haskell development
 
| [http://leksah.org Leksah] IDE for Haskell development
 
|-
 
|-
| #perl6
+
| #snowdrift
  +
| [https://snowdrift.coop Snowdrift.coop] Yesod-based web platform for funding free/libre/open works, welcomes Haskell volunteer devs including beginners
| [http://www.pugscode.org Perl 6] development (plenty of Haskell chat there too)
 
 
|-
 
|-
 
| #snapframework
 
| #snapframework
Line 208: Line 260:
 
| [http://yesodweb.com Yesod] web framework
 
| [http://yesodweb.com Yesod] web framework
 
|-
 
|-
  +
| #yampa
| #chicagohaskell
 
  +
| [https://wiki.haskell.org/Yampa Yampa] Arrowized FRP
| [http://chicagohaskell.com Chicago Haskell] programmers group
 
 
|}
 
|}
   
 
== Logs ==
 
== Logs ==
   
'''Logs''' are kept at http://tunes.org/~nef/logs/haskell/ and can be searched at http://ircbrowse.net/browse/haskell
+
'''Logs''' are kept at http://tunes.org/~nef/logs/haskell/
   
<!-- anywhere else? ircbrowse.com is a goner, apparently -->
+
<!-- anywhere else? http://ircbrowse.net/browse/haskell is a goner, apparently -->
   
 
== Bots ==
 
== Bots ==
Line 224: Line 276:
 
=== lambdabot ===
 
=== lambdabot ===
   
[[Lambdabot]] is both the name of a software package and a bot on the channel. It provides many useful services for visitors to the IRC channel. It is available as a haskell package and can be integrated into ghci. Details on the software are found on a [[Lambdabot|separate wiki page]].
+
[[Lambdabot]] is both the name of a software package and a bot on the channel. The bot is operated by IRC user <code>int-e</code> and provides many useful services for visitors to the IRC channel. You can interact with it in a private chat or publicly in any channel where it appears (#haskell and a number of others). It is available as a haskell package and can be integrated into ghci. Details on the software are found on a [[Lambdabot|separate wiki page]].
   
 
Here is its interface for the IRC user:
 
Here is its interface for the IRC user:
Line 230: Line 282:
 
lambdabot's commands are prepended by a '@' sign.
 
lambdabot's commands are prepended by a '@' sign.
   
{| border="1" cellspacing="0" cellpadding="5" align="center"
+
{| border="1" cellspacing="0" cellpadding="5"
 
! Command
 
! Command
 
! Usage
 
! Usage
Line 236: Line 288:
 
| @help
 
| @help
 
| display help to other commands, but help text is not available for all commands.
 
| display help to other commands, but help text is not available for all commands.
  +
|-
  +
| @where TOPIC (aliases: @what, @url) <br> @where ? <br> @where+ TOPIC NEWTEXT <br> @where+ TOPIC
  +
| show brief info about some TOPIC <br> list some useful topics (paste, cabalstackhelp, ...) <br> set/update a topic (check for collisions first with @where TOPIC) <br> delete a topic
 
|-
 
|-
 
| @type EXPR or ':t' EXPR
 
| @type EXPR or ':t' EXPR
Line 256: Line 311:
 
|}
 
|}
   
  +
See also:
=== preflex ===
 
  +
* http://silicon.int-e.eu/lambdabot/State/where - @where db snapshot, updated every few minutes
 
  +
* https://github.com/simonmichael/lambdabot-where - git repo and .tsv version of the @where db, updated occasionally
is the name of a lambdabot with more commands/plugins enabled. It is run by ?? To talk to preflex, write <tt>preflex: command ARGS</tt>
 
 
{| border="1" cellspacing="0" cellpadding="5" align="center"
 
! Command
 
! Usage
 
|-
 
| help COMMAND
 
| displays help to other commands.
 
|-
 
| list
 
| lists all plugins with their commands
 
|-
 
| NICK++ / NICK--
 
| in/decrements the karma of NICK.
 
|-
 
| karma NICK
 
| shows the karma of NICK
 
|-
 
| seen NICK
 
| shows information about the last message of a user
 
|-
 
| tell / ask
 
| sends NICK MSG a message when she becomes active.
 
|-
 
| xseen
 
| ''see 'seen' ?? any difference ?''
 
|-
 
| quote NICK
 
| prints a random quote of NICK
 
|-
 
| remember NAME QUOTE
 
| associates NAME with quote. can be accessed by 'quote'
 
|-
 
| ...
 
| ...
 
|}
 
 
=== hpaste ===
 
The hpaste bot provides a notification interface to the [http://hpaste.org hpaste pastebin]. [[Hpaste.el|Emacs integration]] is available.
 
   
  +
=== yahb ===
''Usage?''
 
  +
If lambdabot doesn't cut it for you, there is a bot called yahb which runs your request in an actual GHCi prompt, so you can use IO.
   
  +
Try e.g. <tt>% readFile "/proc/self/environ"</tt>
''Not online often !? ''
 
   
 
=== hackage ===
 
=== hackage ===
The hackage bot provides real-time notifications of new package uploads to [http://hackage.haskell.org Hackage].
+
The hackage bot, when running, provides real-time notifications of new package uploads to [http://hackage.haskell.org Hackage].
   
 
== Locations ==
 
== Locations ==

Latest revision as of 08:17, 29 March 2022

Internet Relay Chat is a worldwide text chat service with many thousands of users among various irc networks.

The Freenode IRC network used to host the very large #haskell channel, and we've had up to 1046 concurrent users, making the channel consistently one of the most popular of the thousands of channels on freenode. One famous resident is Lambdabot, another is hpaste (see the Bots section below).

As of May 19 2021, the #haskell channel and associated channels began to migrate to https://libera.chat/ . This process is still underway, but at this point it is recommended to join the channel there, and not freenode.

The IRC channel can be an excellent place to learn more about Haskell, and to just keep in the loop on new things in the Haskell world. Many new developments in the Haskell world first appear on the irc channel.

Since 2009, the Haskell channel has grown large enough that we've split it in two parts:

  • #haskell, for all the usual things
  • #haskell-in-depth , for those seeking in depth, or more theoretical discussion

As always, #haskell remains the primary place for new user questions.

#haskell visualized
The social graph, Jan 2008
Daily traffic since 2004
Growth
Noun map

Getting there

If you point your irc client to irc.libera.chat:6697 (TLS) and then join the #haskell channel, you'll be there. Alternately, you can try a client (some listed at [1] ) which connects inside the browser.

Example, using irssi:

   $ irssi -c irc.libera.chat:6697 -n myname -w mypassword
   /join #haskell

Tip, if you're using Emacs to edit your Haskell sources then why not use it to chat about Haskell? Check out ERC, The Emacs IRC client. Invoke it like this and follow the commands:

   M-x erc-select
   ...
   /join #haskell
A screenshot of an irssi session in #haskell

Matrix

If you use Matrix, you can join the #haskell-space:matrix.org Space, where you'll find most Haskell Matrix rooms (look for the "Haskell IRC Channels" sub-Space for IRC rooms).

Principles

The #haskell channel is a very friendly, welcoming place to hang out, teach and learn. The goal of #haskell is to encourage learning and discussion of Haskell, functional programming, and programming in general. As part of this we welcome newbies, and encourage teaching of the language.

Part of the #haskell success comes from the fact that the community is quite tight knit — we know each other — it's not just a homework channel. As a result, many collaborative projects have arisen between Haskell irc channel citizens.

To maintain the friendly, open culture, the following is required:

  • Low to zero tolerance for ridiculing questions. Insulting new users is unacceptable. New Haskell users should feel entirely comfortable asking questions.
  • Helpful answers should be encouraged with name++ karma points, in public, as a reward for providing a good answer.
  • Avoid getting frustrated by negative comments and ambiguous questions. Approach them by asking for details (i.e. Socratic questioning), rather than challenging the competence of the writer (ad hominem). As the channel grows, we see a diverse range of people with different programming backgrounds getting accustomed to Haskell. Be patient and take satisfaction from spreading knowledge.

History

The #haskell channel appeared in the late 90s, and really got going in early 2001, with the help of Shae Erisson (aka shapr).

Related channels

In addition to the main Haskell channel there are also:

Language/Country specific

Language channels are consolidated into the "#haskell-" namespace. Eventually the language channels below listed with "#haskell." will have to move.

Channel Purpose
#haskell-br Brazilian Portuguese (pt_BR) speakers
#haskell.cz Czech speakers (UTF-8)
#haskell.de German speakers
#haskell.dut Dutch speakers
#haskell.es Spanish speakers
#haskell.fi Finnish speakers
#haskell-fr French speakers (note the hyphen! in the channel name)
#haskell.hr Croatian speakers
#haskell-id Indonesian speakers (note the hyphen! in the channel name)
#haskell-it Italian speakers (note the hyphen! in the channel name)
#haskell.jp Japanese speakers
#haskell.scandinavian Scandinavian speakers
#haskell-kr Korean speakers
#haskell.no Norwegian speakers
#haskell.pt Portuguese speakers
#haskell-pl Polish speakers
#haskell.ru Russian speakers. Seems that most of them migrated to Jabber conference (haskell@conference.jabber.ru).
#haskell_ru Russian speakers again, in UTF-8. For those, who prefer good ol' IRC channel with a lambdabot.
#haskell-ro Romanian speakers.
#haskell.se Swedish speakers
#haskell-tw Chinese speakers (mainly in Taiwan)
#haskell.vn Vietnamese speakers
#chicagohaskell Chicago Haskell programmers group

Platform-specific

Channel Purpose
#haskell-beginners Haskell people focused on teaching and learning Haskell, not just beginners.
#haskell-offtopic Haskell people talking about anything except Haskell itself (no TLS required)
#haskell-blah Haskell people talking about anything except Haskell itself (TLS required)
#haskell-game The hub for Haskell-based game development
#haskell-in-depth slower paced discussion of use, theory, implementation etc with no monad tutorials!
#haskell-iphone Haskell-based iPhone development
#haskell-apple projects that target iOS or OS X using Haskell.
#haskell-lisp Haskell Lisp - projects that are creating Lisps written in Haskell, or Haskell implementations written in Lisps.
#haskell-llvm For projects using Haskell and LLVM
#haskell-overflow Overflow conversations
#haskell-web Friendly, practical discussion of haskell web app/framework/server development
#haskell-robotics Discussion about the use of Haskell for robotics applications.
#arch-haskell Arch Linux/ specific Haskell conversations
#fedora-haskell Fedora Haskell SIG
#gentoo-haskell Gentoo/Linux specific Haskell conversations

Projects using haskell

Channel Purpose
#darcs Darcs revision control system
#diagrams Diagrams EDSL
#hackage Haskell's software distribution infrastructure
#haskell-cryptography Discussions about the Haskell Cryptography toolkit
#haskell-lens Lens discussions
#haskell-servant Servant web framework discussions
#haskell-stack Stack discussions
#happs Happstack web framework
#hledger hledger accounting tools and library
#leksah Leksah IDE for Haskell development
#snowdrift Snowdrift.coop Yesod-based web platform for funding free/libre/open works, welcomes Haskell volunteer devs including beginners
#snapframework Snap web framework
#xmonad Xmonad tiling window manager
#yesod Yesod web framework
#yampa Yampa Arrowized FRP

Logs

Logs are kept at http://tunes.org/~nef/logs/haskell/


Bots

There are various bots on the channel. Their names and usage are described here.

lambdabot

Lambdabot is both the name of a software package and a bot on the channel. The bot is operated by IRC user int-e and provides many useful services for visitors to the IRC channel. You can interact with it in a private chat or publicly in any channel where it appears (#haskell and a number of others). It is available as a haskell package and can be integrated into ghci. Details on the software are found on a separate wiki page.

Here is its interface for the IRC user:

lambdabot's commands are prepended by a '@' sign.

Command Usage
@help display help to other commands, but help text is not available for all commands.
@where TOPIC (aliases: @what, @url)
@where ?
@where+ TOPIC NEWTEXT
@where+ TOPIC
show brief info about some TOPIC
list some useful topics (paste, cabalstackhelp, ...)
set/update a topic (check for collisions first with @where TOPIC)
delete a topic
@type EXPR or ':t' EXPR shows the type of an expression
@kind TYPECONSTRUCTOR shows the kind of a type constructor
@run EXPR or '>' EXPR evaluates EXPR
@pl FUNCTION shows a pointfree version of FUNCTION
@pointful FUNCTION or '@unpl' FUNCTION shows a 'pointful' version of FUNCTION
@tell <nick> <msg> -- same as @ask Next time <nick> speaks in channel they will be notified they have a message pending and how to receive it.

See also:

yahb

If lambdabot doesn't cut it for you, there is a bot called yahb which runs your request in an actual GHCi prompt, so you can use IO.

Try e.g. % readFile "/proc/self/environ"

hackage

The hackage bot, when running, provides real-time notifications of new package uploads to Hackage.

Locations

To get an overview of where everybody on the channel might be, physically, please visit Haskell user locations.