moepII FAQ

At the moment you find 44 questions and just as many answers under 7 headlines which results in 6.3 answered questions per headline. Quite interesting, right?


What's what
1.1. What's IRC?
1.2. What's about those 'three kinds of users: operators, voiced users, normal users'?
1.3. What's the task of moepII?
1.4. What's about moepII and IRClib?

General questions
2.1. On which operating systems can I run moepII?
2.2. Which Java version do I need for moepII?
2.3. Why does moepII not run on my WindowsXP?
2.4. Is the sourcecode of moepII available?
2.5. How large is the sourcecode?
2.6. Which parts are based on jqIRC?
2.7. Who develops IRClib and moepII?
2.8. Why is moepII only in English available?
2.9. Do you plan to localize moepII (several languages)?
2.10. How do you pronounce moepII?

Installation and setup
3.1. I have got the Java Runtime Environment, how can I start moepII?
3.2. How to configure the program?
3.3. Why is moepII so slow?
3.4. What are modules?
3.5. How can I load modules?
3.6. How can I write modules?
3.7. Since which versions can I use modules?

Commands
4.1. How can I execute a command?
4.2. Can I hide the printing of an executed command?
4.3. How do I send a message to a channel or to a person?
4.4. Why is there no /ME-command as I know it from mIRC?
4.5. Why is there no possibility to format a text with colors, bold, underline?
4.6. Why do I see colored, underlined and bold text plain?
4.7. Why does moepII not respond to VERSION-requests?
4.8. Why does moepII not respond to PING-requests?
4.9. Why does moepII not respond to TIME-requests?
4.10. How can I ban someone?
4.11. Can I send a file via DCC?

Channelmodes and ChanCenter
5.1. What are channel-modes?
5.2. What does which channel-mode mean?
5.3. How can I remove a key when it's shown by a star (*)?

Nicklist
6.1. What does the nicklist contain?
6.2. What the @ at the beginning of the nicknames mean?
6.3. What does the + at the beginning of the nicknames mean?
6.4. What are users without anything at the beginning of their nickname?
6.5. How can I order the nicklist ascending?

Mixed questions
7.1. How can I switch the channels with the keyboard?
7.2. Why doesn't the program beep when a highlight occurs?
7.3. How to close a channel after a kick-ban?
7.4. What are netsplits?






1.1. What's IRC? (Top)
IRC stands for Internet Relay Chat and is the chat protocol of the internet. It's very old, even older than the WWW: it was developed in 1988 (maybe I fail here) by Jarkko Oikarinen and Darren Reed. There are to parties in IRC: the IRC networks (which constist often of many servers located all over the world) and the IRC clients (people like you and me using an IRC client program to chat on an IRC network). Those clients can communicate with groups (in chatrooms which are called channels in IRC) or directly with one specified user.
IRC is much more professional than the chats you know from many websites:

Of course, IRC offers many more features and has more great characteristics.
The most users know the instant messengers like ICQ and the chats from WWW pages. So I would summerize for those people: IRC combines the good things of the www-chats and the good things of ICQ. But remember that IRC did not copy those things, it's much older than both.

A surely better introduction to IRC is available on IRChelp.org, especially this document.

1.2. What's about those 'three kinds of users: operators, voiced users, normal users'? (Top)
You should have been on an IRC network yet, else you can't understand this, I think.
On every channel different modes can be assigned to the users: the operator mode, the voiced mode, or just no mode (normal, standard). The operator (operators are those who have the mode +o and they are marked with an @ at the beginning of their name in the nicklist of moepII) has the power over the channel; he can kick and ban others, he can change channel-modes and topic and many other things.
The voiced users (those with the mode +v, marked with a + in the nicklist of moepII) are allowed to speak even when the channel is moderated (channelmode +m). In most cases, being voiced hasn't any advantage. Thus, the +v mode has mostly only a symbolic meaning to show that this user is an important person.
The normal users just have no special rights. Their only right is to chat (if the channel isn't moderated with +m, in such case you need to be voiced with mode +v as described above).
These rights have nothing to do with the IRC network! The modes, operator and voiced, are depending on the channel the user is on: someone who is operator in channel #first isn't compelling operator in #second.

1.3. What's the task of moepII? (Top)
moepII is a client program for IRC. You need such a IRC client program to connect to a network, join channels on it and chat with other persons. The client knows how to speak with the server and how to show data received from the server. The task of a client is to make an IRC session as clear as possible. (Theoretically you could use Telnet for IRC, but this would be extremely unclear and difficult.)

1.4. What's about moepII and IRClib? (Top)
Before I started developing moepII, I had begun writing a library for IRC in Java. I named this library IRClib. The IRClib is used by moepII and it's moepII's heart.
You could say: moepII is just a GUI with some extensions; but the GUI doesn't speak the language 'IRC'. Therefore it needs an interpreter that translates and analyzes the incoming and outgoing messages. This very important part is done by IRClib.
I release IRClib in an own package without the moepII code with the intention that other people use IRClib to write IRC-related programs much faster.
You can get an overview of IRClib by checking its javadoc.




2.1. On which operating systems can I run moepII? (Top)
Because moepII is programmed in Java it's independent from any operating systems. You can run it on Windows such as on Linux etc.

2.2. Which Java version do I need for moepII? (Top)
moepII requires the Java Runtime Environment 1.4 from Sun Microsystems. It's recommended to use the latest version of Java.
You can get it for your platform at http://java.sun.com.

2.3. Why does moepII not run on my WindowsXP? (Top)
Actually I don't know why. But it's for sure that the reason isn't Java or moepII. Probably you did not install the Java Runtime Environment properly.
You could compile the java-source- or -binary-code to machine-code. But normally people who have the knowledge to do this also can install Java properly ;-)

