* doc/misc/erc.texi (Connecting): Add brief section on passwords.
[emacs.git] / doc / misc / erc.texi
blobea315cd86fad24ab225dafd374c78ec92b7fcaa2
1 \input texinfo
2 @c %**start of header
3 @setfilename ../../info/erc
4 @settitle ERC Manual
5 @syncodeindex fn cp
6 @include emacsver.texi
7 @c %**end of header
9 @copying
10 This manual is for ERC as distributed with Emacs @value{EMACSVER}.
12 Copyright @copyright{} 2005-2012 Free Software Foundation, Inc.
14 @quotation
15 Permission is granted to copy, distribute and/or modify this document
16 under the terms of the GNU Free Documentation License, Version 1.3 or
17 any later version published by the Free Software Foundation; with no
18 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
19 and with the Back-Cover Texts as in (a) below.  A copy of the license
20 is included in the section entitled ``GNU Free Documentation License''.
22 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
23 modify this GNU manual.  Buying copies from the FSF supports it in
24 developing GNU and promoting software freedom.''
26 All Emacs Lisp code contained in this document may be used, distributed,
27 and modified without restriction.
28 @end quotation
29 @end copying
31 @dircategory Emacs network features
32 @direntry
33 * ERC: (erc).                   Powerful and extensible IRC client for Emacs.
34 @end direntry
36 @titlepage
37 @title ERC manual
38 @subtitle a full-featured IRC client
39 @subtitle for Emacs and XEmacs
41 @c The following two commands
42 @c start the copyright page.
43 @page
44 @vskip 0pt plus 1filll
45 @insertcopying
46 @end titlepage
48 @contents
50 @ifnottex
51 @node Top
52 @top ERC
54 @insertcopying
55 @end ifnottex
57 @menu
58 * Introduction::                What is ERC?
59 * Getting Started::             Quick Start guide to using ERC.
60 * Keystroke Summary::           Keystrokes used in ERC buffers.
61 * Modules::                     Available modules for ERC.
62 * Advanced Usage::              Cool ways of using ERC.
63 * Getting Help and Reporting Bugs::  
64 * History::                     The history of ERC.
65 * Copying::                     The GNU General Public License gives you
66                                   permission to redistribute ERC on
67                                   certain terms; it also explains that
68                                   there is no warranty.
69 * GNU Free Documentation License::  The license for this documentation.
70 * Concept Index::               Search for terms.
72 @detailmenu
73  --- The Detailed Node Listing ---
75 Getting Started
77 * Sample Session::              Example of connecting to the #emacs channel
78 * Special Features::            Differences from standalone IRC clients
80 Advanced Usage
82 * Connecting::                  Ways of connecting to an IRC server.
83 * Sample Configuration::        An example configuration file.
84 * Options::                     Options that are available for ERC.
86 @end detailmenu
87 @end menu
89 @node Introduction
90 @chapter Introduction
92 ERC is a powerful, modular, and extensible IRC client for Emacs.
93 It is distributed with Emacs since version 22.1.
95 It comes with the following capabilities enabled by default.
97 @itemize @bullet
98 @item Flood control
99 @item Timestamps
100 @item Join channels automatically
101 @item Buttonize URLs, nicknames, and other text
102 @item Wrap long lines
103 @item Highlight or remove IRC control characters
104 @item Highlight pals, fools, and other keywords
105 @item Detect netsplits
106 @item Complete nicknames and commands in a programmable fashion
107 @item Make displayed lines read-only
108 @item Input history
109 @item Track channel activity in the mode-line
111 @end itemize
114 @node Getting Started
115 @chapter Getting Started
116 @cindex settings
118 The command @kbd{M-x erc} will start ERC and prompt for the server to
119 connect to.
121 If you want to place ERC settings in their own file, you can place them
122 in @file{~/.emacs.d/.ercrc.el}, creating it if necessary.
124 If you would rather use the Customize interface to change how ERC works,
125 do @kbd{M-x customize-group RET erc RET}.  In particular, ERC comes with
126 lots of modules that may be enabled or disabled; to select which ones
127 you want, do @kbd{M-x customize-variable RET erc-modules RET}.
129 @menu
130 * Sample Session::              Example of connecting to the #emacs channel
131 * Special Features::            Differences from standalone IRC clients
132 @end menu
134 @node Sample Session
135 @section Sample Session
137 This is an example ERC session which shows how to connect to the #emacs
138 channel on Freenode.  Another IRC channel on Freenode that may be of
139 interest is #erc, which is a channel where ERC users and developers hang
140 out.
142 @itemize @bullet
144 @item Connect to Freenode
146 Run @kbd{M-x erc}.  Use ``irc.freenode.net'' as the IRC server, ``6667''
147 as the port, and choose a nickname.
149 @item Get used to the interface
151 Switch to the ``irc.freenode.net:6667'' buffer, if you're not already
152 there.  You will see first some messages about checking for ident, and
153 then a bunch of other messages that describe the current IRC server.
155 @item Join the #emacs channel
157 In that buffer, type ``/join SPC #emacs'' and hit @kbd{RET}.  Depending
158 on how you've set up ERC, either a new buffer for ``#emacs'' will be
159 displayed, or a new buffer called ``#emacs'' will be created in the
160 background.  If the latter, switch to the ``#emacs'' buffer.  You will
161 see the channel topic and a list of the people who are currently on the
162 channel.
164 @item Register your nickname with Freenode
166 If you would like to be able to talk with people privately on the
167 Freenode network, you will have to ``register'' your nickname.  To do
168 so, switch to the ``irc.freenode.net:6667'' buffer and type ``/msg
169 NickServ register <password>'', replacing ``<password>'' with your
170 desired password.  It should tell you that the operation was successful.
172 @item Talk to people in the channel
174 If you switch back to the ``#emacs'' buffer, you can type a message, and
175 everyone on the channel will see it.
177 @item Open a query buffer to talk to someone
179 If you want to talk with someone in private (this should usually not be
180 done for technical help, only for personal questions), type ``/query
181 <nick>'', replacing ``<nick>'' with the nickname of the person you would
182 like to talk to.  Depending on how ERC is set up, you will either see a
183 new buffer with the name of the person, or such a buffer will be created
184 in the background and you will have to switch to it.  Begin typing
185 messages, and you will be able to have a conversation.
187 Note that if the other person is not registered, you will not be able to
188 talk with them.
190 @end itemize
192 @node Special Features
193 @section Special Features
195 ERC has some features that distinguish it from some IRC clients.
197 @itemize @bullet
199 @item multiple channels and multiple servers
201 Every channel is put in a separate buffer.  Several IRC servers may be
202 connected to at the same time.
204 @cindex query buffers
205 @item private message separation
207 Private conversations are treated as channels, and are put into separate
208 buffers in Emacs.  We call these ``query buffers''.
210 @item highlighting
212 Some occurrences of words can be highlighted, which makes it easier to
213 track different kinds of conversations.
215 @item notification
217 ERC can notify you that certain users are online.
219 @item channel tracking
221 Channels can be hidden and conversation continue in the background.  You
222 are notified when something is said in such a channel that is not
223 currently visible.  This makes it easy to get Real Work done while still
224 maintaining an IRC presence.
226 @item nick completion
228 ERC can complete words upon hitting @kbd{TAB}, which eases the writing
229 of nicknames in messages.
231 @cindex history ring
232 @item history
234 Past actions are kept in history rings for future use.  To navigate a
235 history ring, hit @kbd{M-p} to go backwards and @kbd{M-n} to go
236 forwards.
238 @item multiple languages
240 Different channels and servers may have different language encodings.
242 In addition, it is possible to translate the messages that ERC uses into
243 multiple languages.  Please contact the developers of ERC at
244 @email{erc-discuss@@gnu.org} if you are interested in helping with the
245 translation effort.
247 @item user scripting
249 Users can load scripts (e.g. auto greeting scripts) when ERC starts up.
251 It is also possible to make custom IRC commands, if you know a little
252 Emacs Lisp.  Just make an Emacs Lisp function and call it
253 @code{erc-cmd-NEWCOMMAND}, where @code{NEWCOMMAND} is the name of the
254 new command in capital letters.
256 @item auto reconnect
258 If the connection goes away at some point, ERC will try to reconnect
259 automatically.  If it fails to reconnect, and you want to try to
260 manually reestablish the connection at some later point, switch to an
261 ERC  buffer and run the @code{/RECONNECT} command.
263 @end itemize
266 @node Keystroke Summary
267 @chapter Keys Used in ERC
268 @cindex keystrokes
270 This is a summary of keystrokes available in every ERC buffer.
272 @table @kbd
274 @item C-a or <home> (`erc-bol')
275 Go to beginning of line or end of prompt.
277 @item RET (`erc-send-current-line')
278 Send the current line
280 @item TAB (`erc-complete-word')
281 If at prompt, complete the current word.
282 Otherwise, move to the next link or button.
284 @item M-TAB (`ispell-complete-word')
285 Complete the given word, using ispell.
287 @item C-c C-a (`erc-bol')
288 Go to beginning of line or end of prompt.
290 @item C-c C-b (`erc-iswitchb')
291 Use `iswitchb-read-buffer' to prompt for a ERC buffer to switch to.
293 @item C-c C-c (`erc-toggle-interpret-controls')
294 Toggle interpretation of control sequences in messages.
296 @item C-c C-d (`erc-input-action')
297 Interactively input a user action and send it to IRC.
299 @item C-c C-e (`erc-toggle-ctcp-autoresponse')
300 Toggle automatic CTCP replies (like VERSION and PING).
302 @item C-c C-f (`erc-toggle-flood-control')
303 Toggle use of flood control on sent messages.
305 @item C-c TAB (`erc-invite-only-mode')
306 Turn on the invite only mode (+i) for the current channel.
308 @item C-c C-j (`erc-join-channel')
309 Join channel.  If point is at the beginning of a channel name, use that
310 as default.
312 @item C-c C-k (`erc-go-to-log-matches-buffer')
313 Interactively open an erc-log-matches buffer
315 @item C-c C-l (`erc-save-buffer-in-logs')
316 Append buffer contents to the log file, if logging is enabled.
318 @item C-c C-n (`erc-channel-names')
319 Run "/names #channel" in the current channel.
321 @item C-c C-o (`erc-get-channel-mode-from-keypress')
322 Read a key sequence and call the corresponding channel mode function.
323 After doing @kbd{C-c C-o}, type in a channel mode letter.
325 @kbd{C-g} means quit.
326 @kbd{RET} lets you type more than one mode at a time.
327 If @kbd{l} is pressed, @code{erc-set-channel-limit} gets called.
328 If @kbd{k} is pressed, @code{erc-set-channel-key} gets called.
329 Anything else will be sent to `erc-toggle-channel-mode'.
331 @item C-c C-p (`erc-part-from-channel')
332 Part from the current channel and prompt for a reason.
334 @item C-c C-q (`erc-quit-server')
335 Disconnect from current server after prompting for reason.
337 @item C-c C-r (`erc-remove-text-properties-region')
338 Clears the region (start,end) in object from all colors, etc.
340 @item C-c C-t (`erc-set-topic')
341 Prompt for a topic for the current channel.
343 @item C-c C-u (`erc-kill-input')
344 Kill current input line using `erc-bol' followed by `kill-line'.
346 @end table
349 @node Modules
350 @chapter Modules
351 @cindex modules
353 One way to add functionality to ERC is to customize which of its many
354 modules are loaded.
356 There is a spiffy customize interface, which may be reached by typing
357 @kbd{M-x customize-option erc-modules RET}.  Alternatively, set
358 @code{erc-modules} manually and then call @code{erc-update-modules}.
360 The following is a list of available modules.
362 @table @code
364 @cindex modules, autoaway
365 @item autoaway
366 Set away status automatically
368 @cindex modules, autojoin
369 @item autojoin
370 Join channels automatically
372 @cindex modules, bbdb
373 @item bbdb
374 Integrate with the Big Brother Database
376 @cindex modules, button
377 @item button
378 Buttonize URLs, nicknames, and other text
380 @cindex modules, capab-identify
381 @item capab-identify
382 Mark unidentified users on freenode and other servers supporting CAPAB.
384 @cindex modules, completion
385 @cindex modules, pcomplete
386 @item completion (aka pcomplete)
387 Complete nicknames and commands (programmable)
389 @cindex modules, fill
390 @item fill
391 Wrap long lines
393 @cindex modules, identd
394 @item identd
395 Launch an identd server on port 8113
397 @cindex modules, irccontrols
398 @item irccontrols
399 Highlight or remove IRC control characters
401 @cindex modules, log
402 @item log
403 Save buffers in logs
405 @cindex modules, match
406 @item match
407 Highlight pals, fools, and other keywords
409 @cindex modules, menu
410 @item menu
411 Display a menu in ERC buffers
413 @cindex modules, netsplit
414 @item netsplit
415 Detect netsplits
417 @cindex modules, noncommands
418 @item noncommands
419 Don't display non-IRC commands after evaluation
421 @cindex modules, notify
422 @item notify
423 Notify when the online status of certain users changes
425 @cindex modules, notifications
426 @item notifications
427 Send you a notification when you get a private message,
428 or your nickname is mentioned
430 @cindex modules, page
431 @item page
432 Process CTCP PAGE requests from IRC
434 @cindex modules, readonly
435 @item readonly
436 Make displayed lines read-only
438 @cindex modules, replace
439 @item replace
440 Replace text in messages
442 @cindex modules, ring
443 @item ring
444 Enable an input history
446 @cindex modules, scrolltobottom
447 @item scrolltobottom
448 Scroll to the bottom of the buffer
450 @cindex modules, services
451 @item services
452 Identify to Nickserv (IRC Services) automatically
454 @cindex modules, smiley
455 @item smiley
456 Convert smileys to pretty icons
458 @cindex modules, sound
459 @item sound
460 Play sounds when you receive CTCP SOUND requests
462 @cindex modules, spelling
463 @item spelling
464 Check spelling of messages
466 @cindex modules, stamp
467 @item stamp
468 Add timestamps to messages
470 @cindex modules, track
471 @item track
472 Track channel activity in the mode-line
474 @cindex modules, truncate
475 @item truncate
476 Truncate buffers to a certain size
478 @cindex modules, unmorse
479 @item unmorse
480 Translate morse code in messages
482 @end table
484 @c PRE5_4: Document every option of every module in its own subnode
487 @node Advanced Usage
488 @chapter Advanced Usage
489 @cindex advanced topics
491 @menu
492 * Connecting::                  Ways of connecting to an IRC server.
493 * Sample Configuration::        An example configuration file.
494 * Options::                     Options that are available for ERC.
495 @end menu
497 @node Connecting
498 @section Connecting to an IRC Server
499 @cindex connecting
501 The easiest way to connect to an IRC server is to call @kbd{M-x erc}.
502 If you want to assign this function to a keystroke, the following will
503 help you figure out its parameters.
505 @defun erc
506 Select connection parameters and run ERC.
507 Non-interactively, it takes the following keyword arguments.
509 @itemize @bullet
510 @item @var{server}
511 @item @var{port}
512 @item @var{nick}
513 @item @var{password}
514 @item @var{full-name}
515 @end itemize
517 That is, if called with the following arguments, @var{server} and
518 @var{full-name} will be set to those values, whereas
519 @code{erc-compute-port}, @code{erc-compute-nick} and
520 @code{erc-compute-full-name} will be invoked for the values of the other
521 parameters.
523 @example
524 (erc :server "irc.freenode.net" :full-name "Harry S Truman")
525 @end example
526 @end defun
528 @subheading Server
530 @defun erc-compute-server &optional server
531 Return an IRC server name.
533 This tries a number of increasingly more default methods until a non-nil
534 value is found.
536 @itemize @bullet
537 @item @var{server} (the argument passed to this function)
538 @item The @code{erc-server} option
539 @item The value of the IRCSERVER environment variable
540 @item The @code{erc-default-server} variable
541 @end itemize
543 @end defun
545 @defopt erc-server nil
546 IRC server to use if one is not provided.
547 @end defopt
549 @subheading Port
551 @defun erc-compute-port &optional port
552 Return a port for an IRC server.
554 This tries a number of increasingly more default methods until a non-nil
555 value is found.
557 @itemize @bullet
558 @item @var{port} (the argument passed to this function)
559 @item The @code{erc-port} option
560 @item The @code{erc-default-port} variable
561 @end itemize
563 @end defun
565 @defopt erc-port
566 IRC port to use if not specified.
568 This can be either a string or a number.
569 @end defopt
571 @subheading Nick
573 @defun erc-compute-nick &optional nick
574 Return user's IRC nick.
576 This tries a number of increasingly more default methods until a
577 non-nil value is found.
579 @itemize
580 @item @var{nick} (the argument passed to this function)
581 @item The @code{erc-nick} option
582 @item The value of the IRCNICK environment variable
583 @item The result from the @code{user-login-name} function
584 @end itemize
586 @end defun
588 @defopt erc-nick
589 Nickname to use if one is not provided.
591 This can be either a string, or a list of strings.
592 In the latter case, if the first nick in the list is already in use,
593 other nicks are tried in the list order.
594 @end defopt
596 @defopt erc-nick-uniquifier
597 The string to append to the nick if it is already in use.
598 @end defopt
600 @defopt erc-try-new-nick-p
601 If the nickname you chose isn't available, and this option is non-nil,
602 ERC should automatically attempt to connect with another nickname.
604 You can manually set another nickname with the /NICK command.
605 @end defopt
607 @subheading Password
608 @cindex password
610 @defopt erc-prompt-for-password
611 If non-@code{nil} (the default), @kbd{M-x erc} prompts for a password.
612 @end defopt
614 If you prefer, you can set this option to @code{nil} and use the
615 @code{auth-source} mechanism to store your password.  For instance, if
616 you use @file{~/.authinfo} as your auth-source backend, then put
617 something like the following in that file:
619 @example
620 machine irc.example.net login "#fsf" password sEcReT
621 @end example
623 @noindent
624 ERC also consults @code{auth-source} to find any channel keys required
625 for the channels that you wish to autojoin, as specified by the
626 variable @code{erc-autojoin-channels-alist}.
628 For more details, @pxref{Top,,auth-source, auth, Emacs auth-source Library}.
631 @subheading Full name
633 @defun erc-compute-full-name &optional full-name
634 Return user's full name.
636 This tries a number of increasingly more default methods until a
637 non-nil value is found.
639 @itemize @bullet
640 @item @var{full-name} (the argument passed to this function)
641 @item The @code{erc-user-full-name} option
642 @item The value of the IRCNAME environment variable
643 @item The result from the @code{user-full-name} function
644 @end itemize
646 @end defun
648 @defopt erc-user-full-name
649 User full name.
651 This can be either a string or a function to call.
652 @end defopt
654 @node Sample Configuration
655 @section Sample Configuration
656 @cindex configuration, sample
658 Here is an example of configuration settings for ERC.  This can go into
659 your Emacs configuration file.  Everything after the @code{(require
660 'erc)} command can optionally go into @file{~/.emacs.d/.ercrc.el}.
662 @lisp
663 ;;; Sample ERC configuration
665 ;; Add the ERC directory to load path -- you don't need this if you are
666 ;; using the version of ERC that comes with Emacs
667 (add-to-list 'load-path "~/elisp/erc")
669 ;; Load ERC
670 (require 'erc)
672 ;; Load authentication info from an external source.  Put sensitive
673 ;; passwords and the like in here.
674 (load "~/.emacs.d/.erc-auth")
676 ;; This is an example of how to make a new command.  Type "/uptime" to
677 ;; use it.
678 (defun erc-cmd-UPTIME (&rest ignore)
679   "Display the uptime of the system, as well as some load-related
680 stuff, to the current ERC buffer."
681   (let ((uname-output
682          (replace-regexp-in-string
683           ", load average: " "] @{Load average@} ["
684           ;; Collapse spaces, remove
685           (replace-regexp-in-string
686            " +" " "
687            ;; Remove beginning and trailing whitespace
688            (replace-regexp-in-string
689             "^ +\\|[ \n]+$" ""
690             (shell-command-to-string "uptime"))))))
691     (erc-send-message
692      (concat "@{Uptime@} [" uname-output "]"))))
694 ;; This causes ERC to connect to the Freenode network upon hitting
695 ;; C-c e f.  Replace MYNICK with your IRC nick.
696 (global-set-key "\C-cef" (lambda () (interactive)
697                            (erc :server "irc.freenode.net" :port "6667"
698                                 :nick "MYNICK")))
700 ;; This causes ERC to connect to the IRC server on your own machine (if
701 ;; you have one) upon hitting C-c e b.  Replace MYNICK with your IRC
702 ;; nick.  Often, people like to run bitlbee (http://bitlbee.org/) as an
703 ;; AIM/Jabber/MSN to IRC gateway, so that they can use ERC to chat with
704 ;; people on those networks.
705 (global-set-key "\C-ceb" (lambda () (interactive)
706                            (erc :server "localhost" :port "6667"
707                                 :nick "MYNICK")))
709 ;; Make C-c RET (or C-c C-RET) send messages instead of RET. This has
710 ;; been commented out to avoid confusing new users.
711 ;; (define-key erc-mode-map (kbd "RET") nil)
712 ;; (define-key erc-mode-map (kbd "C-c RET") 'erc-send-current-line)
713 ;; (define-key erc-mode-map (kbd "C-c C-RET") 'erc-send-current-line)
715 ;;; Options
717 ;; Join the #emacs and #erc channels whenever connecting to Freenode.
718 (setq erc-autojoin-channels-alist '(("freenode.net" "#emacs" "#erc")))
720 ;; Interpret mIRC-style color commands in IRC chats
721 (setq erc-interpret-mirc-color t)
723 ;; The following are commented out by default, but users of other
724 ;; non-Emacs IRC clients might find them useful.
725 ;; Kill buffers for channels after /part
726 ;; (setq erc-kill-buffer-on-part t)
727 ;; Kill buffers for private queries after quitting the server
728 ;; (setq erc-kill-queries-on-quit t)
729 ;; Kill buffers for server messages after quitting the server
730 ;; (setq erc-kill-server-buffer-on-quit t)
731 @end lisp
733 @node Options
734 @section Options
735 @cindex options
737 @c PRE5_4: (Node) Document every ERC option (module options go in
738 @c previous chapter)
740 This section has not yet been written.  For now, the easiest way to
741 check out the available options for ERC is to do
742 @kbd{M-x customize-group erc RET}.
745 @node Getting Help and Reporting Bugs
746 @chapter Getting Help and Reporting Bugs
747 @cindex help, getting
748 @cindex bugs, reporting
750 After you have read this guide, if you still have questions about ERC,
751 or if you have bugs to report, there are several places you can go.
753 @itemize @bullet
755 @item
756 @uref{http://www.emacswiki.org/cgi-bin/wiki/ERC} is the
757 emacswiki.org page for ERC.  Anyone may add tips, hints, etc. to it.
759 @item
760 You can ask questions about using ERC on the Emacs mailing list,
761 @uref{http://lists.gnu.org/mailman/listinfo/help-gnu-emacs}.
763 @item
764 You can visit the IRC Freenode channel @samp{#emacs}. Many of the
765 contributors are frequently around and willing to answer your
766 questions.
768 @item
769 To report a bug in ERC, use @kbd{M-x report-emacs-bug}.
771 @end itemize
774 @node History
775 @chapter History
776 @cindex history, of ERC
778 ERC was originally written by Alexander L. Belikoff
779 @email{abel@@bfr.co.il} and Sergey Berezin
780 @email{sergey.berezin@@cs.cmu.edu}.  They stopped development around
781 December 1999.  Their last released version was ERC 2.0.
783 P.S.: If one of the original developers of ERC reads this, we'd like to
784 receive additional information for this file and hear comments in
785 general.
787 @itemize
788 @item 2001
790 In June 2001, Mario Lang @email{mlang@@delysid.org} and Alex Schroeder
791 @email{alex@@gnu.org} took over development and created a ERC Project at
792 @uref{http://sourceforge.net/projects/erc}.
794 In reaction to a mail about the new ERC development effort, Sergey
795 Berezin said, ``First of all, I'm glad that my version of ERC is being
796 used out there.  The thing is, I do not have free time and enough
797 incentive anymore to work on ERC, so I would be happy if you guys take
798 over the project entirely.''
800 So we happily hacked away on ERC, and soon after (September 2001)
801 released the next "stable" version, 2.1.
803 Most of the development of the new ERC happened on #emacs on
804 irc.openprojects.net.  Over time, many people contributed code, ideas,
805 bugfixes, and a lot of alpha/beta/gamma testing.
807 See the @file{CREDITS} file for a list of contributors.
809 @item 2003
811 ERC 3.0 was released.
813 @item 2004
815 ERC 4.0 was released.
817 @item 2005
819 ERC 5.0 was released.  Michael Olson @email{mwolson@@gnu.org} became
820 the release manager and eventually the maintainer.
822 After some discussion between him and the Emacs developers, it was
823 decided to include ERC in Emacs.
825 @item 2006
827 ERC 5.1 was released.  It was subsequently included in Emacs 22.
829 ERC became an official GNU project, and development moved to
830 @uref{http://sv.gnu.org/projects/erc}.  We switched to using GNU Arch as
831 our revision control system.  Our mailing list address changed as well.
833 @item 2007
835 We switched to using git for our version control system.
837 @item 2009+
839 Since about 2009, ERC is no longer developed as a separate project, but
840 is maintained as part of Emacs.
842 @end itemize
844 @node Copying
845 @appendix GNU GENERAL PUBLIC LICENSE
846 @include gpl.texi
848 @node GNU Free Documentation License
849 @appendix GNU Free Documentation License
850 @include doclicense.texi
852 @node Concept Index
853 @unnumbered Index
855 @printindex cp
857 @bye