]> jfr.im git - irc.git/blame - software/RELEASES/ircservices/achurch.org/services/lists/ircservices/2002/003150.html
init
[irc.git] / software / RELEASES / ircservices / achurch.org / services / lists / ircservices / 2002 / 003150.html
CommitLineData
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
35IRC 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
4027a762b806867b1279fe745d193bebf7 ircservices-5.0.0.tar.gz
413109af26d287ce825c80d5045dd46fdc ircservices-5.0.0-1.i386.rpm
42c1c77425af52894cb279c95ba0ac3a1f ircservices_5.0.0-1_i386.deb
43
44The other mirrors should have it shortly.
45
46 As this is a new major release, the previous version (4.5) will no
47longer be supported; all users are encouraged to upgrade to version 5.0 at
48their convenience. Support for version 5.0 will now be handled on this
49list (<A HREF="http://www.ircservices.za.net/mailman/listinfo/ircservices">ircservices at ircservices.za.net</A>); the ircservices-coding list should
50be reserved for technical discussions. Also, please be aware that
51upgrading from previous versions will require some preparation--see the
52&quot;What's New&quot; information at the end of this message and the documentation
53included in the package (docs/index.html) for details.
54
55 As most of you probably know by now, Services 5.0 features a rewrite
56of a significant amount of the code base (which is now over 60,000 lines
57long). I had three primary reasons for doing this:
58
59 - First, to add module support. This is the main &quot;new feature&quot; 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 &quot;encapsulation&quot; 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 &quot;The Mythical Man-Month&quot;, 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 &quot;Plan to throw one
92 away; you will, anyhow&quot; (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 &quot;next&quot; or
110 &quot;prev&quot; 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,
122and while I'm not completely satisfied with the end result, I do like it a
123lot more than the previous versions. The module system is still very much
124a hack, not at all well designed, and it will probably end up being thrown
125away a la Brooks--but it works, and I like the flexibility it's added to
126Services. While I didn't have time to go back and redo everything from
127scratch, I was able to fix the most glaring problems, like the list bugs
128mentioned above, and I'm considerably more confident about the stability of
129this version than that of any previous release. I also added in several
130commonly requested new features, including nickname E-mail address
131authentication, as well as a couple of pet ideas of mine (such as the
132HTTP server), and I hope people will find them useful.
133
134 By the way, Services finally has a real manual, as opposed to the
135short README in previous versions. The manual, written in HTML and found
136in the &quot;docs&quot; directory of the distribution (as well as on the Services
137home page: <A HREF="http://www.ircservices.za.net/docs/">http://www.ircservices.za.net/docs/</A>), contains over half a
138megabyte of text which thoroughly documents all of Services' features, and
139includes everything from an overview of each pseudoclient's functions to
140command and configuration file references and details on the internals of
141the new module system. I am also planning to write a design document for
142Services to help those who want to modify Services themselves, but as that
143will take a significant amount of time, I decided to go ahead and release
144version 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
147Services would not have grown this far:
148
149 First and foremost, Andrew Kempe, who runs the web site and mailing
150lists, and who kept Services going in 1999-2000 (versions 4.3 and 4.4) when
151I didn't have enough time to work on it myself. Services probably owes its
152continued existence to Andrew; if he hadn't picked it up, Services might
153have become just one more abandoned open-source project.
154
155 The language file translators: Martin Pels (Dutch), Elijah M (French),
156Jacek Margos and Holger Baust (German), Janos Kapitany and Krisztian Romek
157(Hungarian), Ely Linares (Spanish), and Yusuf Iskenderoglu (Turkish). The
158Services language file, which contains all of the messages used by
159Services, is nearly 5,000 lines long. That by itself is a whole lot of
160work to translate, but on top of that, the messages include many terms and
161phrases which don't translate well into other languages. Having done the
162Japanese translation myself (twice, because the first time I did it I
163didn't know the language very well), I know what these folks have gone
164through, 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
169large program, but it has a fairly large user base spread around the world,
170and a single distribution site just isn't enough. Thanks for taking the
171time to set up mirrors.
172
173 Contributors to Services development. As can be seen in the Changes
174files, many, many people have helped in the development of Services,
175whether by actually sending code or by just suggesting ideas. There are
176far too many to list here, but I appreciate each of your contributions;
177without them, I doubt Services would have progressed even half as far as
178it has.
179
180 Developers of Services derivatives. I don't know how many of them
181read this list, but I'd like to say that I'm flattered that people would
182care enough about improving my software to start their own versions of it.
183This is, in my mind, one of the best things about open-source software;
184people can take the source code and change it as they think best, and
185eventually the best parts of each will spread to the others. Even Services
186itself owes several bugfixes and improvements to such derivative programs.
187I'd especially like to mention Epona; while I'm not particularly fond of
188the sarcastic comments in the Changes file, I do appreciate the help
189finding and fixing bugs, and the idea for the new nickname linking system
190in version 5.0.
191
192 The anonymous cracker who broke into airship.esper.net five or six
193years ago (I don't even remember exactly when anymore) and stole the
194Services source code, which at the time was not publicly available. I was
195furious at first, but then I figured that if someone wanted the source code
196so badly they'd break into a machine to get it, I might as well release it
197myself; no point in trying to cram the genie back into the bottle. I still
198don't condone cracking, but as a result of this particular incident,
199Services has grown to proportions I never dreamed of when I started
200developing it. Thanks to you, Services (along with its derivatives) now
2010WNZ 7H3 W0R1D!!! H0H0H0 ;)
202
203 And finally, everyone who uses Services. I know it sounds trite, but
204the simple, honest truth is that you all make it worth the effort. I can't
205even begin to count the number of evenings and weekends I've devoted to
206Services even since graduating from university and starting a full-time
207job, 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
209for the fact that so many people use Services, I know that I wouldn't have
210spent nearly so much time on it--perhaps none at all. I know I haven't
211been able to please everyone; to be frank, I know I can't, so I don't try.
212But I do listen to all of your comments, both praising and scathing, and
213I'm truly honored that so many people would find software of mine useful.
214Thank 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
226Note: This is intended to highlight only the major changes between
227 versions. For a complete list of changes, see the &quot;Changes&quot; file.
228
229------------
230Version 5.0:
231------------
232The single biggest addition to this version of Services is module support.
233This allows the various functions of Services to be added to and modified
234without having to touch the main source code itself. Modules also provide
235much more flexibility in configuring Services; IRC server support and
236database file format can be selected by simply loading the appropriate
237module, and you can even choose which of the pseudoclients (NickServ,
238ChanServ, etc.) you want available. See the example configuration files
239in the &quot;data&quot; subdirectory for more information.
240
241Services is now capable of sending E-mail. Currently, this functionality
242is used by:
243 + The new &quot;authorization&quot; feature of NickServ (in the &quot;nickserv/mail-auth&quot;
244 module). This sends a message to a user upon nick registration or
245 E-mail address change, and requires the user to &quot;authorize&quot; 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 &quot;nickserv/sendpass&quot; and &quot;chanserv/sendpass&quot; 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
254Services also sports a built-in HTTP server (module &quot;httpd/main&quot;), which
255(with the help of additional modules in the &quot;httpd&quot; directory) can be used
256for queries about nicknames, channels, and network status. See the
257documentation (section 3-6) for details on its abilities, and please submit
258a feature request if you have any additional ideas for what functionality
259the server should provide.
260
261Nickname links have been redesigned for simplicity and robustness. In the
262new linking system, nicks are organized into single-level &quot;groups&quot; which
263share settings the way linked nicks did in previous versions, rather than
264multi-level &quot;trees&quot; as version 4 used. The LINK command has changed as
265well: instead of creating a link from the current (unlinked but registered)
266nick to a registered master nick, the link is made from the current
267registered nick to a new (unregistered) nick, to simplify registration of
268multiple links at once and to offer slightly better protection against
269&quot;rogue links&quot; created by guessing nick passwords (though as always, the
270best defense is to use good passwords). The old behavior of the LINK
271command is still available through the &quot;nickserv/oldlink&quot; module, although
272this module is deprecated and will be removed in a future version.
273
274Finally, the documentation for Services (what used to be in the README and
275FAQ files) has been greatly expanded and rewritten in HTML, and now includes
276references for all Services pseudoclient commands and configuration options.
277The manual also contains important information for users upgrading from
278version 4.x or earlier; if you are already using Services and plan to
279upgrade to version 5.0, please read this information before upgrading.
280
281Other changes:
282 + Nicknames now have an &quot;Information&quot; 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. &quot;OP #channel&quot;).
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 &quot;modules.conf&quot;. 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 &quot;do not abuse NickServ&quot; 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 &quot;#&quot;, 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 &quot;=&quot; 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 &quot;configure&quot; now asks fewer questions, and can
375 be completely automated if the &quot;-prefix&quot; option is used.
376 * &quot;configure&quot; 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 &quot;listnicks&quot; and &quot;listchans&quot; 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>