2.4. Is the sourcecode of moepII available? (Top)
Yes, both, moepII and IRClib, are licensed under the GNU General Public License. Therefore its Java-source-code is public.

2.5. How large is the sourcecode? (Top)
The IRClib consists of 9 files which are altogether 161 kilobytes large. It has 4682 lines; 646 are empty, 2905 are commentaries and only 1131 are real code. That means that an average line of IRClib has 17 chars.
moepII consists of 15 files or 209 kilobytes. moepII has 6462 lines; 889 are empty, 3601 1972 are commentaries and 3601 are real code. That means that an average line of moepII has 16 chars.
Was that the information you wanted? :-)

2.6. Which parts are based on jqIRC? (Top)
Only some parts of the GUI. Not really parts, rather ideas how to program something. When IRClib (which is the IRC-netcode-part of moepII) was stable so far, I saw jqIRC. Its layout pleased me, therefore I downloaded the code and pasted it in a new GUI class. Then I deleted almost everything. The only point which was really important for me was the idea to make inner-classes for the console-, channel- and query-windows (hadn't much programming-experience yet). I changed very much of them and added a better object-oriented structure with a base class.
I think I have changed so much that moepII's code has not very much similarity with the code of jqIRC.
You can get jqIRC at http://www.geocities.com/jchakma.

2.7. Who develops IRClib and moepII? (Top)
The project is a 1-man-project. My name is Christoph Schwering you can get more information about me on http://www.schwering.org.
I'm supported by Aldo (testing) and Carsten Wiesbaum (graphics) and Normton (he has rewritten the IRCUtil.parseColors method).

2.8. Why is moepII only in English available? (Top)
moepII's natural language is English because the world's and internet's language is English. When I decided to make moepII open and to register it at SourceForge.net, it was clear that the program had to be international.
By the way, it's not English, it's only English-like.

2.9. Do you plan to localize moepII (several languages)? (Top)
No, at the moment I don't plan that. But it's very possible that I will do that.

2.10. How do you pronounce moepII? (Top)
I usually pronounce it 'möp i i'. The 'ö' is pronounced like the 'ea' of the word 'search'. I speak the double 'i', which stands for the roman number 2, two times.




3.1. I have got the Java Runtime Environment, how can I start moepII? (Top)
You must start the executable moep.jar. On windows sometimes programs like WinRar or WinAce set themselves as default application for *.JAR-files. Change this into javaw.exe.
You also can start the moepII IRC client by executing following command:
javaw -cp moep.jar org.schwering.irc.moep.MoepIRC
or:
java -cp moep.jar org.schwering.irc.moep.MoepIRC


3.2. How to configure the program? (Top)
After the first start of the application, if there exists no moep.ini, moepII displays the setup-window before making anything else.
It's strongly recommended to set now the IRC server, ports you want to connect to and the nickname, realname and your eMail address which are essential to the registration of the connection with the IRC network. These first fields are essential for any IRC connection.
At the "General"-mask you can change other settings of the client like logging, highlighting, the path of the browser etc.
The content of the textarea you find behind the "Perform"-tab is executed on every connection to any IRC server. Here you should input JOIN-commands, for example.

3.3. Why is moepII so slow? (Top)
On my own computer moepII has a better performance than I thought it would have, but on another computer in my house the performance is quite shitty. Actually I don't yet know why there is such a difference. If your moepII has a bad performance, too, it might be because you have installed Java improperly. moepII *should* run on all systems with almost the same performance.

3.4. What are modules? (Top)
Modules are add-ons to the moepII client which be loaded by client. The modules must be compiled java-classes and should be very small programs. The modules have no access to the IRC; in opposite to the script-features of many other clients they are be small independent programs. An example for a module is the simple bell which is available for moepII.


3.5. How can I load modules? (Top)
You must add the compiled class(es) to the classpath of moepII: If your moepII-classes are packed in a moep.jar, you have to add the compiled class to the archieve. (This can be done with a normal compressionprogram.) If your module is in a package, you also must consider the package when you add the module: a module modules.new.NewModule has the package modules.new. Therefore the class NewModule must be packed into a folder modules/new/ and then added to the moepII-classpath.

Then you must add the module to the modules.conf in the directory of moepII (if the file does not exist yet, create it). Just write in it: module0=YourClass. If there are already some modules, you have to replace the module0 with moduleX while X is the number of the last module + 1. If your module has defined a package, you must write yourpackage.YourClass and not only YourClass, of course.

After you added the module to the classpath and the entry to the modules.conf, you can start the client. By clicking Modules in the menu, then chosing the module and clicking Start, you execute the module. Depending on the type of the module you also can/must/should stop it later. To do that, click Halt.

3.6. How can I write modules? (Top)
Modules must be written in Java. The main class of the module must extend org.schwering.irc.moep.Module. Then it doesn't need any constructor. Instead, it must define a init() method in which the action takes place -- we could say the init() replaces a constructor. This is very important, because the module should not affect the client's performance.
Also very important is: you might want to give the user the possibility to stop the module's actions. This makes not sense in every case: for example a module, which just sends the current date to a channel, doesn't need to be halted by the user, because its action is over after an extremely short time. But other modules, for example away-modules, which send a message to channels in long time intervals, should be haltable. To give the user the possibility to halt a module, you must declare a halt() method in the module's main class. This method should do nothing else than stopping the module's action. The halt() method is so important, because it is used by moepII to stop the module. So please remind that this method _must_ be defined if your module should be haltable!
You also might want to make a module start automatically. For example the DCCGet module should be started automatically when the client connects, because it always listens for incoming DCC commands. To make a module start automatically, just define a class-field with the name AUTOSTART with any value. The modules which are to be started automatically are started directly after the perform is executed. The client prints a string like # Automatically started Module: DCCGet to tell the user that the module is started.

3.7. Since which versions can I use modules? (Top)
You can use modules since version 0.40; but for later modules moepII 0.42 is required, because the implementation of modules got revised.




4.1. How can I execute a command? (Top)
You can input a message or command at the line at the bottom. Press enter to submit it.
Normally this line is send as a normal chat-message (PRIVMSG) to the channel you are on or person you have a conversation with. A slash (/) shows the client that the following is a command and it should not be send as a channel. This command must correspond some standards you will learn later. The client prints the executed command on the open textwindow so that you notice that the command was executed.

4.2. Can I hide the printing of an executed command? (Top)
Yes, you can do that by inserting a dot (.) behind the slash (/). This is useful if you want to send a password to a bot on an IRC network (also in the perform) or anything else to anybody which should not by seen by anybody other.


4.3. How do I send a message to a channel or to a person? (Top)
There are two commands to send a chat-message from a person to a group or person. The most used is the command PRIVMSG, the other the NOTICE.
The format of a PRIVMSG-message is (note the colon (:)):
/PRIVMSG <channel or nickname> :<message>
moepII also offers the shortcut MSG which is known to most IRC users from the IRC client mIRC. The syntax of the command isn't typical for IRC commands because it's just a shortcut and no real command of the IRC protocol:
/MSG <channel or nickname> <message>
The other way, NOTICE, isn't used as frequently as PRIVMSG. Its syntax is very similar, just another command:
/NOTICE <channel or nickname> <message>
moepII offers for NOTICE a shorthand, too:
/NOT <channel or nickname> <message>


4.4. Why is there no /ME-command as I know it from mIRC? (Top)
The /ME-command isn't defined in the IRC protocol (RFC1459) -- and that has a reason: It just makes no sense. So moepII isn't going to support it any time. The ACTIONs sent by other users with the /ME-command are just a /PRIVMSG which is lead by a special char and the word ACTION. At the end of such /PRIVMSGs there is a special char again. The /ME-command is displayed as a usual /PRIVMSG lead by the word ACTION in moepII.

4.5. Why is there no possibility to format a text with colors, bold, underline? (Top)
These are stupid inventions of mIRC which is nowhere defined as a standard. Unfortunately, many programmers like it to break standards to add special features to their programs. moepII will never support any of these features.

4.6. Why do I see colored, underlined and bold text plain? (Top)
Text which looks multicolored or is bold or underlined looks in moepII just plain. And that's intended!

4.7. Why does moepII not respond to VERSION-requests? (Top)
It makes no sense in my opinion and there are stupid guys who use this to flood you. If anybody wants to know your IRC client, tell em you're using moepII from http://moepii.sf.net.

4.8. Why does moepII not respond to PING-requests? (Top)
This could make a little sense, but it's used by many people to flood others. So such requests are received as they are sent -- as normal PRIVMSGs.

4.9. Why does moepII not respond to TIME-requests? (Top)
This also no sense, I think. In addition, it's also a way wo flood a user.

4.10. How can I ban someone? (Top)
You can open the ChanCenter and then use the Add button to add a banmask. You can also simply execute MODE <channel> +b <banmask>. You can get the banmask by whoising the user you want to ban.
Why there is no possibility to ban someone with a menu? Because I'm too lazy to write it. And how often do you ban someone? And which banmask do you want to ban? Where do you want to place Wildcards?

4.11. Can I send a file via DCC? (Top)
Yes! The modules DCCGet and DCCSend make the file transfer via DCC possible. They're available on the modules-page.




5.1. What are channel-modes? (Top)
Channel-modes can be used by operators to configure their channel. They can turn modes on and off. moepII provides the ChanCenter so that you can administer the modes of your channel easily. But remind that there are many more modes than those supported by the ChanCenter on most networks.

5.2. What does which channel-mode mean? (Top)
Please use information provided by your network's website or by IRCHelp.org.

5.3. How can I remove a key when it's shown by a star (*)? (Top)
This happens when you join a channel which has both, a channel-key (+k anyKey) and the mode secret (+s). For security purposes the channel-key is hidden behind a star (*). When you switch on the ChanCenter now, there the key-mode is activated but its value is just the *.
Remove it by unchecking the checkbox of the channelkey and replace the * by the channel-key which was set. Of course you know the key, because you recently joined.




6.1. What does the nicklist contain? (Top)
The nicklist contains all people who are in the channel.

6.2. What the @ at the beginning of the nicknames mean? (Top)
Nicknames marked with an @ are operators of the channel. Operators hold the mode +o in the channel.

6.3. What does the + at the beginning of the nicknames mean? (Top)
Nicknames marked with an + are voiced in the channel. Voiced users hold the mode +v in the channel.

6.4. What are users without anything at the beginning of their nickname? (Top)
People without any special character as @ or + mean that this is a normal user who holds no special modes in the channel.

6.5. How can I order the nicklist ascending? (Top)
You can order the nicklist by clicking Nicklist -> Order List ascending.




7.1. How can I switch the channels with the keyboard? (Top)
You can use Ctrl + Page Up and Ctrl + Page Down to switch the tabs.

7.2. Why doesn't the program beep when a highlight occurs? (Top)
moepII just executes your operating system's default beep sound, which is a motherboard-beep on most computers. If it doesn't make beep on your machine, you have disabled the beep sound. Enable it again and the client will make beep!

7.3. How to close a channel after a kick-ban? (Top)
If you got banned and kicked, you cannot close the channel by clicking the X or sending a PART-command. You must use the special Options -> Window -> Close or right-click on tabs -> Close Brutally. You should always use the part-function (the X button at the right top or right-click on tabs -> Part) instead of the close-brutally-function if you can.

7.4. What are netsplits? (Top)
A netsplit happens when a server loses the connection to its network. Netsplits are annoying but their reason is found deeply in the IRC protocol. This extract of the IRC RFC1459 by Darren Reed and Jarkko Oikarinen should visualize the structure of an IRC network:
1--\
    A        D---4
2--/ \      /
      B----C
     /      \
    3        E
Servers: A, B, C, D, E
Clients: 1, 2, 3, 4

So every server holds clients and is connected to one or two other servers -- but not more. Over these directly connected servers he is connected to all other servers in the network.

When the connection from server B to C is interrupted, there exist two subnets until the connection is reopened which is called netjoin. During that time, the communication from subnet 1 to subnet 2 is impossible. For the users of the servers of subnet 1, it looks as the clients held by subnet 2 would leave the channel. Also many other things don't work correctly during a netsplit.

Back to main page SourceForge.net Logo