1 <!-- EDG Chapter Introduction -->
4 <chapter id="ChapterIntroduction">
5 <title>Introduction</title>
7 <section id="ChIntroIntro">
8 <title>Introduction</title>
10 This chapter will provide you with information about Ethereal
11 development in general.
15 <section id="ChIntroWhatIs">
16 <title>What is <application>Ethereal?</application></title>
18 Well, if you want to start Ethereal development, you might already
19 know what Ethereal is doing. If not, please have a look at the
20 <ulink url="&EtherealUsersGuidePage;">Ethereal User's Guide</ulink>,
21 which will provide a lot of general information about it.
26 <section id="ChIntroPlatforms">
27 <title>Platforms Ethereal runs on</title>
29 Ethereal currently runs on most UNIX platforms and various Windows
30 platforms. It requires GTK+, GLib, libpcap and some other libraries in
34 As Ethereal is developed in a platform independant way and uses libraries
35 which are available for a lot of different platforms (such as the GTK+
36 GUI library), it's available on a such a wide variety of platforms.
39 If a binary package is not available for your platform, you should
40 download the source and try to build it. Please report your experiences
41 to <ulink url="mailto:&EtherealDevMailList;">&EtherealDevMailList;</ulink>.
44 Binary packages are available for at least the following platforms:
47 <section><title>Unix</title>
50 <listitem><para>Apple Mac OS X</para></listitem>
51 <listitem><para>BeOS</para></listitem>
52 <listitem><para>FreeBSD</para></listitem>
53 <listitem><para>HP-UX</para></listitem>
54 <listitem><para>IBM AIX</para></listitem>
55 <listitem><para>NetBSD</para></listitem>
56 <listitem><para>OpenBSD</para></listitem>
57 <listitem><para>SCO UnixWare/OpenUnix</para></listitem>
58 <listitem><para>SGI Irix</para></listitem>
59 <listitem><para>Sun Solaris/Intel</para></listitem>
60 <listitem><para>Sun Solaris/Sparc</para></listitem>
61 <listitem><para>Tru64 UNIX (formerly Digital UNIX)</para></listitem>
66 <section><title>Linux</title>
69 <listitem><para>Debian GNU/Linux</para></listitem>
70 <listitem><para>Gentoo Linux</para></listitem>
71 <listitem><para>IBM S/390 Linux (Red Hat)</para></listitem>
72 <listitem><para>Mandrake Linux</para></listitem>
73 <listitem><para>PLD Linux</para></listitem>
74 <listitem><para>Red Hat Linux</para></listitem>
75 <listitem><para>Rock Linux</para></listitem>
76 <listitem><para>Slackware Linux</para></listitem>
77 <listitem><para>Suse Linux</para></listitem>
82 <section><title>Microsoft Windows</title>
84 Thanks to the Win32 API, development on all windows platforms will be
85 done in a very similar way. However some differences between the platforms
86 are existing (especially between the NT and 95 based platforms), the
87 differences will be notified where appropriate. All Windows platforms will
88 be referred as Win32, Win or Windows might be used with the same meaning.
89 As Windows CE differs a lot compared to the other windows platforms
90 mentioned, Ethereal will not run on Windows CE and there are no plans to
93 <listitem><para>Windows Me / 98 / 95</para></listitem>
94 <listitem><para>Windows Server 2003 / XP / 2000 / NT 4.0</para></listitem>
101 <section id="ChIntroDevelopment">
103 Development and maintenance of <application>Ethereal</application>
106 Ethereal was initially developed by Gerald Combs. Ongoing development
107 and maintenance of Ethereal is handled by the Ethereal team, a loose
108 group of individuals who fix bugs and provide new functionality.
111 There have also been a large number of people who have contributed
112 protocol dissectors to Ethereal, and it is expected that this will
113 continue. You can find a list of the people who have contributed
114 code to Ethereal by checking the about dialog box of Ethereal, or have
115 a look at the <ulink url="&EtherealAuthorsPage;"/> page on the Ethereal
120 communication between the developers is usually done trough the developer
121 mailing list, which can be joined by anyone interested in the development
122 process. At the time writing of this document, more than 500 persons are
123 subscribed to this mailing list!
126 It is strongly recommended to join the developer mailing list, if you
127 are going to do any Ethereal development. See
128 <xref linkend="ChIntroMailingLists"/> about the different Ethereal
129 mailing lists available.
132 <section><title>Programming language(s) used</title>
134 Almost any part of Ethereal is implemented in plain ANSI C.
137 The typical task for a new Ethereal developer is to extend an existing,
138 or write a new dissector for a specific network protocol. As (almost) any
139 dissector is written in plain old ANSI C, a good knowledge about ANSI C
140 will be sufficient for Ethereal development in almost any case.
143 So unless you are going to change the development process of Ethereal
144 itself, you won't come in touch with any other programming language than
145 ANSI C (such as perl or python, which are used only in the Ethereal build
149 Beside the usual tools for developing a program in C (compiler, make, ...),
150 the build process uses some additional helper tools (Perl, Python, Sed,
151 ...), which are needed for the build process and in the case Ethereal
152 should be installed from the released source packages. If Ethereal is
153 installed from a binary package, none of these helper tools are needed on
159 <section><title>Open Source Software</title>
161 Ethereal is an open source software project, and is released under
162 the <ulink url="&GPLWebsite;">GNU General Public Licence</ulink> (GPL).
163 You can freely use Ethereal on any number of computers you like, without
164 worrying about license keys or fees or such. In addition, all source
165 code is freely available under the GPL. Because of that, it is very easy
166 for people to add new protocols to Ethereal, either as plugins, or built
167 into the source, and they often do!
171 modify Ethereal to suit your own needs, and it would be appreciated
172 if you contribute your improvements back to the Ethereal team.
175 You gain three benefits by contributing your improvements back to the
180 Other people who find your contributions useful will appreciate
181 them, and you will know that you have helped people in the
182 same way that the developers of Ethereal have helped people.
187 The developers of Ethereal might improve your changes even more,
188 as there's always room for improvements. Or they may implement some
189 advanced things on top of your code, which can be useful for yourself
195 The maintainers and developers of Ethereal will maintain your
196 code as well, fixing it when API changes or other changes are
197 made, and generally keeping it in tune with what is happening
198 with Ethereal. So if Ethereal is updated (which is done often),
199 you can get a new Ethereal version from the website and your changes
200 will already be included without any effort for you.
206 The Ethereal source code and binary kits for some platforms are all
207 available on the download page of the Ethereal website:
208 <ulink url="&EtherealDownloadPage;">&EtherealDownloadPage;</ulink>.
215 <section id="ChIntroReleases">
216 <title>Releases and distributions</title>
218 The officially released files can be found at: <ulink
219 url="&EtherealDownloadPage;"/>. A new Ethereal version is released, after
220 significant changes compared to the last release were completed or a
221 serious security issue was encountered. The typical release schedule is
222 about every 4-8 weeks (although this may vary).
225 There are two kinds of distributions: binary and source, both have their
226 advantages and disadvantages.
229 <section id="ChIntroReleaseBinary">
230 <title>Binary distributions</title>
232 Binary distributions are usually easy to install (as simply starting
233 the appropriate file is usually the only thing to do). They are available
234 for the following systems:
238 Win32 (.exe file). The typical windows end user is used to get an setup
239 .exe file, which will install all the required things for him.
253 However, if you want to start developing with Ethereal, the binary
254 distributions won't be much helpful, as you need the source files, of
258 For details about how to build these binary distributions yourself,
259 e.g. if you need a distribution for a special audience, see
260 <xref linkend="ChSrcBinary"/>.
264 <section id="ChIntroReleaseSource">
265 <title>Source code distributions</title>
267 It's still common for unix developers to give the end user a source
268 tarball and let the user compile it on their target machine (configure,
269 make, make install). However, for different unix (linux) distributions
270 it's becoming more common to release binary packages (e.g. .deb or .rpm
274 You should use the released sources if you want to build Ethereal from
275 source on your platform for productive use. However, if you going to
276 develop changes to the Ethereal sources, it might be better to use the
277 latest SVN sources. For details about the different ways to get the
278 Ethereal source code see <xref linkend="ChSrcObtain"/>.
281 Before building Ethereal from a source distribution, make sure you have
282 all the tools and libraries required to build. The following chapters will
283 describe the required tools and libraries in detail.
288 <section id="ChIntroHelp">
289 <title>Reporting problems and getting help</title>
291 If you have problems, or need help with Ethereal, there are several
292 places that may be of interest to you (well, beside this guide of
296 <section id="ChIntroFAQ"><title>FAQ</title>
298 The "Frequently Asked Questions" will list often asked questions and
299 the corresponding answers.
300 <note><title>Read the FAQ!</title>
302 Before sending any mail to the mailing lists below, be sure to read the
303 FAQ, as it will often answer the question(s) you might have. This will save
304 yourself and others a lot of time (keep in mind that a lot of people are
305 subscribed to the mailing lists).
308 You will find the FAQ inside Ethereal by clicking the menu item
309 Help/Contents and selecting the FAQ page in the upcoming dialog.
312 An online version is available at the ethereal website:
313 <ulink url="&EtherealFAQPage;">&EtherealFAQPage;</ulink>. You might
314 prefer this online version, as it's typically more up to date and the HTML
315 format is easier to use.
319 <section id="ChIntroMailingLists"><title>Mailing Lists</title>
321 There are several mailing lists of specific Ethereal topics available:
323 <varlistentry><term><command>ethereal-announce</command></term>
326 This mailing list will inform you about new program
327 releases, which usually appear about every 4-8 weeks.
331 <varlistentry><term><command>ethereal-users</command></term>
334 This list is for users of Ethereal. People post
335 questions about building and using Ethereal, others (hopefully)
340 <varlistentry><term><command>ethereal-dev</command></term>
343 This list is for Ethereal developers. People post questions about
344 the development of Ethereal, others (hopefully) provide answers.
345 If you want to start developing a protocol dissector, join this list.
349 <varlistentry><term><command>ethereal-cvs</command></term>
352 This list is for Ethereal developers. Everytime a change to the SVN
353 repository is checked in, a mail to this mailing list is generated.
354 If you want to be notified about all the changes to the SVN
355 repository, join this list. Details about the SVN repository can be
356 found in <xref linkend="ChSrcSVNServer"/>.
361 You can subscribe to each of these lists from the Ethereal web site:
362 <ulink url="&EtherealWebSite;">&EtherealWebSite;</ulink>. Simply
363 select the <command>mailing lists</command> link on the left hand
364 side of the site. The lists are archived at the Ethereal web site
366 <tip><title>Tip!</title>
368 You can search in the list archives to see if someone asked the same
369 question some time before and maybe already got an answer. That way you
370 don't have to wait until someone answers your question.
376 <section id="ChIntroReportProblems"><title>Reporting Problems</title>
377 <note><title>Note!</title>
379 Before reporting any problems, please make sure you have installed the
380 latest version of Ethereal.
384 If you report problems, provide as much
385 information as possible. In general, just think about what
386 you would need to find that problem, if someone else sends you such a
387 problem report. Also keep in mind, that people uses a lot of different
388 platforms to compile/run Ethereal on.
391 When reporting problems with Ethereal, it is helpful if you supply the
392 following information:
396 The version number of Ethereal and the dependent libraries linked with
397 it, eg GTK+, etc. You can obtain this with the command
398 <command>ethereal -v</command>.
403 Information about the platform you run Ethereal on.
408 A detailed description of your problem.
413 If you get an error/warning message, copy the text of that message (and
414 also a few lines before and after it, if there are some), so others may
415 find the build step where things go wrong.
416 Please don't give something like: "I get a warning when comiling x"
417 as this won't give any direction to look at.
422 <note><title>Don't send large files!</title>
424 Do not send large files (>100KB) to the mailing lists, just place a note
425 that further data is available on request. Large files will only annoy a
426 lot of people on the list who are not interested in your specific problem.
427 If required, you will be asked for further data by the persons who really
431 <note><title>Don't send confidential information!</title>
433 If you send captured data to the mailing lists, be sure they don't contain
434 any sensitive or confidential information like passwords or such.
439 <section><title>Reporting Crashes on UNIX/Linux platforms</title>
441 When reporting crashes with Ethereal, it is helpful if you supply the
442 traceback information (besides the information mentioned in
443 <xref linkend="ChIntroReportProblems"/>).
446 You can obtain this traceback information with the following commands:
449 $ gdb `whereis ethereal | cut -f2 -d: | cut -d' ' -f2` core >& bt.txt
457 Type the characters in the first line verbatim! Those are
463 backtrace is a <command>gdb</command> command. You should
464 enter it verbatim after the first line shown above, but it will not be
466 (Control-D, that is, press the Control key and the D key
467 together) will cause <command>gdb</command> to exit. This will
468 leave you with a file called
469 <filename>bt.txt</filename> in the current directory.
470 Include the file with your bug report.
475 If you do not have <command>gdb</command> available, you
476 will have to check out your operating system's debugger.
481 You should mail the traceback to the
482 <ulink url="mailto:&EtherealDevMailList;">&EtherealDevMailList;</ulink>
487 <section><title>Reporting Crashes on Windows platforms</title>
489 The Windows distributions don't contain the symbol files (.pdb), because
490 they are very large. For this reason it's not possible to create
491 a meaningful backtrace file from it. You should report your crash just
492 like other problems, using the mechanism from
493 <xref linkend="ChIntroReportProblems"/>.
498 <section id="ChIntroOtherSources"><title>Other sources of developer information
501 If you don't find the information you need inside this book, there are
502 various other sources of information:
506 have a look at the Ethereal source code
511 there are various documentation files on different topics inside the
512 source code, see all the README.xxx files
517 tool documentation of the various tools used
518 (e.g. manpages of sed, gcc, ...)
523 the different mailing lists <xref linkend="ChIntroMailingLists"/>
536 <!-- End of EUG Chapter 1 -->