(superseded) the third version of juno-ircd, an IRC daemon written in Perl
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
etc
inc
mod
run
.gitignore
INDEV
LICENSE
README.md
juno

README.md

THIS IS AN OLD VERSION

juno-ircd version 3

Yes.
It really is an IRC daemon.
It's written in Perl.

...
You can breathe again.
There. Very good.

what is juno-ircd version 3?

juno-ircd is a fully-featured, modular, and usable IRC daemon written in Perl. It is aimed to be highly extensible and customizable. At the same time it is efficient and usable.

Here is a list of goals that juno-ircd is designed for.

  • being written in Perl.
  • being extensible and flexible.
  • being customizable in every visibly possible way.
  • compatibility with some standards and hopefully most clients.
  • seamless multi-server IRC networks.
  • drop-in code: the ability to update most features without restarting.
  • being bugless. (but everyone makes mistakes every once in a while..)

Here's a list of things juno is not designed for.

  • being memory-friendly.
  • compatibility with non-unix-like systems.
  • being a compiled executable.
  • replicating functionality of the original ircd or ircds branched from it.
  • replicating inspircd.
  • supporting IRC clients from 1912.
  • non-English-speaking server administrators.
  • linking with other ircds (so don't ask for that.)

from juno2 to juno3, what's new?

  • a very extensible linking protocol
  • more efficiency
  • the ability to host over 9,000 users
  • an even more extensible API
  • more customization
  • a better configuration
  • even more modular
  • more IRC-compliant (probably better for OS X IRC clients!)
  • less buggy
  • more features in general
  • the ability to update core features without restarting

installation

juno is designed to be used out-of-the-box. It comes with a working configuration and, up until recently, depended only on modules that ship with Perl. However, it now requires much of the IO::Async library and IO::Socket::IP for IPv4 and IPv6 support. After you get everything you need installed, feel free to either fire up the IRCd for trying it out or editing the example configuration. The configuration should be saved as etc/ircd.conf.

history

juno-ircd started as a fork of pIRCd, the Perl IRC daemon written several years ago by Jay Kominek. It has grown to be a bit more practical.

  • pIRCd: very buggy, lacking features other than traditional IRC features, poorly coded. during its time it was one of few IRCds that featured SSL support.
  • pIRCd2: the same as pIRCd, except you can use dollar signs in your nicks, like Ke$ha.
  • juno-ircd: very poorly written but has more features: five prefixes instead of two, multi-prefix, CAP, channel link mode, internal logging channel, network administrator support, oper-override mode, channel mute mode, kline command, an almost-working buggy linking protocol, and a network name configuration option. and that's when I realized pIRCd blows.
  • juno: rewritten from scratch, far more usable than any other previous version. This version of juno is what I would consider to be "fully-featured." It has an easy-to-use module API and just about every channel mode you can think of. However, it does not support server linking at all.
  • juno3: rewritten from scratch, far more efficient than any previous version of juno. capable of handling over nine thousand connections and 100,000 global users. has an even more capable module API than juno2. has its own custom linking protocol that is also very, very extensible. designed to be so customizable that almost anything can be edited by using a module. requires more resources than before, but is also more prepared for IRC networks with large loads.

When juno2 was in development, it was named "juno" where juno1 was named "juno-ircd" as it always had been. When juno3 was born, juno-ircd and juno were renamed to juno1 and juno2 to avoid confusion. Versions are written as version.major.minor.commit, such as 3.2.1.1 (juno3 2.1 commit 1.)

more info

See INDEV for a changelog and TODO list. If you need any help with setting up/configuring juno, visit us on NoTrollPlzNet IRC at irc.notroll.net port 6667 #k. I love new ideas, so feel free to recommend a feature or fix.