]>
Commit | Line | Data |
---|---|---|
3bd189cb JR |
1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> |
2 | <HTML> | |
3 | <HEAD> | |
4 | <TITLE> [IRCServices] Services 5.0.0 released | |
5 | </TITLE> | |
6 | <LINK REL="Index" HREF="index.html" > | |
7 | <LINK REL="made" HREF="mailto:ircservices%40ircservices.za.net?Subject=%5BIRCServices%5D%20Services%205.0.0%20released&In-Reply-To="> | |
8 | <META NAME="robots" CONTENT="index,nofollow"> | |
9 | <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> | |
10 | <LINK REL="Previous" HREF="003149.html"> | |
11 | <LINK REL="Next" HREF="003151.html"> | |
12 | </HEAD> | |
13 | <BODY BGCOLOR="#ffffff"> | |
14 | <H1>[IRCServices] Services 5.0.0 released</H1> | |
15 | <B>Andrew Church</B> | |
16 | <A HREF="mailto:ircservices%40ircservices.za.net?Subject=%5BIRCServices%5D%20Services%205.0.0%20released&In-Reply-To=" | |
17 | TITLE="[IRCServices] Services 5.0.0 released">achurch at achurch.org | |
18 | </A><BR> | |
19 | <I>Sun Oct 6 13:49:00 PDT 2002</I> | |
20 | <P><UL> | |
21 | <LI>Previous message: <A HREF="003149.html">[IRCServices] Bots DB | |
22 | </A></li> | |
23 | <LI>Next message: <A HREF="003151.html">[IRCServices] Services 5.0.0 released | |
24 | </A></li> | |
25 | <LI> <B>Messages sorted by:</B> | |
26 | <a href="date.html#3150">[ date ]</a> | |
27 | <a href="thread.html#3150">[ thread ]</a> | |
28 | <a href="subject.html#3150">[ subject ]</a> | |
29 | <a href="author.html#3150">[ author ]</a> | |
30 | </LI> | |
31 | </UL> | |
32 | <HR> | |
33 | <!--beginarticle--> | |
34 | <PRE> With thanks for everyone's patience, I'm pleased to announce that | |
35 | IRC Services 5.0.0 has been released, and can be downloaded from: | |
36 | ||
37 | <A HREF="ftp://ftp.ircservices.za.net/pub/ircservices/">ftp://ftp.ircservices.za.net/pub/ircservices/</A> (South Africa) | |
38 | <A HREF="ftp://ftp.esper.net/ircservices/">ftp://ftp.esper.net/ircservices/</A> (USA, California) | |
39 | ||
40 | 27a762b806867b1279fe745d193bebf7 ircservices-5.0.0.tar.gz | |
41 | 3109af26d287ce825c80d5045dd46fdc ircservices-5.0.0-1.i386.rpm | |
42 | c1c77425af52894cb279c95ba0ac3a1f ircservices_5.0.0-1_i386.deb | |
43 | ||
44 | The other mirrors should have it shortly. | |
45 | ||
46 | As this is a new major release, the previous version (4.5) will no | |
47 | longer be supported; all users are encouraged to upgrade to version 5.0 at | |
48 | their convenience. Support for version 5.0 will now be handled on this | |
49 | list (<A HREF="http://www.ircservices.za.net/mailman/listinfo/ircservices">ircservices at ircservices.za.net</A>); the ircservices-coding list should | |
50 | be reserved for technical discussions. Also, please be aware that | |
51 | upgrading from previous versions will require some preparation--see the | |
52 | "What's New" information at the end of this message and the documentation | |
53 | included in the package (docs/index.html) for details. | |
54 | ||
55 | As most of you probably know by now, Services 5.0 features a rewrite | |
56 | of a significant amount of the code base (which is now over 60,000 lines | |
57 | long). I had three primary reasons for doing this: | |
58 | ||
59 | - First, to add module support. This is the main "new feature" in | |
60 | Services 5.0, and provides more flexibility in configuring Services; | |
61 | for example, networks can now choose to not run MemoServ, for example, | |
62 | or to require mail confirmation for nicknames, simply by selecting or | |
63 | not selecting the relevant modules for loading. (Mail is itself | |
64 | implemented as a set of modules.) Using modules also helps limit | |
65 | undesired interactions between code; much as with the concept of | |
66 | "encapsulation" in computer science, modules allow individual pieces | |
67 | of functionality to be separated and hidden from each other, forcing | |
68 | interactions between them to go through a defined interface, rather | |
69 | than taking shortcuts that lead to all sorts of bugs. The various | |
70 | modules are still intertwined to a degree (I had to cut some corners | |
71 | to have any hope of getting it finished at all in my limited free | |
72 | time--I could do better if anyone out there is willing to fund | |
73 | Services development ;) ), but their relationships are better defined | |
74 | than they used to be. | |
75 | ||
76 | - Second, to add alternate database support--both an improved binary | |
77 | format and external, i.e. SQL, databases--to Services. The previous | |
78 | code base was very dependent on the particular database format used, | |
79 | and the complexity of that format has caused several problems. | |
80 | Unfortunately, this is one of the things I didn't have time to | |
81 | implement for version 5.0, mostly because the code _is_ so dependent | |
82 | on the current database format, and there are a lot of assumptions | |
83 | made that I would have to go back and check or correct. I haven't | |
84 | forgotten this, however, and I'm hoping to get to work on it in a | |
85 | revision or two. | |
86 | ||
87 | - Third, and most importantly, to give the code a thorough cleaning. | |
88 | Some of you may be familiar with noted computer scientist Fred Brooks' | |
89 | book "The Mythical Man-Month", which discusses many of the mistaken | |
90 | assumptions and preconceived notions that cause software projects to | |
91 | go awry. The quote that applies in this case is "Plan to throw one | |
92 | away; you will, anyhow" (chapter 11). In other words, the first time | |
93 | you write a program you won't know exactly how it should be designed, | |
94 | and the end result, even if it works, will generally be a mess--so you | |
95 | should plan for it to be a mess, and set aside time to redo it from | |
96 | scratch. I considered version 5.0 to be my chance to do that, at | |
97 | least partially, with Services. | |
98 | ||
99 | While I've been adding features to Services for over six years (*), | |
100 | I've never taken the time to go back and clean it up, and it shows in | |
101 | both the lax code style in some places--some code actually dates back | |
102 | to 1994 or so, when I was a considerably less experienced programmer-- | |
103 | and in the rare crash bugs which plagued Services until very recent | |
104 | versions, most of which were due to forgetting to set a pointer | |
105 | correctly or similar careless errors. One of the first things I did | |
106 | after forking the code base for version 5.0 was to replace all linked | |
107 | list and most array references with macros to ensure that no mistakes | |
108 | were made handling them; with one special-case exception in the | |
109 | commands.c source file, there are now no references to the "next" or | |
110 | "prev" fields of linked list nodes outside of the header file | |
111 | list-array.h which defines those macros. Hash tables (for users and | |
112 | channels, among other things) are also handled using a header file, | |
113 | allowing much common code to be merged into a single location. These | |
114 | and other corrections should make Services 5.0 considerably more | |
115 | stable than previous versions. | |
116 | ||
117 | (*) For the curious, Services 1.0, which was not released publicly, | |
118 | was finished in late April 1996 and had 6,550 lines of code and no | |
119 | documentation. | |
120 | ||
121 | It's been over a year and a half since I started work on version 5.0, | |
122 | and while I'm not completely satisfied with the end result, I do like it a | |
123 | lot more than the previous versions. The module system is still very much | |
124 | a hack, not at all well designed, and it will probably end up being thrown | |
125 | away a la Brooks--but it works, and I like the flexibility it's added to | |
126 | Services. While I didn't have time to go back and redo everything from | |
127 | scratch, I was able to fix the most glaring problems, like the list bugs | |
128 | mentioned above, and I'm considerably more confident about the stability of | |
129 | this version than that of any previous release. I also added in several | |
130 | commonly requested new features, including nickname E-mail address | |
131 | authentication, as well as a couple of pet ideas of mine (such as the | |
132 | HTTP server), and I hope people will find them useful. | |
133 | ||
134 | By the way, Services finally has a real manual, as opposed to the | |
135 | short README in previous versions. The manual, written in HTML and found | |
136 | in the "docs" directory of the distribution (as well as on the Services | |
137 | home page: <A HREF="http://www.ircservices.za.net/docs/">http://www.ircservices.za.net/docs/</A>), contains over half a | |
138 | megabyte of text which thoroughly documents all of Services' features, and | |
139 | includes everything from an overview of each pseudoclient's functions to | |
140 | command and configuration file references and details on the internals of | |
141 | the new module system. I am also planning to write a design document for | |
142 | Services to help those who want to modify Services themselves, but as that | |
143 | will take a significant amount of time, I decided to go ahead and release | |
144 | version 5.0 without it. I will get it written eventually, though. | |
145 | ||
146 | I'd like to take this time to thank the many people without whom | |
147 | Services would not have grown this far: | |
148 | ||
149 | First and foremost, Andrew Kempe, who runs the web site and mailing | |
150 | lists, and who kept Services going in 1999-2000 (versions 4.3 and 4.4) when | |
151 | I didn't have enough time to work on it myself. Services probably owes its | |
152 | continued existence to Andrew; if he hadn't picked it up, Services might | |
153 | have become just one more abandoned open-source project. | |
154 | ||
155 | The language file translators: Martin Pels (Dutch), Elijah M (French), | |
156 | Jacek Margos and Holger Baust (German), Janos Kapitany and Krisztian Romek | |
157 | (Hungarian), Ely Linares (Spanish), and Yusuf Iskenderoglu (Turkish). The | |
158 | Services language file, which contains all of the messages used by | |
159 | Services, is nearly 5,000 lines long. That by itself is a whole lot of | |
160 | work to translate, but on top of that, the messages include many terms and | |
161 | phrases which don't translate well into other languages. Having done the | |
162 | Japanese translation myself (twice, because the first time I did it I | |
163 | didn't know the language very well), I know what these folks have gone | |
164 | through, and I'm grateful for the time they've devoted to Services. | |
165 | ||
166 | The mirror site operators: Ian Justman (ftp.esper.net), Michael Raff | |
167 | (ftp.electrocity.com), Michael Haardt (ftp.freenet.de), Sotiris Tsimbonis | |
168 | (www.irc.gr), and Andre Arruda (ftp.ircd.com.br). Services may not be a | |
169 | large program, but it has a fairly large user base spread around the world, | |
170 | and a single distribution site just isn't enough. Thanks for taking the | |
171 | time to set up mirrors. | |
172 | ||
173 | Contributors to Services development. As can be seen in the Changes | |
174 | files, many, many people have helped in the development of Services, | |
175 | whether by actually sending code or by just suggesting ideas. There are | |
176 | far too many to list here, but I appreciate each of your contributions; | |
177 | without them, I doubt Services would have progressed even half as far as | |
178 | it has. | |
179 | ||
180 | Developers of Services derivatives. I don't know how many of them | |
181 | read this list, but I'd like to say that I'm flattered that people would | |
182 | care enough about improving my software to start their own versions of it. | |
183 | This is, in my mind, one of the best things about open-source software; | |
184 | people can take the source code and change it as they think best, and | |
185 | eventually the best parts of each will spread to the others. Even Services | |
186 | itself owes several bugfixes and improvements to such derivative programs. | |
187 | I'd especially like to mention Epona; while I'm not particularly fond of | |
188 | the sarcastic comments in the Changes file, I do appreciate the help | |
189 | finding and fixing bugs, and the idea for the new nickname linking system | |
190 | in version 5.0. | |
191 | ||
192 | The anonymous cracker who broke into airship.esper.net five or six | |
193 | years ago (I don't even remember exactly when anymore) and stole the | |
194 | Services source code, which at the time was not publicly available. I was | |
195 | furious at first, but then I figured that if someone wanted the source code | |
196 | so badly they'd break into a machine to get it, I might as well release it | |
197 | myself; no point in trying to cram the genie back into the bottle. I still | |
198 | don't condone cracking, but as a result of this particular incident, | |
199 | Services has grown to proportions I never dreamed of when I started | |
200 | developing it. Thanks to you, Services (along with its derivatives) now | |
201 | 0WNZ 7H3 W0R1D!!! H0H0H0 ;) | |
202 | ||
203 | And finally, everyone who uses Services. I know it sounds trite, but | |
204 | the simple, honest truth is that you all make it worth the effort. I can't | |
205 | even begin to count the number of evenings and weekends I've devoted to | |
206 | Services even since graduating from university and starting a full-time | |
207 | job, or the number of times I've had people tell me I need to get out more. | |
208 | (Although I do plan to get out more in the coming weeks!) But if it wasn't | |
209 | for the fact that so many people use Services, I know that I wouldn't have | |
210 | spent nearly so much time on it--perhaps none at all. I know I haven't | |
211 | been able to please everyone; to be frank, I know I can't, so I don't try. | |
212 | But I do listen to all of your comments, both praising and scathing, and | |
213 | I'm truly honored that so many people would find software of mine useful. | |
214 | Thank you all. | |
215 | ||
216 | --Andrew Church | |
217 | <A HREF="http://www.ircservices.za.net/mailman/listinfo/ircservices">achurch at achurch.org</A> | |
218 | <A HREF="http://achurch.org/">http://achurch.org/</A> | |
219 | ||
220 | --------------------------------------------------------------------------- | |
221 | ||
222 | What's New | |
223 | ============================================= | |
224 | Summaries of changes in new Services versions | |
225 | ||
226 | Note: This is intended to highlight only the major changes between | |
227 | versions. For a complete list of changes, see the "Changes" file. | |
228 | ||
229 | ------------ | |
230 | Version 5.0: | |
231 | ------------ | |
232 | The single biggest addition to this version of Services is module support. | |
233 | This allows the various functions of Services to be added to and modified | |
234 | without having to touch the main source code itself. Modules also provide | |
235 | much more flexibility in configuring Services; IRC server support and | |
236 | database file format can be selected by simply loading the appropriate | |
237 | module, and you can even choose which of the pseudoclients (NickServ, | |
238 | ChanServ, etc.) you want available. See the example configuration files | |
239 | in the "data" subdirectory for more information. | |
240 | ||
241 | Services is now capable of sending E-mail. Currently, this functionality | |
242 | is used by: | |
243 | + The new "authorization" feature of NickServ (in the "nickserv/mail-auth" | |
244 | module). This sends a message to a user upon nick registration or | |
245 | E-mail address change, and requires the user to "authorize" their | |
246 | nickname with a random numeric code included in the message before it | |
247 | is recognized as a valid registered nick by Services/ | |
248 | + The new SENDPASS command for NickServ and ChanServ (in the | |
249 | "nickserv/sendpass" and "chanserv/sendpass" modules, respectively). | |
250 | which allows a user to send themselves their nick or channel password. | |
251 | + The new memo forwarding function of Services, which allows users to | |
252 | have their memos automatically forwarded to their E-mail address. | |
253 | ||
254 | Services also sports a built-in HTTP server (module "httpd/main"), which | |
255 | (with the help of additional modules in the "httpd" directory) can be used | |
256 | for queries about nicknames, channels, and network status. See the | |
257 | documentation (section 3-6) for details on its abilities, and please submit | |
258 | a feature request if you have any additional ideas for what functionality | |
259 | the server should provide. | |
260 | ||
261 | Nickname links have been redesigned for simplicity and robustness. In the | |
262 | new linking system, nicks are organized into single-level "groups" which | |
263 | share settings the way linked nicks did in previous versions, rather than | |
264 | multi-level "trees" as version 4 used. The LINK command has changed as | |
265 | well: instead of creating a link from the current (unlinked but registered) | |
266 | nick to a registered master nick, the link is made from the current | |
267 | registered nick to a new (unregistered) nick, to simplify registration of | |
268 | multiple links at once and to offer slightly better protection against | |
269 | "rogue links" created by guessing nick passwords (though as always, the | |
270 | best defense is to use good passwords). The old behavior of the LINK | |
271 | command is still available through the "nickserv/oldlink" module, although | |
272 | this module is deprecated and will be removed in a future version. | |
273 | ||
274 | Finally, the documentation for Services (what used to be in the README and | |
275 | FAQ files) has been greatly expanded and rewritten in HTML, and now includes | |
276 | references for all Services pseudoclient commands and configuration options. | |
277 | The manual also contains important information for users upgrading from | |
278 | version 4.x or earlier; if you are already using Services and plan to | |
279 | upgrade to version 5.0, please read this information before upgrading. | |
280 | ||
281 | Other changes: | |
282 | + Nicknames now have an "Information" line, similar to a channel's | |
283 | description, which can be set freely for each group of nicks. | |
284 | + The number of nicknames that can be registered per E-mail address can | |
285 | now be limited (NSRegMaxEmail configuration directive). | |
286 | + The default options for newly registered channels can now be set in the | |
287 | configuration file. | |
288 | + Identifies for nicknames are now recorded, removing the necessity to | |
289 | re-identify after every nick change. | |
290 | + The Services stamp of the last user to identify for a nick is now | |
291 | recorded on disk, removing the necessity to re-identify when | |
292 | Services is restarted. | |
293 | + A time zone can be set for each registered nick, to allow users to get | |
294 | information from Services in their own time zones. | |
295 | + Nicknames can be listed by E-mail address with the new LISTEMAIL command. | |
296 | + Users can set channels to automatically join whenever they identify for | |
297 | their nickname (nickserv/autojoin module) on IRC servers supporting | |
298 | the SVSJOIN command (such as Unreal or trircd). | |
299 | + The NickServ and ChanServ REGISTER and GETPASS commands can now be | |
300 | (individually) disabled via the configuration file. | |
301 | + Users with auto-op access for a channel will now be opped when they | |
302 | identify for their nickname even if they are already in the channel. | |
303 | + Channel access levels are now limited to -999..999; default levels have | |
304 | been rescaled to make better use of the available range (in | |
305 | particular, levels -25..25 have been multiplied by 10). | |
306 | + The ChanServ OP, VOICE, etc. commands now default to the person sending | |
307 | the command if a target nick is not specified (e.g. "OP #channel"). | |
308 | + ChanServ now has a KICK command. | |
309 | + Channel information can now be hidden with the new ChanServ SET HIDE | |
310 | command, similar to the NickServ command of the same name. | |
311 | + The ChanServ STATUS command is now available to normal (non-admin) users | |
312 | with sufficient privileges on the target channel. | |
313 | + Users can prevent certain other users from sending memos to them | |
314 | (memoserv/ignore module). | |
315 | + Autokill exclusions (exceptions to autokill masks) are now supported | |
316 | through the EXCLUDE command (operserv/akill module). | |
317 | + S-lines (SGLINE/SQLINE/SZLINE) are now supported (operserv/sline | |
318 | module), and can even be used (except SZLINE) on servers which do | |
319 | not support S-lines natively. | |
320 | + Services now records the last time an autokick or autokill was | |
321 | triggered, as well as the set time for autokicks. | |
322 | + The maximum expiry time for autokills set by Services operators (as | |
323 | opposed to Services admins) can now be limited. | |
324 | + OperServ now has a SERVERMAP command to show the IRC server tree. | |
325 | + Services is now slightly more robust against denial-of-service attacks | |
326 | which use repeated HELP messages to overload network buffers; if | |
327 | the network buffer size exceeds the threshold defined by the | |
328 | NetBufferLimit configuration directive, Services will ignore | |
329 | commands sent to it until the buffer size decreases. The OperServ | |
330 | STATS command has a new option, NETWORK, which can be used to show | |
331 | the current network buffer status. | |
332 | + Support for the Chunky Monkey and trircd IRC servers is now available. | |
333 | + Services can now synchronize the clocks of all servers on the network | |
334 | for IRC server types which support this feature (Unreal). | |
335 | + Configuration files can now be re-read (rehashed) while Services is | |
336 | running, using either the new OperServ REHASH command or kill -HUP. | |
337 | + The log file can now be rotated automatically based on the date. | |
338 | + Databases can now be imported (merged) and exported in XML format. | |
339 | + A sample crontab script is now included in the distribution. | |
340 | * The configuration file has been changed to accommodate modules; | |
341 | ircservices.conf (formerly services.conf) now contains only options | |
342 | related to core Services functionality, while module-related | |
343 | options (including NickServ, ChanServ, etc. settings) are in a new | |
344 | file called "modules.conf". Many options have been added, changed, | |
345 | or removed; see the example configuration files for details. | |
346 | * The network I/O subsystem has been completely redesigned for robustness | |
347 | and ease of use; multiple sockets (including listener sockets) can | |
348 | be used simultaneously via read/write callbacks, and sockets now | |
349 | have variable buffer sizes, allowing more efficient use of memory. | |
350 | * Database handling has been improved to avoid database corruption on | |
351 | power outage or process termination/crash. | |
352 | * The "do not abuse NickServ" warning in the main NickServ help message | |
353 | is now optional, to allow networks more freedom in writing their | |
354 | own policies. | |
355 | * Passwords, URLs, and E-mail addresses are now shared by each group of | |
356 | linked nicks. | |
357 | * NickServ DROP now requires a password to avoid accidental use, and | |
358 | drops all linked nicks in a group at once. The command for | |
359 | Services administrators to drop a nick is now DROPNICK. | |
360 | * The channel "#", which has been known to cause problems with both IRC | |
361 | servers and Services-like programs, is now explicitly not | |
362 | supported; Services will refuse to register, forbid, or import it. | |
363 | * Users must now identify for their nickname before registering a channel. | |
364 | * Channel autokicks specified by nickname now work for that nickname | |
365 | only, not for any nicks linked to it. | |
366 | * The CSRestrictDelay option now works correctly and is enabled by default. | |
367 | * Newly-registered nicks will now always use the default language set in | |
368 | config.h, even if that language is changed after registration. | |
369 | * Command-line options that take values now use an "=" instead of a space | |
370 | between the option name and the value. | |
371 | * The database conversion utility (convert-db) now outputs an XML | |
372 | database file, which can be used with the XML import feature, | |
373 | rather than writing databases directly. | |
374 | * The configuration script "configure" now asks fewer questions, and can | |
375 | be completely automated if the "-prefix" option is used. | |
376 | * "configure" now understands GNU-style options, e.g.: --prefix=/usr | |
377 | - The AUTODEOP and NOJOIN channel levels have been removed in favor of | |
378 | the SECUREOPS and RESTRICTED channel options. | |
379 | - The deprecated CheckClones functionality has been removed in favor of | |
380 | session limiting. | |
381 | - The IrcIIHelp pseudoclient (online help for the ircII client) has been | |
382 | removed. | |
383 | - The "listnicks" and "listchans" programs have been removed in favor of | |
384 | the built-in HTTP server. | |
385 | ||
386 | </PRE> | |
387 | ||
388 | <!--endarticle--> | |
389 | <HR> | |
390 | <P><UL> | |
391 | <!--threads--> | |
392 | <LI>Previous message: <A HREF="003149.html">[IRCServices] Bots DB | |
393 | </A></li> | |
394 | <LI>Next message: <A HREF="003151.html">[IRCServices] Services 5.0.0 released | |
395 | </A></li> | |
396 | <LI> <B>Messages sorted by:</B> | |
397 | <a href="date.html#3150">[ date ]</a> | |
398 | <a href="thread.html#3150">[ thread ]</a> | |
399 | <a href="subject.html#3150">[ subject ]</a> | |
400 | <a href="author.html#3150">[ author ]</a> | |
401 | </LI> | |
402 | </UL> | |
403 | ||
404 | </body></html> |