You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(106) |
Oct
(334) |
Nov
(246) |
Dec
(145) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(42) |
Feb
(53) |
Mar
(232) |
Apr
(109) |
May
(137) |
Jun
(63) |
Jul
(26) |
Aug
(263) |
Sep
(193) |
Oct
(507) |
Nov
(440) |
Dec
(241) |
2003 |
Jan
(567) |
Feb
(195) |
Mar
(504) |
Apr
(481) |
May
(524) |
Jun
(522) |
Jul
(594) |
Aug
(502) |
Sep
(643) |
Oct
(508) |
Nov
(430) |
Dec
(377) |
2004 |
Jan
(361) |
Feb
(251) |
Mar
(219) |
Apr
(499) |
May
(461) |
Jun
(419) |
Jul
(314) |
Aug
(519) |
Sep
(416) |
Oct
(247) |
Nov
(305) |
Dec
(382) |
2005 |
Jan
(267) |
Feb
(282) |
Mar
(327) |
Apr
(338) |
May
(189) |
Jun
(400) |
Jul
(462) |
Aug
(530) |
Sep
(316) |
Oct
(523) |
Nov
(481) |
Dec
(650) |
2006 |
Jan
(536) |
Feb
(361) |
Mar
(287) |
Apr
(146) |
May
(101) |
Jun
(169) |
Jul
(221) |
Aug
(498) |
Sep
(300) |
Oct
(236) |
Nov
(209) |
Dec
(205) |
2007 |
Jan
(30) |
Feb
(23) |
Mar
(26) |
Apr
(15) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <the...@us...> - 2006-05-08 17:09:46
|
Revision: 16151 Author: thekingant Date: 2006-05-07 19:09:44 -0700 (Sun, 07 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16151&view=rev Log Message: ----------- It's my hope that this will eliminate the problems auto-fetching AIM away messages (showing "(retrieving)" permanently). Although I don't entirely understand why it had problems before. Unless we just never got a response from a get info request. Which is possible, I guess. Anyhoo, this is just a tiny bit less graceful. Modified Paths: -------------- trunk/src/protocols/oscar/family_locate.c Modified: trunk/src/protocols/oscar/family_locate.c =================================================================== --- trunk/src/protocols/oscar/family_locate.c 2006-05-08 01:54:52 UTC (rev 16150) +++ trunk/src/protocols/oscar/family_locate.c 2006-05-08 02:09:44 UTC (rev 16151) @@ -319,9 +319,6 @@ { struct userinfo_node *cur = od->locate.torequest; - if (cur == NULL) - return; - if (od->locate.waiting_for_response == TRUE) return; @@ -340,10 +337,16 @@ OscarData *od; od = data; + + if (od->locate.torequest == NULL) + { + od->getinfotimer = 0; + return FALSE; + } + aim_locate_dorequest(od); - od->getinfotimer = 0; - return FALSE; + return TRUE; } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-05-08 17:09:44
|
Revision: 16152 Author: thekingant Date: 2006-05-07 19:26:40 -0700 (Sun, 07 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16152&view=rev Log Message: ----------- When --enable-debug is used, set --enable-fatal-asserts as well Modified Paths: -------------- trunk/configure.ac Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-05-08 02:09:44 UTC (rev 16151) +++ trunk/configure.ac 2006-05-08 02:26:40 UTC (rev 16152) @@ -75,11 +75,11 @@ ]) dnl Check for inet_aton -AC_CHECK_FUNC(inet_aton, , [AC_CHECK_LIB(resolv, inet_aton, , +AC_CHECK_FUNC(inet_aton, , [AC_CHECK_LIB(resolv, inet_aton, , [AC_ERROR(inet_aton not found)])]) AC_CHECK_LIB(resolv, __res_query) AC_CHECK_LIB(nsl, gethostent) -AC_CHECK_FUNC(socket, , +AC_CHECK_FUNC(socket, , [AC_CHECK_LIB(socket, socket, , [AC_ERROR([socket not found])])]) dnl If all goes well, by this point the previous two checks will have dnl pulled in -lsocket and -lnsl if we need them. @@ -130,12 +130,12 @@ { char buf[6]; time_t t = time(NULL); - + if (strftime(buf, sizeof(buf), "%z", localtime(&t)) != 5) return 1; - + fprintf(stderr, "strftime(\"%%z\") yields: \"%s\"\n", buf); - + return !((buf[0] == '-' || buf[0] == '+') && (buf[1] >= '0' && buf[1] <= '9') && (buf[2] >= '0' && buf[2] <= '9') && @@ -508,6 +508,7 @@ if test "x$enable_debug" = "xyes" ; then AC_DEFINE(DEBUG, 1, [Define if debugging is enabled.]) + enable_fatal_asserts="yes" fi if test "x$enable_fatal_asserts" = "xyes" ; then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-05-08 17:09:17
|
Revision: 16156 Author: thekingant Date: 2006-05-07 21:02:50 -0700 (Sun, 07 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16156&view=rev Log Message: ----------- Clarify this a tiny bit Modified Paths: -------------- trunk/src/eventloop.h Modified: trunk/src/eventloop.h =================================================================== --- trunk/src/eventloop.h 2006-05-08 04:02:34 UTC (rev 16155) +++ trunk/src/eventloop.h 2006-05-08 04:02:50 UTC (rev 16156) @@ -107,7 +107,7 @@ * @param func The callback function for data. * @param user_data User-specified data. * - * @return The resulting handle. + * @return The resulting handle (will be greater than 0). * @see g_io_add_watch_full */ guint gaim_input_add(int fd, GaimInputCondition cond, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-05-08 17:09:04
|
Revision: 16158 Author: thekingant Date: 2006-05-07 21:45:41 -0700 (Sun, 07 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16158&view=rev Log Message: ----------- Add a "--with avahi" option to our RPM spec file. I think this should work, but I just got the following error and I want to go to sleep: /var/tmp/rpm-tmp.68399: line 39: syntax error: unexpected end of file error: Bad exit status from /var/tmp/rpm-tmp.68399 (%install) RPM build errors: /home/mark/rpmbuild/SPECS/gaim.spec:194: Got a %else with no %if Bad exit status from /var/tmp/rpm-tmp.68399 (%install) Modified Paths: -------------- trunk/gaim.spec.in Modified: trunk/gaim.spec.in =================================================================== --- trunk/gaim.spec.in 2006-05-08 04:32:21 UTC (rev 16157) +++ trunk/gaim.spec.in 2006-05-08 04:45:41 UTC (rev 16158) @@ -28,6 +28,7 @@ # Generic build requirements BuildRequires: libtool, pkgconfig, libao-devel, audiofile-devel, intltool, gettext +%{?_with_avahi:BuildRequires: avahi-devel} %{?_with_howl:BuildRequires: howl-devel} %{?_with_silc:BuildRequires: /usr/include/silc/silcclient.h} %{?_with_meanwhile:BuildRequires: meanwhile-devel} @@ -61,7 +62,7 @@ %endif %endif -%if 0%{?_with_howl:1} +%if 0%{?_with_howl:1} || 0%{?_with_avahi:1} %package bonjour Summary: Bonjour plugin for Gaim Group: Applications/Internet @@ -121,7 +122,7 @@ Gaim is NOT affiliated with or endorsed by America Online, Inc., Microsoft Corporation, Yahoo! Inc., or ICQ Inc. -%if 0%{?_with_howl:1} +%if 0%{?_with_howl:1} || 0%{?_with_avahi:1} %description bonjour Bonjour plugin for Gaim %endif @@ -200,7 +201,7 @@ find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';' find $RPM_BUILD_ROOT -type f -name '*.bs' -empty -exec rm -f {} ';' -%if 0%{!?_with_howl:1} +%if 0%{!?_with_howl:1} && 0%{!?_with_avahi:1} rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/libbonjour.so %endif @@ -264,7 +265,7 @@ %{_datadir}/dbus-1/services/gaim.service %endif -%if 0%{?_with_howl:1} +%if 0%{?_with_howl:1} || 0%{?_with_avahi:1} %files bonjour %defattr(-, root, root) @@ -322,6 +323,10 @@ %endif %changelog +* Mon May 8 2006 <the...@us...> +- Add --with avahi option to compile the gaim-bonjour package against + Avahi's Howl compatibility layer. + * Wed Mar 29 2006 <st...@no...> - Source RPM uses tar.bz2 now to save space - Update BuildRequires for new intltool dependencies This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-05-08 17:09:00
|
Revision: 16159 Author: thekingant Date: 2006-05-07 21:47:56 -0700 (Sun, 07 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16159&view=rev Log Message: ----------- I think this will fix that error I just mentioned Modified Paths: -------------- trunk/gaim.spec.in Modified: trunk/gaim.spec.in =================================================================== --- trunk/gaim.spec.in 2006-05-08 04:45:41 UTC (rev 16158) +++ trunk/gaim.spec.in 2006-05-08 04:47:56 UTC (rev 16159) @@ -185,7 +185,7 @@ %install rm -rf %{buildroot} -if 0%{?_with_perlmakehack} +%if 0%{?_with_perlmakehack} make prefix=%{buildroot}%{_prefix} bindir=%{buildroot}%{_bindir} \ datadir=%{buildroot}%{_datadir} includedir=%{buildroot}%{_includedir} \ libdir=%{buildroot}%{_libdir} mandir=%{buildroot}%{_mandir} \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-06 01:12:19
|
Revision: 16137 Author: rlaager Date: 2006-05-05 18:12:12 -0700 (Fri, 05 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16137&view=rev Log Message: ----------- SF Patch #1482820 from genpeng This is a fix for "--as-needed". Modified Paths: -------------- trunk/COPYRIGHT trunk/src/Makefile.am Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-05-05 19:35:15 UTC (rev 16136) +++ trunk/COPYRIGHT 2006-05-06 01:12:12 UTC (rev 16137) @@ -216,6 +216,7 @@ Ari Pollak Robey Pointer Nathan Poznick +Jory A. Pratt Brent Priddy Federicco Mena Quintero Yosef Radchenko Modified: trunk/src/Makefile.am =================================================================== --- trunk/src/Makefile.am 2006-05-05 19:35:15 UTC (rev 16136) +++ trunk/src/Makefile.am 2006-05-06 01:12:12 UTC (rev 16137) @@ -199,6 +199,8 @@ libgaim_client_la_SOURCES = gaim-client.c gaim-client.h +libgaim_client_la_LIBADD = $(DBUS_LIBS) + gaim-client-bindings.c: dbus-analyze-functions.py $(dbus_exported) cat $(dbus_build_exported) | $(PYTHON) $(srcdir)/dbus-analyze-functions.py --client > $@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-05 19:35:22
|
Revision: 16136 Author: rlaager Date: 2006-05-05 12:35:15 -0700 (Fri, 05 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16136&view=rev Log Message: ----------- SF Patch #1482398 from resiak "This patch makes the manpage at least agree with `gaim -h` and reality when it comes to command-line arguments. It still differs from reality in just about every other way." Does the -l option still work? I never use it. If it does, the information here and that from `gaim -h` is surely wrong. Modified Paths: -------------- trunk/doc/gaim.1.in Modified: trunk/doc/gaim.1.in =================================================================== --- trunk/doc/gaim.1.in 2006-05-04 17:30:40 UTC (rev 16135) +++ trunk/doc/gaim.1.in 2006-05-05 19:35:15 UTC (rev 16136) @@ -48,10 +48,15 @@ .B \-h, \-\-help Print this help and exit. .TP -.B \-n, \-\-loginwin -Don't automatically login when \fBgaim\fR starts. Show the \fBLogin\fR -window instead. +.B \-n, \-\-nologin +Don't automatically login when \fBgaim\fR starts. Sets all accounts to +Offline. .TP +.B \-l, \-\-login[=\fINAME\fR,\fINAME\fR,...] +Sign in the comma-separated list of accounts provided, in addition to the +accounts that would be logged in anyway. If you do not specify such a +comma-separated list, your first account will be signed in. +.TP .B \-v, \-\-version Display the version information window. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lsc...@us...> - 2006-05-04 17:31:18
|
Revision: 16135 Author: lschiere Date: 2006-05-04 10:30:40 -0700 (Thu, 04 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16135&view=rev Log Message: ----------- (13:26:29) resiak: LSchiere2: They can use the tool `gstreamer-properties` to set up their default gstreamer sink (13:29:37) resiak: That's installed by the gnome-media package, it appears --- I don't know how one would set things up without it. I'll have a poke around. Modified Paths: -------------- web/htdocs/faq2.txt Modified: web/htdocs/faq2.txt =================================================================== --- web/htdocs/faq2.txt 2006-05-04 16:18:50 UTC (rev 16134) +++ web/htdocs/faq2.txt 2006-05-04 17:30:40 UTC (rev 16135) @@ -381,7 +381,7 @@ "Automatic" option do? A: The "Automatic" option lets gstreamer pick how the sounds are played. -SOMEONE PLEASE PROVIDE INFORMATION FOR THIS FAQ QUESTION!! :-) +You can use the <code>gstreamer-properties</code> tool to control this. Q: Why does Gaim use the same <code>WM_CLASS</code> for every window? It makes it impossible to control window size and placement for the buddy list This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lsc...@us...> - 2006-05-04 16:19:29
|
Revision: 16134 Author: lschiere Date: 2006-05-04 09:18:50 -0700 (Thu, 04 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16134&view=rev Log Message: ----------- update the faq a little bit to reflect reality. Also, one public request for help where I simply do not know the answer. Modified Paths: -------------- web/htdocs/faq2.txt Modified: web/htdocs/faq2.txt =================================================================== --- web/htdocs/faq2.txt 2006-05-04 12:18:03 UTC (rev 16133) +++ web/htdocs/faq2.txt 2006-05-04 16:18:50 UTC (rev 16134) @@ -17,7 +17,7 @@ versions. <p> If you have Slackware < 9.1, you need to get non-slack packages for autoconf, - automake, gettext, and libtool. You also have to copy the contents of +automake and libtool. You also have to copy the contents of <code>/usr/local/share/aclocal</code> to <code>/usr/share/aclocal</code>. This is due to bugs in Slackware and the auto* packages. </p> @@ -197,17 +197,18 @@ <p> A second major point involves public resources - an SVN checkout is not a cheap operation. As many Sourceforge users are aware, at various -points in the recent past Sourceforge SVN has been less than pleasant +points in the recent past Sourceforge CVS has been less than pleasant to work with. This is, of course, because Sourceforge hosts dozens -and dozens of useful and active projects which use SVN as a primary +and dozens of useful and active projects which use[ed] CVS as a primary method of source code collaboration. Unfortunately, when too many -users are poking around in that SVN just for the sake of poking +users are poking around in that CVS just for the sake of poking around, it prevents other users who are trying to do work to improve -those very same projects from accomplishing their tasks. It is better -for the community if an enterprising individual wishing to fix a -particular bug she has seen can get to the code and create a patch, -even if this means that some users have to wait a few weeks for the -next release to see what new features it might hold. +those very same projects from accomplishing their tasks. Naturally, +this could easily become true of Sourceforge's SVN offering as well. +It is better for the community if an enterprising individual wishing +to fix a particular bug [s]he has seen can get to the code and create +a patch, even if this means that some users have to wait a few weeks +for the next release to see what new features it might hold. </p> <p> The third point is not a problem which has yet come up, but it is in @@ -366,44 +367,21 @@ Q: How do I get sound to work correctly? -A: Gaim uses libao to play sounds. Playing sounds +A: Gaim uses gstreamer to play sounds. Playing sounds directly through esound or arts is no longer supported. <p> - <q> - Libao is a cross-platform library that allows programs to output PCM - audio data to the native audio devices on a wide variety of platforms. It - currently supports OSS (Open Sound System), ESD (ESounD), ALSA (Advanced - Linux Sound Architecture), Sun audio system (used in Solaris, OpenBSD, - and NetBSD), aRts (Analog Realtime Synthesizer). - </q> + To compile Gaim with support for gstreamer you need libgstreamer0.10-dev + and its dependencies. If you do not wish to install these packages you + can also just change your sound playing method in preferences to + <code>Command</code> and use <code>esdplay %s</code> or + <code>artsplay %s</code>. </p> -<p> - To compile Gaim with support for libao you need libao-devel and - audiofile-devel. To use libao you need libao and audiofile. If you do - not wish to install these packages you can also just change your sound - playing method in preferences to <code>Command</code> and use - <code>esdplay %s</code> or <code>artsplay %s</code>. -</p> Q: How do I make Gaim use ALSA or OSS for playing sounds? What does the "Automatic" option do? -A: If you choose "Automatic", "ESD", or "Arts", Gaim uses libao to play -sounds. Choosing "ESD" or "Arts" forces libao to play sounds using that -method, while choosing "Automatic" lets it decide for itself. -<p> - If you choose "Automatic", you can create a file, either - <code>/etc/libao.conf</code> or <code>~/.libao</code>, and put <b>one</b> of - the following lines - in it: -</p> -<pre><code>default_driver=alsa -default_driver=oss</code></pre> -<p> - Other drivers, like alsa09, arts, esd, irix, macosx, nas, and sun might - also be supported, depending on your platform and how libao was compiled. - See also <code>man 5 libao.conf</code>. -</p> +A: The "Automatic" option lets gstreamer pick how the sounds are played. +SOMEONE PLEASE PROVIDE INFORMATION FOR THIS FAQ QUESTION!! :-) Q: Why does Gaim use the same <code>WM_CLASS</code> for every window? It makes it impossible to control window size and placement for the buddy list @@ -569,6 +547,13 @@ Gaim sorts all your saved statuses by the timestamp when they were last used. And then, for each time you've used a status, the timestamp is increased by one day. +<p> + If you are upgrading from 1.x or lower, gaim is unable to determine which + are the most popular states, as these older releases did not save that + information. As a result, the initial contents of the menu will be + somewhat random. It will settle over the first few uses of (distinct) + states into the behavior described above. +</p> !SECTION AIM/ICQ (OSCAR) Protocol This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-05-04 12:18:21
|
Revision: 16133 Author: thekingant Date: 2006-05-04 05:18:03 -0700 (Thu, 04 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16133&view=rev Log Message: ----------- Kevin, let me know if this does or doesn't help your problems with AIM/ICQ not realizing that it has been disconnected Modified Paths: -------------- trunk/src/protocols/oscar/flap_connection.c Modified: trunk/src/protocols/oscar/flap_connection.c =================================================================== --- trunk/src/protocols/oscar/flap_connection.c 2006-05-04 00:33:33 UTC (rev 16132) +++ trunk/src/protocols/oscar/flap_connection.c 2006-05-04 12:18:03 UTC (rev 16133) @@ -208,7 +208,13 @@ g_free(conn); account = gaim_connection_get_account(od->gc); - if ((od->oscar_connections == NULL) && (!account->disconnecting)) + + /* + * TODO: If we don't have a SNAC_FAMILY_LOCATE connection then + * we should try to request one instead of disconnecting. + */ + if (!account->disconnecting && ((od->oscar_connections == NULL) + || (!flap_connection_getbytype(od, SNAC_FAMILY_LOCATE)))) { /* No more FLAP connections! Sign off this GaimConnection! */ const gchar *tmp; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-05-04 00:33:40
|
Revision: 16132 Author: thekingant Date: 2006-05-03 17:33:33 -0700 (Wed, 03 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16132&view=rev Log Message: ----------- Make the ntlm code a little cleaner (to me, anyway). Add some helpful comments (to me, anyway). And hopefully fix a bug or two (hostname, domain, and username are all sent as UCS-2LE now). Modified Paths: -------------- trunk/src/ntlm.c Modified: trunk/src/ntlm.c =================================================================== --- trunk/src/ntlm.c 2006-05-04 00:12:33 UTC (rev 16131) +++ trunk/src/ntlm.c 2006-05-04 00:33:33 UTC (rev 16132) @@ -34,20 +34,16 @@ struct type1_message { guint8 protocol[8]; /* 'N', 'T', 'L', 'M', 'S', 'S', 'P', '\0' */ - guint8 type; /* 0x01 */ - guint8 zero1[3]; - short flags; /* 0xb203 */ - guint8 zero2[2]; + guint32 type; /* 0x00000001 */ + guint32 flags; /* 0x0000b203 */ short dom_len1; /* domain string length */ short dom_len2; /* domain string length */ - short dom_off; /* domain string offset */ - guint8 zero3[2]; + guint32 dom_off; /* domain string offset */ short host_len1; /* host string length */ short host_len2; /* host string length */ - short host_off; /* host string offset (always 0x20) */ - guint8 zero4[2]; + guint32 host_off; /* host string offset (always 0x00000020) */ #if 0 guint8 host[*]; /* host string (ASCII) */ @@ -57,54 +53,49 @@ struct type2_message { guint8 protocol[8]; /* 'N', 'T', 'L', 'M', 'S', 'S', 'P', '\0'*/ - guint8 type; /* 0x02 */ - guint8 zero1[7]; - short msg_len; /* 0x28 */ - guint8 zero2[2]; - guint32 flags; /* 0x8201 */ + guint32 type; /* 0x00000002 */ + short msg_len1; /* target name length */ + short msg_len2; /* target name length */ + guint32 msg_off; /* target name offset (always 0x00000048) */ + + guint32 flags; /* 0x00008201 */ + guint8 nonce[8]; /* nonce */ - guint8 zero[8]; + guint8 context[8]; }; struct type3_message { guint8 protocol[8]; /* 'N', 'T', 'L', 'M', 'S', 'S', 'P', '\0'*/ - guint8 type; /* 0x03 */ - guint8 zero1[3]; + guint32 type; /* 0x00000003 */ short lm_resp_len1; /* LanManager response length (always 0x18)*/ short lm_resp_len2; /* LanManager response length (always 0x18)*/ - short lm_resp_off; /* LanManager response offset */ - guint8 zero2[2]; + guint32 lm_resp_off; /* LanManager response offset */ short nt_resp_len1; /* NT response length (always 0x18) */ short nt_resp_len2; /* NT response length (always 0x18) */ - short nt_resp_off; /* NT response offset */ - guint8 zero3[2]; + guint32 nt_resp_off; /* NT response offset */ short dom_len1; /* domain string length */ short dom_len2; /* domain string length */ - short dom_off; /* domain string offset (always 0x40) */ - guint8 zero4[2]; + guint32 dom_off; /* domain string offset (always 0x00000040) */ short user_len1; /* username string length */ short user_len2; /* username string length */ - short user_off; /* username string offset */ - guint8 zero5[2]; + guint32 user_off; /* username string offset */ short host_len1; /* host string length */ short host_len2; /* host string length */ - short host_off; /* host string offset */ - guint8 zero6[2]; + guint32 host_off; /* host string offset */ short sess_len1; short sess_len2; - short sess_off; /* message length */ - guint8 zero7[2]; + guint32 sess_off; /* message length */ - guint32 flags; /* 0x8201 */ -/* guint32 flags2; unknown, used in windows messenger - guint32 flags3; */ + guint32 flags; /* 0x00008201 */ + /* guint32 flags2; */ /* unknown, used in windows messenger */ + /* guint32 flags3; */ #if 0 guint8 dom[*]; /* domain string (unicode UTF-16LE) */ @@ -119,9 +110,16 @@ gchar * gaim_ntlm_gen_type1(const gchar *hostname, const gchar *domain) { + int hostnamelen; + int domainlen; + unsigned char *msg; + struct type1_message *tmsg; gchar *tmp; - char *msg = g_malloc0(sizeof(struct type1_message) + strlen(hostname) + strlen(domain)); - struct type1_message *tmsg = (struct type1_message*)msg; + + hostnamelen = strlen(hostname); + domainlen = strlen(domain); + msg = g_malloc0(sizeof(struct type1_message) + hostnamelen + domainlen); + tmsg = (struct type1_message*)msg; tmsg->protocol[0] = 'N'; tmsg->protocol[1] = 'T'; tmsg->protocol[2] = 'L'; @@ -130,17 +128,18 @@ tmsg->protocol[5] = 'S'; tmsg->protocol[6] = 'P'; tmsg->protocol[7] = '\0'; - tmsg->type= 0x01; - tmsg->flags = 0xb202; - tmsg->dom_len1 = tmsg->dom_len2 = strlen(domain); - tmsg->dom_off = 32+strlen(hostname); - tmsg->host_len1 = tmsg->host_len2 = strlen(hostname); - tmsg->host_off= 32; - memcpy(msg+sizeof(struct type1_message),hostname,strlen(hostname)); - memcpy(msg+sizeof(struct type1_message)+strlen(hostname),domain,strlen(domain)); + tmsg->type = 0x00000001; + tmsg->flags = 0x0000b202; + tmsg->dom_len1 = tmsg->dom_len2 = domainlen; + tmsg->dom_off = sizeof(struct type1_message) + hostnamelen; + tmsg->host_len1 = tmsg->host_len2 = hostnamelen; + tmsg->host_off = sizeof(struct type1_message); + memcpy(msg + tmsg->host_off, hostname, hostnamelen); + memcpy(msg + tmsg->dom_off, domain, domainlen); - tmp = gaim_base64_encode((guchar*)msg, sizeof(struct type1_message) + strlen(hostname) + strlen(domain)); + tmp = gaim_base64_encode(msg, sizeof(struct type1_message) + hostnamelen + domainlen); g_free(msg); + return tmp; } @@ -148,11 +147,15 @@ gaim_ntlm_parse_type2(const gchar *type2, guint32 *flags) { gsize retlen; + struct type2_message *tmsg; static guint8 nonce[8]; - struct type2_message *tmsg = (struct type2_message*)gaim_base64_decode((char*)type2, &retlen); + + tmsg = (struct type2_message*)gaim_base64_decode(type2, &retlen); memcpy(nonce, tmsg->nonce, 8); - if(flags) *flags = tmsg->flags; + if (flags != NULL) + *flags = tmsg->flags; g_free(tmsg); + return nonce; } @@ -177,7 +180,7 @@ * helper function for gaim cipher.c */ static void -des_ecb_encrypt(const guint8 *plaintext, char *result, const guint8 *key) +des_ecb_encrypt(const guint8 *plaintext, guint8 *result, const guint8 *key) { GaimCipher *cipher; GaimCipherContext *context; @@ -186,7 +189,7 @@ cipher = gaim_ciphers_find_cipher("des"); context = gaim_cipher_context_new(cipher, NULL); gaim_cipher_context_set_key(context, key); - gaim_cipher_context_encrypt(context, (guchar*)plaintext, 8, (guchar*)result, &outlen); + gaim_cipher_context_encrypt(context, plaintext, 8, result, &outlen); gaim_cipher_context_destroy(context); } @@ -200,13 +203,13 @@ { guint8 key[8]; setup_des_key(keys, key); - des_ecb_encrypt(plaintext, (char*)results, key); + des_ecb_encrypt(plaintext, results, key); - setup_des_key(keys+7, key); - des_ecb_encrypt(plaintext, (char*)(results+8), key); + setup_des_key(keys + 7, key); + des_ecb_encrypt(plaintext, results + 8, key); - setup_des_key(keys+14, key); - des_ecb_encrypt(plaintext, (char*)(results+16), key); + setup_des_key(keys + 14, key); + des_ecb_encrypt(plaintext, results + 16, key); } static void @@ -225,25 +228,34 @@ gchar * gaim_ntlm_gen_type3(const gchar *username, const gchar *passw, const gchar *hostname, const gchar *domain, const guint8 *nonce, guint32 *flags) { - char lm_pw[14]; + char lm_pw[14]; unsigned char lm_hpw[21]; char sesskey[16]; guint8 key[8]; - int msglen = sizeof(struct type3_message)+ - strlen(domain) + strlen(username)+ - strlen(hostname) + 24 +24 + ((flags) ? 16 : 0); - struct type3_message *tmsg = g_malloc0(msglen); - int len = strlen(passw); + int domainlen; + int usernamelen; + int hostnamelen; + int msglen; + struct type3_message *tmsg; + int passwlen, lennt; unsigned char lm_resp[24], nt_resp[24]; unsigned char magic[] = { 0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 }; unsigned char nt_hpw[21]; - int lennt; - char nt_pw[128]; + char nt_pw[128]; GaimCipher *cipher; GaimCipherContext *context; - char *tmp = 0; - int idx = 0; + char *tmp; + int idx; + gchar *ucs2le; + domainlen = strlen(domain) * 2; + usernamelen = strlen(username) * 2; + hostnamelen = strlen(hostname) * 2; + msglen = sizeof(struct type3_message) + domainlen + + usernamelen + hostnamelen + 0x18 + 0x18 + ((flags) ? 0x10 : 0); + tmsg = g_malloc0(msglen); + passwlen = strlen(passw); + /* type3 message initialization */ tmsg->protocol[0] = 'N'; tmsg->protocol[1] = 'T'; @@ -252,79 +264,87 @@ tmsg->protocol[4] = 'S'; tmsg->protocol[5] = 'S'; tmsg->protocol[6] = 'P'; - tmsg->type = 0x03; + tmsg->type = 0x00000003; tmsg->lm_resp_len1 = tmsg->lm_resp_len2 = 0x18; - tmsg->lm_resp_off = sizeof(struct type3_message) + strlen(domain) + strlen(username) + strlen(hostname); + tmsg->lm_resp_off = sizeof(struct type3_message) + domainlen + usernamelen + hostnamelen; tmsg->nt_resp_len1 = tmsg->nt_resp_len2 = 0x18; - tmsg->nt_resp_off = sizeof(struct type3_message) + strlen(domain) + strlen(username) + strlen(hostname) + 0x18; + tmsg->nt_resp_off = sizeof(struct type3_message) + domainlen + usernamelen + hostnamelen + 0x18; - tmsg->dom_len1 = tmsg->dom_len2 = strlen(domain); - tmsg->dom_off = 0x40; + tmsg->dom_len1 = tmsg->dom_len2 = domainlen; + tmsg->dom_off = sizeof(struct type3_message); - tmsg->user_len1 = tmsg->user_len2 = strlen(username); - tmsg->user_off = sizeof(struct type3_message) + strlen(domain); + tmsg->user_len1 = tmsg->user_len2 = usernamelen; + tmsg->user_off = sizeof(struct type3_message) + domainlen; - tmsg->host_len1 = tmsg->host_len2 = strlen(hostname); - tmsg->host_off = sizeof(struct type3_message) + strlen(domain) + strlen(username); + tmsg->host_len1 = tmsg->host_len2 = hostnamelen; + tmsg->host_off = sizeof(struct type3_message) + domainlen + usernamelen; if(flags) { - tmsg->sess_off = sizeof(struct type3_message) + strlen(domain) + strlen(username) + strlen(hostname) + 0x18 + 0x18; - tmsg->sess_len1 = tmsg->sess_len2 = 0x10; + tmsg->sess_off = sizeof(struct type3_message) + domainlen + usernamelen + hostnamelen + 0x18 + 0x18; + tmsg->sess_len1 = tmsg->sess_len2 = 0x0010; } - tmsg->flags = 0x8200; + tmsg->flags = 0x00008200; - tmp = ((char*) tmsg) + sizeof(struct type3_message); - strcpy(tmp, domain); - tmp += strlen(domain); - strcpy(tmp, username); - tmp += strlen(username); - strcpy(tmp, hostname); - tmp += strlen(hostname); + tmp = (char *)tmsg + sizeof(struct type3_message); + ucs2le = g_convert(domain, -1, "UCS-2LE", "UTF-8", NULL, NULL, NULL); + memcpy(tmp, ucs2le, domainlen); + g_free(ucs2le); + tmp += domainlen; + + ucs2le = g_convert(username, -1, "UCS-2LE", "UTF-8", NULL, NULL, NULL); + memcpy(tmp, ucs2le, usernamelen); + g_free(ucs2le); + tmp += usernamelen; + + ucs2le = g_convert(hostname, -1, "UCS-2LE", "UTF-8", NULL, NULL, NULL); + memcpy(tmp, ucs2le, hostnamelen); + g_free(ucs2le); + tmp += hostnamelen; + /* LM */ - if (len > 14) len = 14; + if (passwlen > 14) + passwlen = 14; - for (idx=0; idx<len; idx++) + for (idx = 0; idx < passwlen; idx++) lm_pw[idx] = g_ascii_toupper(passw[idx]); - for (; idx<14; idx++) + for (; idx < 14; idx++) lm_pw[idx] = 0; setup_des_key((unsigned char*)lm_pw, key); - des_ecb_encrypt(magic, (char*)lm_hpw, key); + des_ecb_encrypt(magic, lm_hpw, key); - setup_des_key((unsigned char*)(lm_pw+7), key); - des_ecb_encrypt(magic, (char*)lm_hpw+8, key); + setup_des_key((unsigned char*)(lm_pw + 7), key); + des_ecb_encrypt(magic, lm_hpw + 8, key); - memset(lm_hpw+16, 0, 5); + memset(lm_hpw + 16, 0, 5); calc_resp(lm_hpw, nonce, lm_resp); + memcpy(tmp, lm_resp, 0x18); + tmp += 0x18; /* NTLM */ + /* Convert the password to UCS-2LE */ lennt = strlen(passw); - for (idx=0; idx<lennt; idx++) + for (idx = 0; idx < lennt; idx++) { - nt_pw[2*idx] = passw[idx]; - nt_pw[2*idx+1] = 0; + nt_pw[2 * idx] = passw[idx]; + nt_pw[2 * idx + 1] = 0; } cipher = gaim_ciphers_find_cipher("md4"); context = gaim_cipher_context_new(cipher, NULL); - gaim_cipher_context_append(context, (guchar*)nt_pw, 2*lennt); - gaim_cipher_context_digest(context, 21, (guchar*)nt_hpw, NULL); + gaim_cipher_context_append(context, (guint8 *)nt_pw, 2 * lennt); + gaim_cipher_context_digest(context, 21, nt_hpw, NULL); gaim_cipher_context_destroy(context); - memset(nt_hpw+16, 0, 5); - - + memset(nt_hpw + 16, 0, 5); calc_resp(nt_hpw, nonce, nt_resp); - memcpy(tmp, lm_resp, 0x18); - tmp += 0x18; memcpy(tmp, nt_resp, 0x18); tmp += 0x18; - /* LCS Stuff */ - if(flags) { + if (flags) { tmsg->flags = 0x409082d4; gensesskey(sesskey, NULL); memcpy(tmp, sesskey, 0x10); @@ -333,7 +353,8 @@ /*tmsg->flags2 = 0x0a280105; tmsg->flags3 = 0x0f000000;*/ - tmp = gaim_base64_encode((guchar*) tmsg, msglen); + tmp = gaim_base64_encode((guchar *)tmsg, msglen); g_free(tmsg); + return tmp; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-05-04 00:12:41
|
Revision: 16131 Author: thekingant Date: 2006-05-03 17:12:33 -0700 (Wed, 03 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16131&view=rev Log Message: ----------- Remove an unused call to time(NULL) Modified Paths: -------------- trunk/src/idle.c Modified: trunk/src/idle.c =================================================================== --- trunk/src/idle.c 2006-05-03 04:12:35 UTC (rev 16130) +++ trunk/src/idle.c 2006-05-04 00:12:33 UTC (rev 16131) @@ -146,7 +146,7 @@ gaim_debug_info("idle", "Setting %s unidle\n", gaim_account_get_username(account)); - gaim_presence_set_idle(presence, FALSE, time(NULL)); + gaim_presence_set_idle(presence, FALSE, 0); } /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-03 04:12:41
|
Revision: 16130 Author: rlaager Date: 2006-05-02 21:12:35 -0700 (Tue, 02 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16130&view=rev Log Message: ----------- SF Patch #1480718 Fixes SF Bug #1473246 Close the search window when a conversation is closed, to prevent crashes. Modified Paths: -------------- trunk/src/gtkconv.c Modified: trunk/src/gtkconv.c =================================================================== --- trunk/src/gtkconv.c 2006-05-03 03:04:26 UTC (rev 16129) +++ trunk/src/gtkconv.c 2006-05-03 04:12:35 UTC (rev 16130) @@ -4424,6 +4424,10 @@ gaim_request_close_with_handle(gtkconv); gaim_notify_close_with_handle(gtkconv); + /* Close the "Find" dialog if it's open */ + if (gtkconv->dialogs.search) + gtk_widget_destroy(gtkconv->dialogs.search); + gtk_widget_destroy(gtkconv->tab_cont); g_object_unref(gtkconv->tab_cont); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-03 03:04:34
|
Revision: 16129 Author: rlaager Date: 2006-05-02 20:04:26 -0700 (Tue, 02 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16129&view=rev Log Message: ----------- Proper capitalization on GStreamer Modified Paths: -------------- trunk/src/gtkdialogs.c Modified: trunk/src/gtkdialogs.c =================================================================== --- trunk/src/gtkdialogs.c 2006-05-02 22:34:09 UTC (rev 16128) +++ trunk/src/gtkdialogs.c 2006-05-03 03:04:26 UTC (rev 16129) @@ -457,9 +457,9 @@ #ifndef _WIN32 #ifdef USE_GSTREAMER - g_string_append(str, " <b>gstreamer:</b> Enabled<br/>"); + g_string_append(str, " <b>GStreamer:</b> Enabled<br/>"); #else - g_string_append(str, " <b>gstreamer:</b> Disabled<br/>"); + g_string_append(str, " <b>GStreamer:</b> Disabled<br/>"); #endif #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-05-02 22:34:14
|
Revision: 16128 Author: seanegan Date: 2006-05-02 15:34:09 -0700 (Tue, 02 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16128&view=rev Log Message: ----------- ChangeLog that. Modified Paths: -------------- trunk/ChangeLog Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-05-02 22:24:46 UTC (rev 16127) +++ trunk/ChangeLog 2006-05-02 22:34:09 UTC (rev 16128) @@ -56,7 +56,7 @@ Sounds: * Beautiful new default sounds (Brad Turcotte) - * Use libao for playing sounds via NAS instead of accessing NAS directly + * Use GStreamer for playing sounds, instead of libao * A volume control in the preferences (Casey Harkins) Log Viewer: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-05-02 22:24:54
|
Revision: 16127 Author: seanegan Date: 2006-05-02 15:24:46 -0700 (Tue, 02 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16127&view=rev Log Message: ----------- Use Gstreamer for IM sounds, kill ao/audiofile Modified Paths: -------------- trunk/configure.ac trunk/src/Makefile.am trunk/src/gtkdialogs.c trunk/src/gtkprefs.c trunk/src/gtksound.c Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-05-02 20:07:55 UTC (rev 16126) +++ trunk/configure.ac 2006-05-02 22:24:46 UTC (rev 16127) @@ -159,6 +159,17 @@ ] ) +dnl ####################################################################### +dnl # GStreamer +dnl ####################################################################### +enable_gst=yes +PKG_CHECK_MODULES(GSTREAMER, gstreamer-0.10, ,enable_gst=no) +AC_SUBST(GSTREAMER_CFLAGS) +AC_SUBST(GSTREAMER_LIBS) +AC_ARG_ENABLE(gstreamer,[ --disable-gstreamer compile with GStreamer audio support],enable_gst=no) +if test "x$enable_gst" = "xyes"; then + AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer for making sounds]) +fi dnl ####################################################################### dnl # Check for Meanwhile headers (for Sametime) @@ -468,7 +479,6 @@ AM_CONDITIONAL(DYNAMIC_YAHOO, test "x$dynamic_yahoo" = "xyes") AM_CONDITIONAL(DYNAMIC_ZEPHYR, test "x$dynamic_zephyr" = "xyes") -AC_ARG_ENABLE(audio, [ --disable-audio compile without libao/libaudiofile for sound playing],,enable_audio=yes) AC_ARG_ENABLE(mono, [ --enable-mono compile with Mono runtime support],,enable_mono=no) AC_ARG_ENABLE(plugins, [ --disable-plugins compile without plugin support],,enable_plugins=yes) AC_ARG_ENABLE(perl, [ --disable-perl compile without perl scripting],,enable_perl=yes) @@ -1530,23 +1540,6 @@ fi fi -if test "$enable_audio" = yes ; then - GAIM_PATH_AO(found_ao_lib=true) - - AM_PATH_AUDIOFILE([0.2.0], found_af_lib=true) - - if test "$found_ao_lib" = "true" -a "$found_af_lib" = "true"; then - SOUND_LIBS="$SOUND_LIBS $AO_LIBS $AUDIOFILE_LIBS" - AC_SUBST(SOUND_LIBS) - AC_DEFINE(USE_AO, 1, [Define if we're using libao and libaudiofile for sound playing]) - enable_audio=yes - else - enable_audio=no - fi -else - enable_audio=no -fi - if test "$ac_cv_cygwin" = yes ; then LDADD="$LDADD -static" AC_DEFINE(DEBUG, 1, [Define if debugging is enabled.]) @@ -1767,12 +1760,12 @@ echo UI Library.................... : GTK+ 2.x echo SSL Library/Libraries......... : $msg_ssl echo +echo Build with GStreamer support.. : $enable_gst echo Build with Plugin support..... : $enable_plugins echo Build with Mono support....... : $enable_mono echo Build with Perl support....... : $enable_perl echo Build with Tcl support........ : $enable_tcl echo Build with Tk support......... : $enable_tk -echo Build with Audio support...... : $enable_audio echo Build with GtkSpell support... : $enable_gtkspell echo Build with DBUS support....... : $enable_dbus if test x$enable_dbus = xyes ; then Modified: trunk/src/Makefile.am =================================================================== --- trunk/src/Makefile.am 2006-05-02 20:07:55 UTC (rev 16126) +++ trunk/src/Makefile.am 2006-05-02 22:24:46 UTC (rev 16127) @@ -336,7 +336,7 @@ @LIBOBJS@ \ $(GTK_LIBS) \ $(DBUS_LIBS) \ - $(SOUND_LIBS) \ + $(GSTREAMER_LIBS) \ $(STATIC_LINK_LIBS) \ $(XSS_LIBS) \ $(SM_LIBS) \ @@ -351,8 +351,7 @@ -DLOCALEDIR=\"$(datadir)/locale\" \ -DSYSCONFDIR=\"$(sysconfdir)\" \ -I$(top_srcdir)/plugins \ - $(AUDIOFILE_CFLAGS) \ - $(AO_CFLAGS) \ + $(GSTREAMER_CFLAGS) \ $(DEBUG_CFLAGS) \ $(GTK_CFLAGS) \ $(DBUS_CFLAGS) \ Modified: trunk/src/gtkdialogs.c =================================================================== --- trunk/src/gtkdialogs.c 2006-05-02 20:07:55 UTC (rev 16126) +++ trunk/src/gtkdialogs.c 2006-05-02 22:24:46 UTC (rev 16127) @@ -456,10 +456,10 @@ #endif #ifndef _WIN32 -#ifdef USE_AO - g_string_append(str, " <b>libao:</b> Enabled<br/>"); +#ifdef USE_GSTREAMER + g_string_append(str, " <b>gstreamer:</b> Enabled<br/>"); #else - g_string_append(str, " <b>libao:</b> Disabled<br/>"); + g_string_append(str, " <b>gstreamer:</b> Disabled<br/>"); #endif #endif Modified: trunk/src/gtkprefs.c =================================================================== --- trunk/src/gtkprefs.c 2006-05-02 20:07:55 UTC (rev 16126) +++ trunk/src/gtkprefs.c 2006-05-02 22:24:46 UTC (rev 16127) @@ -1354,7 +1354,7 @@ gtk_widget_set_sensitive(vbox, strcmp(method, "none")); } -#ifdef USE_AO +#ifdef USE_GSTREAMER static void sound_changed3_cb(const char *name, GaimPrefType type, gconstpointer value, gpointer data) @@ -1368,7 +1368,7 @@ !strcmp(method, "esd") || !strcmp(method, "nas")); } -#endif /* USE_AO */ +#endif /* USE_GSTREAMER */ #endif /* !_WIN32 */ @@ -1470,7 +1470,7 @@ G_CALLBACK(sound_chosen_cb), NULL, GINT_TO_POINTER(sound_row_sel)); } -#ifdef USE_AO +#ifdef USE_GSTREAMER static gchar* prefs_sound_volume_format(GtkScale *scale, gdouble val) { if(val < 15) { @@ -1553,7 +1553,7 @@ dd = gaim_gtk_prefs_dropdown(vbox, _("_Method:"), GAIM_PREF_STRING, "/gaim/gtk/sound/method", _("Console beep"), "beep", -#ifdef USE_AO +#ifdef USE_GSTREAMER _("Automatic"), "automatic", "Arts", "arts", "ESD", "esd", @@ -1600,7 +1600,7 @@ gaim_gtk_prefs_checkbox(_("_Sounds while away"), "/core/sound/while_away", vbox); -#ifdef USE_AO +#ifdef USE_GSTREAMER hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); Modified: trunk/src/gtksound.c =================================================================== --- trunk/src/gtksound.c 2006-05-02 20:07:55 UTC (rev 16126) +++ trunk/src/gtksound.c 2006-05-02 22:24:46 UTC (rev 16127) @@ -31,10 +31,9 @@ #include <mmsystem.h> #endif -#ifdef USE_AO -# include <ao/ao.h> -# include <audiofile.h> -#endif /* USE_AO */ +#ifdef USE_GSTREAMER +# include <gst/gst.h> +#endif /* USE_GSTREAMER */ #include "debug.h" #include "notify.h" @@ -55,7 +54,6 @@ static guint mute_login_sounds_timeout = 0; static gboolean mute_login_sounds = FALSE; -static gboolean sound_initialized = FALSE; static struct gaim_sound_event sounds[GAIM_NUM_SOUNDS] = { {N_("Buddy logs in"), "login", "login.wav"}, @@ -72,10 +70,6 @@ {N_("Someone says your screen name in chat"), "nick_said", "alert.wav"} }; -#ifdef USE_AO -static int ao_driver = -1; -#endif /* USE_AO */ - static gboolean unmute_login_sounds_cb(gpointer data) { @@ -235,35 +229,6 @@ mute_login_sounds_timeout = gaim_timeout_add(10000, unmute_login_sounds_cb, NULL); } -static void -_pref_sound_method_changed(const char *name, GaimPrefType type, - gconstpointer val, gpointer data) -{ - if(type != GAIM_PREF_STRING || strcmp(name, "/gaim/gtk/sound/method")) - return; - - sound_initialized = TRUE; - -#ifdef USE_AO - ao_driver = -1; - - if(!strcmp(val, "esd")) - ao_driver = ao_driver_id("esd"); - else if(!strcmp(val, "arts")) - ao_driver = ao_driver_id("arts"); - else if(!strcmp(val, "nas")) - ao_driver = ao_driver_id("nas"); - else if(!strcmp(val, "automatic")) - ao_driver = ao_default_driver_id(); - - if(ao_driver != -1) { - ao_info *info = ao_driver_info(ao_driver); - gaim_debug_info("sound", - "Sound output driver loaded: %s\n", info->name); - } -#endif /* USE_AO */ -} - const char * gaim_gtk_sound_get_event_option(GaimSoundEventID event) { @@ -332,14 +297,11 @@ gaim_prefs_add_string("/gaim/gtk/sound/method", "automatic"); gaim_prefs_add_int("/gaim/gtk/sound/volume", 50); -#ifdef USE_AO +#ifdef USE_GSTREAMER gaim_debug_info("sound", "Initializing sound output drivers.\n"); - ao_initialize(); -#endif /* USE_AO */ + gst_init(NULL, NULL); +#endif /* USE_GSTREAMER */ - gaim_prefs_connect_callback(gaim_gtk_sound_get_handle(), "/gaim/gtk/sound/method", - _pref_sound_method_changed, NULL); - gaim_signal_connect(blist_handle, "buddy-signed-on", gtk_sound_handle, GAIM_CALLBACK(buddy_state_cb), GINT_TO_POINTER(GAIM_SOUND_BUDDY_ARRIVE)); @@ -369,15 +331,14 @@ static void gaim_gtk_sound_uninit(void) { -#ifdef USE_AO - ao_shutdown(); +#ifdef USE_GSTREAMER + gst_deinit(); #endif - sound_initialized = FALSE; gaim_signals_disconnect_by_handle(gaim_gtk_sound_get_handle()); } -#ifdef USE_AO +#ifdef USE_GSTREAMER static gboolean expire_old_child(gpointer data) { @@ -395,80 +356,47 @@ return FALSE; /* do not run again */ } -/* Uncomment the following line to enable debugging of clipping in the scaling. */ -/* #define DEBUG_CLIPPING */ - -static void -scale_pcm_data(char *data, int nframes, int bits, int channels, - double intercept, double minclip, double maxclip, - float scale) +static gboolean +bus_call (GstBus *bus, + GstMessage *msg, + gpointer data) { - int i; - float v; - gint16 *data16 = (gint16*)data; - gint32 *data32 = (gint32*)data; - gint64 *data64 = (gint64*)data; + GstElement *play = data; + GError *err; - switch(bits) { - case 16: - for(i = 0; i < nframes * channels; i++) { - v = ((data16[i] - intercept) * scale) + intercept; -#ifdef DEBUG_CLIPPING - if (v > maxclip) - printf("Clipping detected!\n"); - else if (v < minclip) - printf("Clipping detected!\n"); -#endif - v = CLAMP(v, minclip, maxclip); - data16[i]=(gint16)v; - } - break; - case 32: - for(i = 0; i < nframes * channels; i++) { - v = ((data32[i] - intercept) * scale) + intercept; -#ifdef DEBUG_CLIPPING - if (v > maxclip) - printf("Clipping detected!\n"); - else if (v < minclip) - printf("Clipping detected!\n"); -#endif - v = CLAMP(v, minclip, maxclip); - data32[i]=(gint32)v; - } - break; - case 64: - for(i = 0; i < nframes * channels; i++) { - v = ((data64[i] - intercept) * scale) + intercept; -#ifdef DEBUG_CLIPPING - if (v > maxclip) - printf("Clipping detected!\n"); - else if (v < minclip) - printf("Clipping detected!\n"); -#endif - v = CLAMP(v, minclip, maxclip); - data64[i]=(gint64)v; - } - break; - default: - gaim_debug_warning("gtksound", "Scaling of %d bit pcm data not supported.\n", bits); - break; + switch (GST_MESSAGE_TYPE (msg)) { + case GST_MESSAGE_EOS: + gst_element_set_state(play, GST_STATE_NULL); + gst_object_unref(GST_OBJECT(play)); + break; + case GST_MESSAGE_ERROR: + gst_message_parse_error(msg, &err, NULL); + gaim_debug_error("gstreamer", err->message); + g_error_free(err); + break; + case GST_MESSAGE_WARNING: + gst_message_parse_warning(msg, &err, NULL); + gaim_debug_warning("gstreamer", err->message); + g_error_free(err); + break; + default: + break; } + return TRUE; } -#endif /* USE_AO */ +#endif static void gaim_gtk_sound_play_file(const char *filename) { const char *method; -#ifdef USE_AO - pid_t pid; - AFfilehandle file; - int volume = 50; +#ifdef USE_GSTREAMER + float volume; + char *uri; + GstElement *sink = NULL; + GstElement *play = NULL; #endif - if (!sound_initialized) - gaim_prefs_trigger_callback("/gaim/gtk/sound/method"); - if (gaim_prefs_get_bool("/gaim/gtk/sound/mute")) return; @@ -519,91 +447,37 @@ g_free(command); return; } -#ifdef USE_AO - volume = gaim_prefs_get_int("/gaim/gtk/sound/volume"); - volume = CLAMP(volume, 0, 100); - - pid = fork(); - if (pid < 0) - return; - else if (pid == 0) { - /* Child process */ - - /* calculating the scaling factor: - * scale(x) = (x+30)^2 / 6400 - * scale(0) = 0.1406 (quiet) - * scale(50) = 1.0 (no scaling, normal volume) - * scale(100) = 2.6406 (roughly maximized without clipping) - */ - float scale = ( ((float)volume + 30) * ((float)volume + 30) ) / 6400; - file = afOpenFile(filename, "rb", NULL); - if(file) { - ao_device *device; - ao_sample_format format; - int in_fmt; - int bytes_per_frame; - double slope, intercept, minclip, maxclip; - - format.rate = afGetRate(file, AF_DEFAULT_TRACK); - format.channels = afGetChannels(file, AF_DEFAULT_TRACK); - afGetSampleFormat(file, AF_DEFAULT_TRACK, &in_fmt, - &format.bits); - - afGetPCMMapping(file, AF_DEFAULT_TRACK, &slope, - &intercept, &minclip, &maxclip); - - /* XXX: libao doesn't seem to like 8-bit sounds, so we'll - * let libaudiofile make them a bit better for us */ - if(format.bits == 8) - format.bits = 16; - - afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, - AF_SAMPFMT_TWOSCOMP, format.bits); - -#if G_BYTE_ORDER == G_BIG_ENDIAN - format.byte_format = AO_FMT_BIG; - afSetVirtualByteOrder(file, AF_DEFAULT_TRACK, - AF_BYTEORDER_BIGENDIAN); -#elif G_BYTE_ORDER == G_LITTLE_ENDIAN - format.byte_format = AO_FMT_LITTLE; - afSetVirtualByteOrder(file, AF_DEFAULT_TRACK, - AF_BYTEORDER_LITTLEENDIAN); -#else -#warning Unknown endianness -#endif - - bytes_per_frame = format.bits * format.channels / 8; - - device = ao_open_live(ao_driver, &format, NULL); - - if(device) { - int frames_read; - char buf[4096]; - int buf_frames = sizeof(buf) / bytes_per_frame; - - while((frames_read = afReadFrames(file, AF_DEFAULT_TRACK, - buf, buf_frames))) { - /* no need to scale at volume == 50 */ - if(volume != 50) - scale_pcm_data(buf, frames_read, format.bits, format.channels, - intercept, minclip, maxclip, scale); - if(!ao_play(device, buf, frames_read * bytes_per_frame)) - break; - } - ao_close(device); - } - afCloseFile(file); +#ifdef USE_GSTREAMER + volume = (float)(CLAMP(gaim_prefs_get_int("/gaim/gtk/sound/volume"),0,100)) / 50; + if (!strcmp(method, "automatic")) { + if (gaim_running_gnome()) { + sink = gst_element_factory_make("gconfaudiosink", "sink"); } - ao_shutdown(); - _exit(0); - } else { - /* Parent process */ - gaim_timeout_add(PLAY_SOUND_TIMEOUT, expire_old_child, GINT_TO_POINTER(pid)); + } else if (!strcmp(method, "esd")) { + sink = gst_element_factory_make("esdsink", "sink"); + } else if (!strcmp(method, "arts")) { + sink = gst_element_factory_make("artssink", "sink"); + } else if (!strcmp(method, "nas")) { + sink = gst_element_factory_make("nassink", "sink"); } -#else /* USE_AO */ + + uri = g_strdup_printf("file://%s", filename); + play = gst_element_factory_make("playbin", "play"); + + g_object_set(G_OBJECT(play), "uri", uri, + "volume", volume, + "audio-sink", sink, NULL); + + gst_bus_add_watch(gst_pipeline_get_bus(GST_PIPELINE(play)), + bus_call, play); + gst_element_set_state(play, GST_STATE_PLAYING); + + g_free(uri); + +#else /* USE_GSTREAMER */ gdk_beep(); return; -#endif /* USE_AO */ +#endif /* USE_GSTREAMER */ #else /* _WIN32 */ gaim_debug_info("sound", "Playing %s\n", filename); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-02 20:08:02
|
Revision: 16126 Author: rlaager Date: 2006-05-02 13:07:55 -0700 (Tue, 02 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16126&view=rev Log Message: ----------- SF Patch #1480620 from Sadrul Small typo fix. "Conversation" -> "Conversion" Modified Paths: -------------- trunk/src/protocols/oscar/oscar.c Modified: trunk/src/protocols/oscar/oscar.c =================================================================== --- trunk/src/protocols/oscar/oscar.c 2006-05-02 06:36:36 UTC (rev 16125) +++ trunk/src/protocols/oscar/oscar.c 2006-05-02 20:07:55 UTC (rev 16126) @@ -384,7 +384,7 @@ else ret = g_convert(data, datalen, "UTF-8", charsetstr, NULL, NULL, &err); if (err != NULL) { - gaim_debug_warning("oscar", "Conversation from %s failed: %s.\n", + gaim_debug_warning("oscar", "Conversion from %s failed: %s.\n", charsetstr, err->message); g_error_free(err); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-02 06:36:41
|
Revision: 16125 Author: rlaager Date: 2006-05-01 23:36:36 -0700 (Mon, 01 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16125&view=rev Log Message: ----------- SF Bug #1480097 We weren't setting the parent of the "Configure Plugin" dialog properly if you double-clicked on the item instead of clicking the button. Modified Paths: -------------- trunk/src/gtkplugin.c Modified: trunk/src/gtkplugin.c =================================================================== --- trunk/src/gtkplugin.c 2006-05-02 02:05:43 UTC (rev 16124) +++ trunk/src/gtkplugin.c 2006-05-02 06:36:36 UTC (rev 16125) @@ -500,7 +500,7 @@ } static void -show_plugin_prefs_cb(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer null) +show_plugin_prefs_cb(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn *column, GtkWidget *dialog) { GtkTreeSelection *sel; GtkTreeIter iter; @@ -518,7 +518,7 @@ return; /* Now show the pref-dialog for the plugin */ - plugin_dialog_response_cb(NULL, GAIM_RESPONSE_CONFIGURE, sel); + plugin_dialog_response_cb(dialog, GAIM_RESPONSE_CONFIGURE, sel); } void gaim_gtk_plugin_dialog_show() @@ -561,7 +561,7 @@ event_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ls)); g_signal_connect(G_OBJECT(event_view), "row-activated", - G_CALLBACK(show_plugin_prefs_cb), event_view); + G_CALLBACK(show_plugin_prefs_cb), plugin_dialog); gaim_signal_connect(gaim_plugins_get_handle(), "plugin-load", plugin_dialog, GAIM_CALLBACK(plugin_load_cb), event_view); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-05-02 02:05:46
|
Revision: 16124 Author: thekingant Date: 2006-05-01 19:05:43 -0700 (Mon, 01 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16124&view=rev Log Message: ----------- Fix a link, get rid of a comma or two (I think it flows better without them), and add a link to the student signup page. Modified Paths: -------------- web/htdocs/summerofcode/index.php Modified: web/htdocs/summerofcode/index.php =================================================================== --- web/htdocs/summerofcode/index.php 2006-05-02 01:49:54 UTC (rev 16123) +++ web/htdocs/summerofcode/index.php 2006-05-02 02:05:43 UTC (rev 16124) @@ -3,7 +3,7 @@ require('template.inc.php'); ?> -<i>For information about Summer of Code 2005, see last year's <a href='2005.html'>page</a></i>. +<i>For information about Summer of Code 2005, see <a href='2005.html'>last year's page</a></i>. <h1>Contents</h1> <ul><li><em><a href="planet">Planet Summer of Gaim</a></em></li> @@ -16,14 +16,14 @@ <h1 id="news">News</h1> <h2 class="news">Summer of Code Begins</h2> -<div class="newsdate">May 1, 2006 - 11:16AM )PDT</div> -<p>We are now accepting applications for Google's 2006 <a href='code.google.com/soc/'>Summer of Code</a> program. Look at the <a href='#available'>suggestions</a> below, or (even better), come up with your own idea, and consider applying!</p> +<div class="newsdate">May 1, 2006 - 11:16AM PDT</div> +<p>We are now accepting applications for Google's 2006 <a href='http://code.google.com/soc/'>Summer of Code</a> program. Look at the <a href='#available'>suggestions</a> below, or (even better), come up with your own idea, and consider applying! To apply, visit Google's <a href="http://code.google.com/soc/student_step1.html">Student Signup</a> webpage.</p> <br /> <h1 id="intro">Introduction</h1> <p>Gaim is proud to participate in the Google <a href="http://code.google.com/summerofcode.html">Summer of Code</a>. This summer Google is sponsoring students to work on free software projects under the mentorship of experienced free software developers. The Gaim developers are glad to volunteer to mentor some students and introduce them to the world of open-source development.</p> -<p>Last year, Gaim was a very popular mentoring organization, and we had a very difficult time narrowing the candidates down to only fifteen. Many (very many) candidates chose to apply for one of our suggestions, which is fine, but keep in mind that when you apply for one of our suggestions, you're competing yourself against hundreds of others for the same idea. When you propose your own idea, you're competing your <i>idea</i> against just a handful of other ideas, as well highlighting your creativity.</p> +<p>Last year Gaim was a very popular mentoring organization, and we had a very difficult time narrowing the candidates down to only fifteen. Many (very many) candidates chose to apply for one of our suggestions, which is fine, but keep in mind that when you apply for one of our suggestions you're competing yourself against hundreds of others for the same idea. When you propose your own idea, you're competing your <i>idea</i> against just a handful of other ideas, as well as highlighting your creativity.</p> <h1 id="accepted">Accepted Summer of Code Projects</h1> <p><i>No projects have yet been accepted.</i></p> @@ -36,7 +36,7 @@ <table> <tr><td class="highlight">Improved Privacy Support</td></tr> <tr><td><p>As Gaim began life as an AIM client, there are still some parts that are somewhat AIM-centric. Currently, one of the areas most uncomfortable for users of other protocols is privacy support. Your task would be to improve Gaim's privacy support.</p> -<p>This job entails surveying other IM clients, and determining what sort of privacy capabilities they offer, abstracting these all into a concise Gaim backend API, designing a UI capable of handling the diversity of different privacy features, then finally, implementing and documenting your work.</p> +<p>This job entails surveying other IM clients and determining what sort of privacy capabilities they offer, abstracting these all into a concise Gaim backend API, designing a UI capable of handling the diversity of different privacy features, then finally, implementing and documenting your work.</p> </td></tr> <tr><td class="highlight">Certificate Manager</td></tr> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-02 01:50:05
|
Revision: 16123 Author: rlaager Date: 2006-05-01 18:49:54 -0700 (Mon, 01 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16123&view=rev Log Message: ----------- Fix a bug reported as SF Patch #1479875. "in gaim_icqinfo() in oscar.c , the struct tm used for filling in birthday date is not initialized, this cause crash in strftime on amd64 which is indirectly called by gaim_date_format_short. Reproduced on debian sarge amd64 stable." I chose a different solution than what was provided in the patch. Modified Paths: -------------- trunk/src/protocols/oscar/oscar.c Modified: trunk/src/protocols/oscar/oscar.c =================================================================== --- trunk/src/protocols/oscar/oscar.c 2006-05-02 01:44:14 UTC (rev 16122) +++ trunk/src/protocols/oscar/oscar.c 2006-05-02 01:49:54 UTC (rev 16123) @@ -3650,12 +3650,22 @@ if (info->gender != 0) oscar_string_append(gc->account, str, "\n<br>", _("Gender"), info->gender == 1 ? _("Female") : _("Male")); if ((info->birthyear > 1900) && (info->birthmonth > 0) && (info->birthday > 0)) { - struct tm tm; - tm.tm_mday = (int)info->birthday; - tm.tm_mon = (int)info->birthmonth-1; - tm.tm_year = (int)info->birthyear-1900; + /* Initialize the struct properly or strftime() will crash + * on some systems (Debian Sarge AMD64). */ + time_t t = time(NULL); + struct tm *tm = localtime(&t); + + tm->tm_mday = (int)info->birthday; + tm->tm_mon = (int)info->birthmonth - 1; + tm->tm_year = (int)info->birthyear - 1900; + + /* To be 100% sure that the fields are re-normalized. + * If you're sure strftime() ALWAYS does this EVERYWHERE, + * feel free to remove it. --rlaager */ + mktime(tm); + oscar_string_append(gc->account, str, "\n<br>", _("Birthday"), - gaim_date_format_short(&tm)); + gaim_date_format_short(tm)); } if ((info->age > 0) && (info->age < 255)) { char age[5]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-02 01:44:22
|
Revision: 16122 Author: rlaager Date: 2006-05-01 18:44:14 -0700 (Mon, 01 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16122&view=rev Log Message: ----------- SF Patch #1479292 from resiak This cleans up the Ctrl-Tab and Ctrl-Shift-Tab handling so it's easier to understand. Modified Paths: -------------- trunk/src/gtkconv.c Modified: trunk/src/gtkconv.c =================================================================== --- trunk/src/gtkconv.c 2006-05-01 21:45:57 UTC (rev 16121) +++ trunk/src/gtkconv.c 2006-05-02 01:44:14 UTC (rev 16122) @@ -1732,46 +1732,27 @@ { GaimGtkConversation *next_gtkconv = NULL; GaimGtkWindow *win; - int index, i, total, found = 0; + int initial, i, total, diff; win = gtkconv->win; - index = gtk_notebook_page_num(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont); + initial = gtk_notebook_page_num(GTK_NOTEBOOK(win->notebook), + gtkconv->tab_cont); total = gaim_gtk_conv_window_get_gtkconv_count(win); + /* By adding total here, the moduli calculated later will always have two + * positive arguments. x % y where x < 0 is not guaranteed to return a + * positive number. + */ + diff = (forward ? 1 : -1) + total; - /* First check the tabs after (forward) or before (!forward) this position. */ - for (i = forward ? index + 1 : index - 1; - !found && (next_gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, i)); - forward ? i++ : i--) { - if (i == -1) { - break; - } - + for (i = (initial + diff) % total; i != initial; i = (i + diff) % total) { + next_gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, i); if (next_gtkconv->unseen_state > 0) - found = 1; + break; } - if (!found) { - /* Now check from the beginning up to (forward) or end back to (!forward) this position. */ - for (i = forward ? 0 : total - 1; - !found && (forward ? i < index : i >= 0) && - (next_gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, i)); - forward ? i++ : i--) { - - if (next_gtkconv->unseen_state > 0) - found = 1; - } - - if (!found) { - /* Okay, just grab the next (forward) or previous (!forward) conversation tab. */ - if (forward) { - index++; - } - else { - index = (index == 0) ? total - 1 : index - 1; - } - if (!(next_gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, index))) - next_gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, 0); - } + if (i == initial) { /* no new messages */ + i = (i + diff) % total; + next_gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, i); } if (next_gtkconv != NULL && next_gtkconv != gtkconv) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-05-01 21:46:03
|
Revision: 16121 Author: seanegan Date: 2006-05-01 14:45:57 -0700 (Mon, 01 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16121&view=rev Log Message: ----------- News update Modified Paths: -------------- web/htdocs/news.txt Modified: web/htdocs/news.txt =================================================================== --- web/htdocs/news.txt 2006-05-01 21:04:06 UTC (rev 16120) +++ web/htdocs/news.txt 2006-05-01 21:45:57 UTC (rev 16121) @@ -1,3 +1,7 @@ +Summer of Code 2006 +May 1st, 2006 - 2:41PM PDT +Google is now accepting applications for its 2006 <a href='http://code.google.com/soc'>Summer of Code</a>. Gaim is a mentor again this summer, so take a look at some our suggested <a href='http://gaim.sf.net/summerofcode'>projects</a>, and consider applying today! +# Beta 3: What goes up must fall down? March 29th, 2006 - 1:27PM EST Great day in the park, we've released Gaim 2.0.0 beta 3. You know the drill--you can find <a href="http://sourceforge.net/project/showfiles.php?group_id=235&package_id=253&release_id=405479">assorted builds on our sourceforge page</a>. We'd like to note that none of the beta 3 RPMs include a Gadu-Gadu protocol plugin. So if you need Gadu-Gadu then you should stick with beta 2. And as my pappy always used to say: don't hitch your wagon to a stump if it has eyes. We never did know what he was talking about. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-01 21:04:21
|
Revision: 16120 Author: rlaager Date: 2006-05-01 14:04:06 -0700 (Mon, 01 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16120&view=rev Log Message: ----------- Minor edits: Add a period, remove the word "Rejected" from the suggestions, as that's likely to confuse people. Modified Paths: -------------- web/htdocs/summerofcode/index.php Modified: web/htdocs/summerofcode/index.php =================================================================== --- web/htdocs/summerofcode/index.php 2006-05-01 20:49:07 UTC (rev 16119) +++ web/htdocs/summerofcode/index.php 2006-05-01 21:04:06 UTC (rev 16120) @@ -23,13 +23,13 @@ <h1 id="intro">Introduction</h1> <p>Gaim is proud to participate in the Google <a href="http://code.google.com/summerofcode.html">Summer of Code</a>. This summer Google is sponsoring students to work on free software projects under the mentorship of experienced free software developers. The Gaim developers are glad to volunteer to mentor some students and introduce them to the world of open-source development.</p> -<p>Last year, Gaim was a very popular mentoring organization, and we had a very difficult time narrowing the candidates down to only fifteen. Many (very many) candidates chose to apply for one of our suggestions, which is fine, but keep in mind that when you apply for one of our suggestions, you're competing yourself against hundreds of others for the same idea. When you propose your own idea, you're competing your <i>idea</i> against just a handful of other ideas, as well highlighting your creativity</p> +<p>Last year, Gaim was a very popular mentoring organization, and we had a very difficult time narrowing the candidates down to only fifteen. Many (very many) candidates chose to apply for one of our suggestions, which is fine, but keep in mind that when you apply for one of our suggestions, you're competing yourself against hundreds of others for the same idea. When you propose your own idea, you're competing your <i>idea</i> against just a handful of other ideas, as well highlighting your creativity.</p> <h1 id="accepted">Accepted Summer of Code Projects</h1> <p><i>No projects have yet been accepted.</i></p> -<h1 id="available">Rejected Summer of Code Project Suggestions</h1> +<h1 id="available">Summer of Code Project Suggestions</h1> <p>Here are some of the suggestions proposed by Gaim developers for this year's Summer of Code.</p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-05-01 20:49:14
|
Revision: 16119 Author: seanegan Date: 2006-05-01 13:49:07 -0700 (Mon, 01 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16119&view=rev Log Message: ----------- SoC webpage updates. I'm felt a bit uninspired, writing this. Others can feel free to write better descriptions and add their own ideas. Modified Paths: -------------- web/htdocs/summerofcode/index.php Modified: web/htdocs/summerofcode/index.php =================================================================== --- web/htdocs/summerofcode/index.php 2006-05-01 20:47:31 UTC (rev 16118) +++ web/htdocs/summerofcode/index.php 2006-05-01 20:49:07 UTC (rev 16119) @@ -56,7 +56,7 @@ <tr><td><p>Newer features of MSN Messenger are available only in protocols greater than what Gaim currently supports. The latest version of the MSN protocol is MSNP13, used by the MSN Messenger 8.0 beta.</p> <p>Your task this summer is to implement the newest MSN Messenger protocol, and as many of its features as time allows.</p></td></tr> -<tr><td class="highlight"></td>Log Management and Searching</td></tr> +<tr><td class="highlight">Log Management and Searching</td></tr> <tr><td><p>Gaim's current logging system is powerful and modularlly extensible, however it would benefit from added functionality. Moving searching into the logger modules, for instance, could greatly improve search performance. The log viewer should also allow you to delete logs directly from the UI. The UI for log management should be improved to reflect your design changes.</p> </td></tr> </table> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-05-01 20:47:41
|
Revision: 16118 Author: seanegan Date: 2006-05-01 13:47:31 -0700 (Mon, 01 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16118&view=rev Log Message: ----------- SoC webpage updates. I'm felt a bit uninspired, writing this. Others can feel free to write better descriptions and add their own ideas. Modified Paths: -------------- web/htdocs/summerofcode/index.php Added Paths: ----------- web/htdocs/summerofcode/2005.html Copied: web/htdocs/summerofcode/2005.html (from rev 16110, web/htdocs/summerofcode/index.php) =================================================================== --- web/htdocs/summerofcode/2005.html (rev 0) +++ web/htdocs/summerofcode/2005.html 2006-05-01 20:47:31 UTC (rev 16118) @@ -0,0 +1,196 @@ +<? + $page->title = "Summer of Code"; + require('template.inc.php'); +?> + +<h1>Contents</h1> +<ul><li><em><a href="planet">Planet Summer of Gaim</a></em></li> + <li><a href="#news">News</a></li> + <li><a href="#intro">Introduction</a></li> + <li><a href="#accepted">Accepted projects</a></li> + <li><a href="#available">Available suggestions</a></li> +</ul> + +<h1 id="news">News</h1> + +<h2 class="news">Summer of Code Ends</h2> +<div class="newsdate">October 12, 2005 - 10:35PM EDT</div> +<p>The "pencils down" date for the Summer of Code was September 1st. Here's a list of some of the spectacular things the Summer of Code students accomplished during their two months. +</p> +<ul> + +<li> +Rendezvous Plugin (Juanjo Molinero Horno) - Wrote a protocol plugin (PRPL) that communicates with Apple's iChat using the Bonjour protocol. The Bonjour protocol uses multicast DNS to automatically discover other Bonjour users on your local network. The PRPL currently uses the <a href="http://www.porchdogsoft.com/products/howl/">Howl</a> library for multicast DNS, but we'd like to switch to using <a href="http://www.freedesktop.org/Software/Avahi">Avahi</a> in the future. This in CVS HEAD and will be in the next release of Gaim. +</li> + +<li> +D-Busified gaim-remote (Piotr Zielinski) - Added D-Bus bindings to Gaim which allow other D-Bus aware programs to interact with Gaim. Removed the old, socket-based gaim-remote executable. It is being replaced by a python script that communicates with Gaim via D-Bus. This is in CVS HEAD and will be in the next release of Gaim. +</li> + +<li> +Improved Perl Scripting (John Kelm) - Fixed the problems with our Perl interpreter and added support for lots of Gaim's newer functionality. This is in CVS HEAD and will be in the next release of Gaim. +</li> + +<li> +UPnP NAT Traversal (Adam J. Warrington) - Gaim will now talk to your router and arrange for certain ports to be forwarded to your computer when doing file transfers. This should <b>greatly</b> improve file transfer success rates. This is in CVS HEAD and will be in the next release of Gaim. +</li> + +<li> +Gadu-Gadu Support (Bartosz Oler) - Our Gadu-Gadu protocol plugin is now using a much more recent version of libgadu. Many many improvements were made, and this protocol plugin is now working very well. This is in CVS HEAD and will be in the next release of Gaim. +</li> + +<li> +SIP/SIMPLE (Thomas Butter) - We now have a working protocol plugin for doing IM over a SIP connection, compatable with kphone, iptel.org and sipgate.de. This is in CVS HEAD and will be in the next release of Gaim. +</li> + +<li> +ICQ File Transfer (Jonathan Clark) - ICQ file transfer turned out to be pretty easy, since new versions of ICQ use the same file transfer protocol as AIM. After Jonathan got that working, he went on to add support for proxying a file through AOL's file transfer proxy servers, and made lots of other improvements to the file transfer code used by both AIM and ICQ. This is in CVS HEAD and will be in the next release of Gaim. Some of his changes also made it into earlier releases of Gaim. +</li> + +<li> +Music Messaging (Christian Muise) - Music Messaging is a Gaim plugin that allows collaborative musical score editing. It uses the SoC DBus Gaim project to link Gaim with a score editor that is geared to use this functionality. This requires the DBus plugin to be operational. This is in CVS HEAD and will be in the next release of Gaim. +</li> + +<li> +SMS PC-to-mobile routing over Bluetooth (Mel Dooki) - This project does not releate directly to Gaim, but we thought it was neat. Mel wrote a Java client that runs on a computer. The user types an SMS, the client transfers the message to a cell phone via Bluetooth, then another program on the cell phone transmits the SMS. See the <a href="http://routingsms.sourceforge.net/">SMS Routing over Bluetooth</a> webpage for more information. +</li> + +<li> +Crazy Chat (Charlie Stockman) - Incomplete, but code IS checked into CVS HEAD. +</li> + +<li> +Doodle (Andrew Dieffenbach) - Created a "whiteboard" system for Gaim and used it to implement Yahoo!'s Doodle protocol. It may need a little more work before it's completely compatable with current Yahoo! clients, but it works fine between two Gaim users. This is in CVS HEAD and will be in the next release of Gaim. +</li> + +<li> +Collaborative Code Editor (Chisthian Kim) - TODO +</li> + +</ul> + +<h2 class="news">Summer of Code Blogs</h2> +<div class="newsdate">July 7, 2005 - 12:05AM EDT</div> +<p>The Summer of Code students are now journaling their work in blogs. I've linked names to blogs in the project listing below and have aggregated them to a single <a href="planet">page</a>. Thanks to Steven Garrity for the help.</p> + +<h2 class="news">Summer of Code Begins</h2> +<div class="newsdate">June 27, 2005 - 6:08PM EDT</div> +<p>The selection process for the Summer of Code has ended. As I mentioned on the <a href="/index.php">front page</a>, it was really hard selecting only 15. I've updated this page to show the selected projects and applicants as well as to show which of our suggestions were not chosen for the summer.</p> +<br /> + +<h1 id="intro">Introduction</h1> +<p>Gaim is proud to participate in the Google <a href="http://code.google.com/summerofcode.html">Summer of Code</a>. This summer Google is putting up $1 million dollars for students to work on free software projects under the mentorship of experienced free software developers. The Gaim developers are glad to volunteer to mentor some students and introduce them to the world of open-source development.</p> + +<p>Students may apply for the program at <a href="http://code.google.com/summerofcode.html">Google's webpage</a> by selecting "Gaim" as their sponsor. Google and Gaim will then work together to select from the candidates. The chosen candidates will then work closely with Gaim developers to complete their project. Upon completion, the student will receive $4500 <b>AND</b> a tee-shirt!</p> + +<p>The students may choose any project they like; it doesn't even have to be related to Gaim (although we'd be better able to mentor you if it were). If you have a great idea you've been looking for an opportunity to write, let us know about it! We're especially interested in hearing really innovative, ground-breaking, never-before-heard-of uses of instant messaging. Do something really experimental!</p> + +<p>However, if you just want to help out Gaim where the developers think we need help the most (which we'd really appreciate), we've compiled a brief list of projects we'd like to help students complete this summer:</p> + +<p>When you apply for a project, the "proposal," section is the only thing we have on which to base our opinion. In that secion alone, you must convince us and Google to fund your proposal. Google links to the Perl foundation's <a href="http://www.perlfoundation.org/gc/grants/proposals.html">HOWTO</a> on writing a proposal. Here's a brief list of things that we especially want to know:</p> +<ul> +<li><b>Academic Merit</b> We're really excited about making this summer an educational experience for all the students involved. Tell us what you expect to learn from your project. We're carefully choosing the projects listed here to ensure you need to actually design stuff from the ground up, despite the temptation to just let Google foot the bill for tedious, mindless tasks we just don't want to do ourselves.</li> +<li><b>Qualifications</b> This is especially true if you apply for one of the project in this list. You will likely be competing against other candidates, so tell us what makes you a better choice than others.</li> +<li><b>Coolness</b> If you have your own idea, just convince us that it's really cool. We're interested in seeing a lot of unique, creative, innovative ideas using IM in ways noone has thought of before. +</ul> + +<p>We will be adding more projects soon, as we think of them!</p> + +<h1 id="accepted">Accepted Summer of Code Projects</h1> +<p>The following projects were accepted to receive Google sponsorship in their summer of code project. I've included here a brief synopsis of the project, and the name of the person working on it.</p> + +<table> +<tr><td class="highlight">Rendezvous Plugin - <a href="juanjo">Juanjo Molinero Horno</a></td></tr> +<tr><td><p>Apple iChat uses a protocol formerly called Rendezvous (renamed Bonjour due to trademark disputes) to provide a buddy list and messaging among people on the same local network. Gaim developer Mark Doliner has started a Rendezvous plugin, but it is far from release-ready. Your task this summer will be to complete this protocol support.</p> +<p>Rendezvous uses multicast DNS for presence support and the technologies used are all open and documented. Access to a Macintosh running iChat would certainly be useful, though.</p></td></tr> + +<tr><td class="highlight">D-Busified gaim-remote - <a href="piotr">Piotr Zielinski</a></td></tr> +<tr><td><p>On UNIX systems, Gaim includes a separate utility called <code>gaim-remote</code>. This utility is used to execute commands on an existing Gaim session. <code>gaim-remote</code> uses a protocol we made up called CUI which was initially designed to allow entire user interfaces communicate with a headless Gaim "core" process. This idea has not been developed at all, but the limitations of that protocol's design prevent <code>gaim-remote</code> from doing things people actually want to do with it. Further, other applications would love to communicate with a Gaim process for desktop integration reasons. Requiring each of these to implement the CUI protocol is unnecessarily cruel to them.</p> +<p>D-Bus is an emerging system for inter-process communication. It provides mechanisms for applications to locate and send messages to each other. Although still in active development, it seems likely that D-Bus will soon be an essiential element of the UNIX desktop.</p> +<p>Your job for the summer will be to rewrite the <code>gaim-remote</code> functionality using D-Bus. As D-Bus becomes <i>the</i> standard for communicating messages between applications, all these applications will have the ability to communicate with Gaim. In addition to duplicating the functionality already present in <code>gaim-remote</code> you will be adding tons more features that can be used to remotely manage a Gaim session (changing status, reading the buddy list, sending messages, etc.).</p></td></tr> + +<tr><td class="highlight">Embedded Perl Interpreter - <a href="john">John Kelm</a></td></tr> +<tr><td><p>Gaim has supported perl scripting since September, 2000. Unfortunately, the current embedded perl interpreter is in poor shape due to a rapidly changing API and nobody working on Perl. At present, it is generally not possible to do anything useful in a perl script</p> +<p>Your task this summer will be to bring the perl plugin up-to-date with the current API. This work is mostly done in XS, a system designed for wrapping C functions in perl. Essentially, every function in the Gaim <a href="/api/">plugin API</a> will need to be wrapped in perl. It will probably also help if you develop some way of testing that each function works as it should.</p></td></tr> + +<tr><td class="highlight">Embedded Mono Runtime - <a href="andrews">Andrew Scukanec</a></td></tr> +<tr><td><p>Mono is a free software implementation of Microsoft's .NET platform. .NET programs compile to byte code and are then "Just-In-Time" compiled at runtime (this is similar to Java). We would like to see Gaim plugins written using .NET. Because of the byte-code nature of .NET, these plugins could be written in a large number of languages, including C#, and compiled to work on any Gaim, regardless of platform, making plugin distribution much easier.</p> +<p>Your task for the summer is to embed the Mono runtime into Gaim and provide a .NET wrapper to Gaim's API. There exists a lot of good documentation for doing this.</p></td></tr> + +<tr><td class="highlight">UPnP NAT Traversal - <a href="adam">Adam J. Warrington</a></td></tr> +<tr><td><p>Tons of people have difficulty transferring files or otherwise directly connecting with Gaim because they're behind a NAT device. NAT devices allow more than one host to share a single IP address and are very useful for users with multiple computers but a single Internet connection. These devices are usually sold as "broadband routers." Unfortunately, because multiple hosts share a single IP address, neither can be addressed specifically without additional (confusing) configuration.</p> +<p>UPnP is a protocol from Microsoft that, among other things, provides NAT traversal: a way to allow each host behind the NAT device to receive incoming connections. Implementing this in Gaim would fix most file transfer problems for people with UPnP-enabled NAT devices (most currently sold are). Your task this summer is to implement just enough of UPnP in Gaim to allow for NAT-transparency.</p></td></tr> + +<tr><td class="highlight">Gadu-Gadu Support - <a href="bartosz">Bartosz Oler</a></td></tr> +<tr><td><p>Gadu-Gadu is a Polish instant messaging protocol that Gaim has supported since December, 2001. However, since its original maintainer lost interest, its support in Gaim has lacked the love needed to ensure it works, much less up-to-date with the features of the official Gadu-Gadu client.</p> +<p>Your task this summer will be to bring Gadu-Gadu up-to-date with the functionality of the current official Gadu-Gadu application. Speaking Polish is definitely a plus (actually <i>being</i> Polish and a Gadu-Gadu user even more so). There exist working free software implementations of Gadu-Gadu already, so reverse engineering may not be necessary</p></td></tr> + +<tr><td class="highlight">SIP/SIMPLE - <a href="thomas">Thomas Butter</a></td></tr> +<tr><td><p>SIP is another popular protocol used for VoIP, and it also has an IM analog in the form of SIP/SIMPLE. Your task this summer will be to write a plugin that supports SIP/SIMPLE. SIP/SIMPLE is an open protocol with a documented specification.</p></td></tr> + +<tr><td class="highlight">ICQ File Transfer - <a href="jonathan">Jonathan Clark</a></td></tr> +<tr><td><p>The ICQ protocol supports file transfer, but Gaim doesn't implement it. Your task this summer is to fully implement ICQ file transfer in Gaim's OSCAR plugin. This may involve reverse engineering the protocol, but there do exist free software implementations you can use as a reference.</p></td></tr> + +<tr><td class="highlight">SSL Certificate Validation - <a href="erin">Erin Miller</a></td></tr> +<tr><td>Some of our protocols, namely Jabber, IRC, and MSN, use SSL encryption. However, Gaim currently has no way to ensure the user that she's actually connecting to the correct server. If a malicious cracker stood between you and your Jabber server, he could trick you into thinking he was the server. You would think your messages are encrypted, but the malicious cracker could read them all.</p> +<p>This is solved by a system known as "certificates." An SSL certificate authenticates that the server is who it claims to be. If the user trusts the certificate, she'll know her communications are safe.</p> +<p>Your task this summer is to write a certificate manager for Gaim. This manager would display SSL certificates to the user and keep track of those the user has trusted. This way, the first time the user connects to a server, she'll be required to confirm the certificate is valid; subsequent connections to the same server with the same certificate will not prompt her again.</p> +<p>This same interface can be used elsewhere in Gaim not directly related to SSL. For instance, several third-party plugins exist to encrypt Gaim messages. These would benefit from a generic certificate manager.</p></td></tr> + +<!-- Originals --> +<tr><td class="highlight">Music Messaging - <a href="christian">Christian Muise</a></td></tr> +<tr><td><p>Musicians are known to be social, but this rarely presents itself outside of the typical garage jam sessions, all night caleighs at the camp, or swingin blues sets at a smoky bar (you get the idea). With the new age, plenty of software has been made available for musicians, but it is all for independent work, or for those music gatherings.</p> +<p>What I propose is a music meet of the new age. Real-time has been explored (biggest draw back being latency times - but still dealt with formidably), but what about the casual input? When we chat on Gaim it is a social event. So far no developer has tapped into making that social arena appeal to the musician looking to socialize as a musician.</p> +<p>What I envision is software to connect musicians in a suite of different activities they could partake in. From composing music to playing music for others, etc. For the scope of SOC (Summer of Code), I propose a feature added to Gaim that will allow 2 (or more) people to actively edit a score of music in real-time. After which they can export it to MIDI and do as they please with the composition.</p> +<p>The ability to send music, ideas, riffs, and solos is something that a musician always dreams of, and with the technology available today, it's pretty surprising to see the lack of methods available. This is what Music Messaging would aim to overcome.</p></td></tr> + +<tr><td class="highlight">A more flexible type of buddylist - <a href="jesper">Jesper Stemann Andersen</a></td></tr> +<tr><td><p>Though groups can help the user sort his buddylist, a buddylist can easily grow to an unmanageable size, without the user wanting to actually delete "buddies". This project proposes a method to identify and group the "buddies" the user actually seems to have an interest in communicating with.</p> +<p>The idea is to use statistics on the users communication patterns to identify relations between the user and "buddies": 1-to-1 IM sessions can relate the user with one single buddy, while +Multi-participant IM sessions, in addition can relate buddies with regard to the user. +This way groups of "buddies" can automatically be identified.</p> +<p>Graphically the groups can be managed by the user. The user is placed in the center of a circle made up of his "buddies". "Buddies" with whom the user communicates a lot, should be positioned closer to the center, while less important "buddies" get pushed to the perifery. If relations has been established between buddies, these buddies can form a cycle of their own, with a center on the circle perifery.</p> +</td></tr> + +<tr><td class="highlight">Routing SMS from PC to mobile over Bluetooth to be sent automatically to the desired mobile number - <a href="mel">Mel Dooki</a></td></tr> +<tr><td><p>This project's idea tends to relief people from the tedious task of writing SMS's on mobile phones. +Instead, the user of this application would be provided with an interface on the computer that allows him/her to write the message on the computer using the keyboard. The message will then be routed from the PC to the mobile phone using Bluetooth link. +The mobile phone will send the SMS automatically to the desired number. </p></td></tr> + +<tr><td class="highlight">Crazy Chat - <a href="charlie">Charlie Stockman</a></td></tr> +<tr><td><p>I plan to update and extend a plugin called Crazy Chat that I made for Gaim for my senior software project at Stanford University. During a Crazy Chat session, the program uses the input from the local user’s webcam, and does image processing to detect key facial features such as the eyes and the corners of the mouth. It uses these features to determine parameters that describe the user’s expression, such as head tilt, head distance, mouth shape, and blinking. These parameters are then sent across the network, and are used to render a 3D “cartoony” version of the person’s face on the remote user’s computer (in the current version of Crazy Chat, there is a dog and a shark face). </p> +<p>Crazy Chat has several appealing benefits beyond the inherent fun of being turned into a three dimensional Labrador. The first is that it is extremely low bandwidth. For each frame, we only need to send about one hundred bytes, rather than many kilobytes for streaming video. This could potentially allow for large multi-conference Crazy Chats, in which each user represents a different creature in an online RPG troop. Another advantage of Crazy Chat over ordinary video conferencing is that it allows the user a higher degree of privacy. Rolled eyes, bed hair and messy rooms are all suppressed behind the exaggerated smiles of an urban hyena or razor sharp winks of a lady killer whale. And of course the inherent fun alluded to earlier should not be casually dismissed. Gaim is first and foremost and entertainment application.</p> +</td></tr> + +<tr><td class="highlight">Doodle - <a href="andrewd">Andrew Dieffenbach</a></td></tr> +<tr><td><p>I propose to make a Gaim plugin that allows users to interact with others using the Yahoo Instant Messenger IMVironment service 'Doodle.'</p> +<p>'Doodle' provides the ability for users to draw and sketch together in real-time. Some subject matter is difficult for many to verbalize; therefore, 'Doodle' is an extremely valuable tool for communication.</p> +<p>Gaim provides users with a unified and unique set of features. There are only a few which it lacks--a handful of such features one sacrifices while using and supporting Gaim.</p> +<p>The addition of a 'Doodle'-like application for Gaim would widen Gaim's popularity and the open-source platforms it supports as well.</p> +</td></tr> + +<tr><td class="highlight">Collaborative Code Editor - <a href="cristhian">Chisthian Kim</a></td></tr> +<tr><td><p>A plug-in for gaim that would allow developers to join a chat room where they can collaboratively edit files specially tailored for coding. It would have color syntaxing for various languages, locking portions of code and it would be highlighted with a color that will be assigned to each user who joins the chatroom, synchronizing of code and much more.</p></td></tr> +</table> + +<h1 id="available">Rejected Summer of Code Project Suggestions</h1> + +<p>The following projects were suggested by the Gaim team, and, despite numerous excellent applications for each, we decided the ideas were not as strong as some of the original ideas suggested.</p> + +<table> +<tr><td class="highlight">RVP Support</td></tr> +<tr><td><p>RVP is the protocol used by Microsoft Exchange messaging. It is used mostly in corporate environments. Your task this summer is to write support for the RVP protocol used by Exchange. The protocol is open and well documented, but to test it, you will need to provide your own access to an Exchange server; no public servers exist.</p></td></tr> + +<tr><td class="highlight">Skype Support</td></tr> +<tr><td><p>The popular Voice Over IP (VoIP) program Skype also supports plain-text instant messaging. Your task for the summer will be to write a plugin that implements this portion of the Skype protocol; you will not need to implement the VoIP protocol. This will probably require reverse engineering the protocol.</p></td></tr> + + +<tr><td class="highlight">MSN File Transfer</td></tr> +<tr><td>The MSN protocol supports several different file transfer methods which are used under different network conditions. Currently, Gaim only supports a method that transfers through the MSN servers. While this is guaranteed to work under any network condition (even if both sides are behind NAT devices, for instance), it is unbearably slow.</p> +<p>Your task this summer is to implement at least one other MSN file transfer protocol: one that directly connects the two clients. You will also need to provide a mechanism that will easily fallback on the slow through-the-server method in case your new method fails. This may involve reverse engineering, but there are other free software implementations you may use as a reference.</p></td></tr> + +<tr><td class="highlight">Improved User Interface</td></tr> +<tr><td>In recent years, the open source world has been focusing increasingly on good user interfaces and effect human-computer interaction. Some changes have already been made to Gaim to improve its usability, but there is still much work to be done.</p> +<p>Your task this summer is to perform a full review of the Gaim user interface, propose a list of improvements to the gaim-devel mailing list, and then carry out the desired changes by making the appropriate modifications. Our goal is to make the computer do the work instead of the user.</p> +<p>Knowledge of human computer interaction is a plus. Some useful references are the <a href="http://developer.gnome.org/projects/gup/hig/">GNOME Human Interface Guidelines</a>, the <a href="http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html">Apple Human Interface Guidelines</a>, Havoc's essay on <a href="http://www106.pair.com/rhp/free-software-ui.html">Free Software UI</a>, the book <a href="http://www.cooper.com/content/insights/cooper_books.asp#TIARTA"><i>The Inmates are Running the Asylum</i></a>, and any other book on software usability.</p></td></tr> +</table> Property changes on: web/htdocs/summerofcode/2005.html ___________________________________________________________________ Name: svn:mime-type + text/html Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Modified: web/htdocs/summerofcode/index.php =================================================================== --- web/htdocs/summerofcode/index.php 2006-05-01 20:47:11 UTC (rev 16117) +++ web/htdocs/summerofcode/index.php 2006-05-01 20:47:31 UTC (rev 16118) @@ -3,6 +3,8 @@ require('template.inc.php'); ?> +<i>For information about Summer of Code 2005, see last year's <a href='2005.html'>page</a></i>. + <h1>Contents</h1> <ul><li><em><a href="planet">Planet Summer of Gaim</a></em></li> <li><a href="#news">News</a></li> @@ -13,184 +15,48 @@ <h1 id="news">News</h1> -<h2 class="news">Summer of Code Ends</h2> -<div class="newsdate">October 12, 2005 - 10:35PM EDT</div> -<p>The "pencils down" date for the Summer of Code was September 1st. Here's a list of some of the spectacular things the Summer of Code students accomplished during their two months. -</p> -<ul> - -<li> -Rendezvous Plugin (Juanjo Molinero Horno) - Wrote a protocol plugin (PRPL) that communicates with Apple's iChat using the Bonjour protocol. The Bonjour protocol uses multicast DNS to automatically discover other Bonjour users on your local network. The PRPL currently uses the <a href="http://www.porchdogsoft.com/products/howl/">Howl</a> library for multicast DNS, but we'd like to switch to using <a href="http://www.freedesktop.org/Software/Avahi">Avahi</a> in the future. This in CVS HEAD and will be in the next release of Gaim. -</li> - -<li> -D-Busified gaim-remote (Piotr Zielinski) - Added D-Bus bindings to Gaim which allow other D-Bus aware programs to interact with Gaim. Removed the old, socket-based gaim-remote executable. It is being replaced by a python script that communicates with Gaim via D-Bus. This is in CVS HEAD and will be in the next release of Gaim. -</li> - -<li> -Improved Perl Scripting (John Kelm) - Fixed the problems with our Perl interpreter and added support for lots of Gaim's newer functionality. This is in CVS HEAD and will be in the next release of Gaim. -</li> - -<li> -UPnP NAT Traversal (Adam J. Warrington) - Gaim will now talk to your router and arrange for certain ports to be forwarded to your computer when doing file transfers. This should <b>greatly</b> improve file transfer success rates. This is in CVS HEAD and will be in the next release of Gaim. -</li> - -<li> -Gadu-Gadu Support (Bartosz Oler) - Our Gadu-Gadu protocol plugin is now using a much more recent version of libgadu. Many many improvements were made, and this protocol plugin is now working very well. This is in CVS HEAD and will be in the next release of Gaim. -</li> - -<li> -SIP/SIMPLE (Thomas Butter) - We now have a working protocol plugin for doing IM over a SIP connection, compatable with kphone, iptel.org and sipgate.de. This is in CVS HEAD and will be in the next release of Gaim. -</li> - -<li> -ICQ File Transfer (Jonathan Clark) - ICQ file transfer turned out to be pretty easy, since new versions of ICQ use the same file transfer protocol as AIM. After Jonathan got that working, he went on to add support for proxying a file through AOL's file transfer proxy servers, and made lots of other improvements to the file transfer code used by both AIM and ICQ. This is in CVS HEAD and will be in the next release of Gaim. Some of his changes also made it into earlier releases of Gaim. -</li> - -<li> -Music Messaging (Christian Muise) - Music Messaging is a Gaim plugin that allows collaborative musical score editing. It uses the SoC DBus Gaim project to link Gaim with a score editor that is geared to use this functionality. This requires the DBus plugin to be operational. This is in CVS HEAD and will be in the next release of Gaim. -</li> - -<li> -SMS PC-to-mobile routing over Bluetooth (Mel Dooki) - This project does not releate directly to Gaim, but we thought it was neat. Mel wrote a Java client that runs on a computer. The user types an SMS, the client transfers the message to a cell phone via Bluetooth, then another program on the cell phone transmits the SMS. See the <a href="http://routingsms.sourceforge.net/">SMS Routing over Bluetooth</a> webpage for more information. -</li> - -<li> -Crazy Chat (Charlie Stockman) - Incomplete, but code IS checked into CVS HEAD. -</li> - -<li> -Doodle (Andrew Dieffenbach) - Created a "whiteboard" system for Gaim and used it to implement Yahoo!'s Doodle protocol. It may need a little more work before it's completely compatable with current Yahoo! clients, but it works fine between two Gaim users. This is in CVS HEAD and will be in the next release of Gaim. -</li> - -<li> -Collaborative Code Editor (Chisthian Kim) - TODO -</li> - -</ul> - -<h2 class="news">Summer of Code Blogs</h2> -<div class="newsdate">July 7, 2005 - 12:05AM EDT</div> -<p>The Summer of Code students are now journaling their work in blogs. I've linked names to blogs in the project listing below and have aggregated them to a single <a href="planet">page</a>. Thanks to Steven Garrity for the help.</p> - <h2 class="news">Summer of Code Begins</h2> -<div class="newsdate">June 27, 2005 - 6:08PM EDT</div> -<p>The selection process for the Summer of Code has ended. As I mentioned on the <a href="/index.php">front page</a>, it was really hard selecting only 15. I've updated this page to show the selected projects and applicants as well as to show which of our suggestions were not chosen for the summer.</p> +<div class="newsdate">May 1, 2006 - 11:16AM )PDT</div> +<p>We are now accepting applications for Google's 2006 <a href='code.google.com/soc/'>Summer of Code</a> program. Look at the <a href='#available'>suggestions</a> below, or (even better), come up with your own idea, and consider applying!</p> <br /> <h1 id="intro">Introduction</h1> -<p>Gaim is proud to participate in the Google <a href="http://code.google.com/summerofcode.html">Summer of Code</a>. This summer Google is putting up $1 million dollars for students to work on free software projects under the mentorship of experienced free software developers. The Gaim developers are glad to volunteer to mentor some students and introduce them to the world of open-source development.</p> +<p>Gaim is proud to participate in the Google <a href="http://code.google.com/summerofcode.html">Summer of Code</a>. This summer Google is sponsoring students to work on free software projects under the mentorship of experienced free software developers. The Gaim developers are glad to volunteer to mentor some students and introduce them to the world of open-source development.</p> -<p>Students may apply for the program at <a href="http://code.google.com/summerofcode.html">Google's webpage</a> by selecting "Gaim" as their sponsor. Google and Gaim will then work together to select from the candidates. The chosen candidates will then work closely with Gaim developers to complete their project. Upon completion, the student will receive $4500 <b>AND</b> a tee-shirt!</p> +<p>Last year, Gaim was a very popular mentoring organization, and we had a very difficult time narrowing the candidates down to only fifteen. Many (very many) candidates chose to apply for one of our suggestions, which is fine, but keep in mind that when you apply for one of our suggestions, you're competing yourself against hundreds of others for the same idea. When you propose your own idea, you're competing your <i>idea</i> against just a handful of other ideas, as well highlighting your creativity</p> -<p>The students may choose any project they like; it doesn't even have to be related to Gaim (although we'd be better able to mentor you if it were). If you have a great idea you've been looking for an opportunity to write, let us know about it! We're especially interested in hearing really innovative, ground-breaking, never-before-heard-of uses of instant messaging. Do something really experimental!</p> +<h1 id="accepted">Accepted Summer of Code Projects</h1> +<p><i>No projects have yet been accepted.</i></p> -<p>However, if you just want to help out Gaim where the developers think we need help the most (which we'd really appreciate), we've compiled a brief list of projects we'd like to help students complete this summer:</p> -<p>When you apply for a project, the "proposal," section is the only thing we have on which to base our opinion. In that secion alone, you must convince us and Google to fund your proposal. Google links to the Perl foundation's <a href="http://www.perlfoundation.org/gc/grants/proposals.html">HOWTO</a> on writing a proposal. Here's a brief list of things that we especially want to know:</p> -<ul> -<li><b>Academic Merit</b> We're really excited about making this summer an educational experience for all the students involved. Tell us what you expect to learn from your project. We're carefully choosing the projects listed here to ensure you need to actually design stuff from the ground up, despite the temptation to just let Google foot the bill for tedious, mindless tasks we just don't want to do ourselves.</li> -<li><b>Qualifications</b> This is especially true if you apply for one of the project in this list. You will likely be competing against other candidates, so tell us what makes you a better choice than others.</li> -<li><b>Coolness</b> If you have your own idea, just convince us that it's really cool. We're interested in seeing a lot of unique, creative, innovative ideas using IM in ways noone has thought of before. -</ul> +<h1 id="available">Rejected Summer of Code Project Suggestions</h1> -<p>We will be adding more projects soon, as we think of them!</p> +<p>Here are some of the suggestions proposed by Gaim developers for this year's Summer of Code.</p> -<h1 id="accepted">Accepted Summer of Code Projects</h1> -<p>The following projects were accepted to receive Google sponsorship in their summer of code project. I've included here a brief synopsis of the project, and the name of the person working on it.</p> - <table> -<tr><td class="highlight">Rendezvous Plugin - <a href="juanjo">Juanjo Molinero Horno</a></td></tr> -<tr><td><p>Apple iChat uses a protocol formerly called Rendezvous (renamed Bonjour due to trademark disputes) to provide a buddy list and messaging among people on the same local network. Gaim developer Mark Doliner has started a Rendezvous plugin, but it is far from release-ready. Your task this summer will be to complete this protocol support.</p> -<p>Rendezvous uses multicast DNS for presence support and the technologies used are all open and documented. Access to a Macintosh running iChat would certainly be useful, though.</p></td></tr> +<tr><td class="highlight">Improved Privacy Support</td></tr> +<tr><td><p>As Gaim began life as an AIM client, there are still some parts that are somewhat AIM-centric. Currently, one of the areas most uncomfortable for users of other protocols is privacy support. Your task would be to improve Gaim's privacy support.</p> +<p>This job entails surveying other IM clients, and determining what sort of privacy capabilities they offer, abstracting these all into a concise Gaim backend API, designing a UI capable of handling the diversity of different privacy features, then finally, implementing and documenting your work.</p> +</td></tr> -<tr><td class="highlight">D-Busified gaim-remote - <a href="piotr">Piotr Zielinski</a></td></tr> -<tr><td><p>On UNIX systems, Gaim includes a separate utility called <code>gaim-remote</code>. This utility is used to execute commands on an existing Gaim session. <code>gaim-remote</code> uses a protocol we made up called CUI which was initially designed to allow entire user interfaces communicate with a headless Gaim "core" process. This idea has not been developed at all, but the limitations of that protocol's design prevent <code>gaim-remote</code> from doing things people actually want to do with it. Further, other applications would love to communicate with a Gaim process for desktop integration reasons. Requiring each of these to implement the CUI protocol is unnecessarily cruel to them.</p> -<p>D-Bus is an emerging system for inter-process communication. It provides mechanisms for applications to locate and send messages to each other. Although still in active development, it seems likely that D-Bus will soon be an essiential element of the UNIX desktop.</p> -<p>Your job for the summer will be to rewrite the <code>gaim-remote</code> functionality using D-Bus. As D-Bus becomes <i>the</i> standard for communicating messages between applications, all these applications will have the ability to communicate with Gaim. In addition to duplicating the functionality already present in <code>gaim-remote</code> you will be adding tons more features that can be used to remotely manage a Gaim session (changing status, reading the buddy list, sending messages, etc.).</p></td></tr> +<tr><td class="highlight">Certificate Manager</td></tr> +<tr><td><p>Some of our protocols, namely Jabber, IRC, and MSN, use SSL encryption. However, Gaim currently has no way to ensure the user that she's actually connecting to the correct server. If a malicious cracker stood between you and your Jabber server, he could trick you into thinking he was the server. You would think your messages are encrypted, but the malicious cracker could read them all.</p> -<tr><td class="highlight">Embedded Perl Interpreter - <a href="john">John Kelm</a></td></tr> -<tr><td><p>Gaim has supported perl scripting since September, 2000. Unfortunately, the current embedded perl interpreter is in poor shape due to a rapidly changing API and nobody working on Perl. At present, it is generally not possible to do anything useful in a perl script</p> -<p>Your task this summer will be to bring the perl plugin up-to-date with the current API. This work is mostly done in XS, a system designed for wrapping C functions in perl. Essentially, every function in the Gaim <a href="/api/">plugin API</a> will need to be wrapped in perl. It will probably also help if you develop some way of testing that each function works as it should.</p></td></tr> - -<tr><td class="highlight">Embedded Mono Runtime - <a href="andrews">Andrew Scukanec</a></td></tr> -<tr><td><p>Mono is a free software implementation of Microsoft's .NET platform. .NET programs compile to byte code and are then "Just-In-Time" compiled at runtime (this is similar to Java). We would like to see Gaim plugins written using .NET. Because of the byte-code nature of .NET, these plugins could be written in a large number of languages, including C#, and compiled to work on any Gaim, regardless of platform, making plugin distribution much easier.</p> -<p>Your task for the summer is to embed the Mono runtime into Gaim and provide a .NET wrapper to Gaim's API. There exists a lot of good documentation for doing this.</p></td></tr> - -<tr><td class="highlight">UPnP NAT Traversal - <a href="adam">Adam J. Warrington</a></td></tr> -<tr><td><p>Tons of people have difficulty transferring files or otherwise directly connecting with Gaim because they're behind a NAT device. NAT devices allow more than one host to share a single IP address and are very useful for users with multiple computers but a single Internet connection. These devices are usually sold as "broadband routers." Unfortunately, because multiple hosts share a single IP address, neither can be addressed specifically without additional (confusing) configuration.</p> -<p>UPnP is a protocol from Microsoft that, among other things, provides NAT traversal: a way to allow each host behind the NAT device to receive incoming connections. Implementing this in Gaim would fix most file transfer problems for people with UPnP-enabled NAT devices (most currently sold are). Your task this summer is to implement just enough of UPnP in Gaim to allow for NAT-transparency.</p></td></tr> - -<tr><td class="highlight">Gadu-Gadu Support - <a href="bartosz">Bartosz Oler</a></td></tr> -<tr><td><p>Gadu-Gadu is a Polish instant messaging protocol that Gaim has supported since December, 2001. However, since its original maintainer lost interest, its support in Gaim has lacked the love needed to ensure it works, much less up-to-date with the features of the official Gadu-Gadu client.</p> -<p>Your task this summer will be to bring Gadu-Gadu up-to-date with the functionality of the current official Gadu-Gadu application. Speaking Polish is definitely a plus (actually <i>being</i> Polish and a Gadu-Gadu user even more so). There exist working free software implementations of Gadu-Gadu already, so reverse engineering may not be necessary</p></td></tr> - -<tr><td class="highlight">SIP/SIMPLE - <a href="thomas">Thomas Butter</a></td></tr> -<tr><td><p>SIP is another popular protocol used for VoIP, and it also has an IM analog in the form of SIP/SIMPLE. Your task this summer will be to write a plugin that supports SIP/SIMPLE. SIP/SIMPLE is an open protocol with a documented specification.</p></td></tr> - -<tr><td class="highlight">ICQ File Transfer - <a href="jonathan">Jonathan Clark</a></td></tr> -<tr><td><p>The ICQ protocol supports file transfer, but Gaim doesn't implement it. Your task this summer is to fully implement ICQ file transfer in Gaim's OSCAR plugin. This may involve reverse engineering the protocol, but there do exist free software implementations you can use as a reference.</p></td></tr> - -<tr><td class="highlight">SSL Certificate Validation - <a href="erin">Erin Miller</a></td></tr> -<tr><td>Some of our protocols, namely Jabber, IRC, and MSN, use SSL encryption. However, Gaim currently has no way to ensure the user that she's actually connecting to the correct server. If a malicious cracker stood between you and your Jabber server, he could trick you into thinking he was the server. You would think your messages are encrypted, but the malicious cracker could read them all.</p> <p>This is solved by a system known as "certificates." An SSL certificate authenticates that the server is who it claims to be. If the user trusts the certificate, she'll know her communications are safe.</p> + <p>Your task this summer is to write a certificate manager for Gaim. This manager would display SSL certificates to the user and keep track of those the user has trusted. This way, the first time the user connects to a server, she'll be required to confirm the certificate is valid; subsequent connections to the same server with the same certificate will not prompt her again.</p> + <p>This same interface can be used elsewhere in Gaim not directly related to SSL. For instance, several third-party plugins exist to encrypt Gaim messages. These would benefit from a generic certificate manager.</p></td></tr> -<!-- Originals --> -<tr><td class="highlight">Music Messaging - <a href="christian">Christian Muise</a></td></tr> -<tr><td><p>Musicians are known to be social, but this rarely presents itself outside of the typical garage jam sessions, all night caleighs at the camp, or swingin blues sets at a smoky bar (you get the idea). With the new age, plenty of software has been made available for musicians, but it is all for independent work, or for those music gatherings.</p> -<p>What I propose is a music meet of the new age. Real-time has been explored (biggest draw back being latency times - but still dealt with formidably), but what about the casual input? When we chat on Gaim it is a social event. So far no developer has tapped into making that social arena appeal to the musician looking to socialize as a musician.</p> -<p>What I envision is software to connect musicians in a suite of different activities they could partake in. From composing music to playing music for others, etc. For the scope of SOC (Summer of Code), I propose a feature added to Gaim that will allow 2 (or more) people to actively edit a score of music in real-time. After which they can export it to MIDI and do as they please with the composition.</p> -<p>The ability to send music, ideas, riffs, and solos is something that a musician always dreams of, and with the technology available today, it's pretty surprising to see the lack of methods available. This is what Music Messaging would aim to overcome.</p></td></tr> -<tr><td class="highlight">A more flexible type of buddylist - <a href="jesper">Jesper Stemann Andersen</a></td></tr> -<tr><td><p>Though groups can help the user sort his buddylist, a buddylist can easily grow to an unmanageable size, without the user wanting to actually delete "buddies". This project proposes a method to identify and group the "buddies" the user actually seems to have an interest in communicating with.</p> -<p>The idea is to use statistics on the users communication patterns to identify relations between the user and "buddies": 1-to-1 IM sessions can relate the user with one single buddy, while -Multi-participant IM sessions, in addition can relate buddies with regard to the user. -This way groups of "buddies" can automatically be identified.</p> -<p>Graphically the groups can be managed by the user. The user is placed in the center of a circle made up of his "buddies". "Buddies" with whom the user communicates a lot, should be positioned closer to the center, while less important "buddies" get pushed to the perifery. If relations has been established between buddies, these buddies can form a cycle of their own, with a center on the circle perifery.</p> -</td></tr> +<tr><td class="highlight">Profile and Improve Gaim's Performance</td></tr> +<tr><td><p>There are a number of places where Gaim runs slower than it needs to, or takes up more memory than is necessary. Your task this summer is to profile Gaim, determine where it's spending most of its time and memory, and optimize in order to improve performance.</p></td></tr> -<tr><td class="highlight">Routing SMS from PC to mobile over Bluetooth to be sent automatically to the desired mobile number - <a href="mel">Mel Dooki</a></td></tr> -<tr><td><p>This project's idea tends to relief people from the tedious task of writing SMS's on mobile phones. -Instead, the user of this application would be provided with an interface on the computer that allows him/her to write the message on the computer using the keyboard. The message will then be routed from the PC to the mobile phone using Bluetooth link. -The mobile phone will send the SMS automatically to the desired number. </p></td></tr> +<tr><td class="highlight">MSN Protocol Upgrade</td></tr> +<tr><td><p>Newer features of MSN Messenger are available only in protocols greater than what Gaim currently supports. The latest version of the MSN protocol is MSNP13, used by the MSN Messenger 8.0 beta.</p> +<p>Your task this summer is to implement the newest MSN Messenger protocol, and as many of its features as time allows.</p></td></tr> -<tr><td class="highlight">Crazy Chat - <a href="charlie">Charlie Stockman</a></td></tr> -<tr><td><p>I plan to update and extend a plugin called Crazy Chat that I made for Gaim for my senior software project at Stanford University. During a Crazy Chat session, the program uses the input from the local user’s webcam, and does image processing to detect key facial features such as the eyes and the corners of the mouth. It uses these features to determine parameters that describe the user’s expression, such as head tilt, head distance, mouth shape, and blinking. These parameters are then sent across the network, and are used to render a 3D “cartoony” version of the person’s face on the remote user’s computer (in the current version of Crazy Chat, there is a dog and a shark face). </p> -<p>Crazy Chat has several appealing benefits beyond the inherent fun of being turned into a three dimensional Labrador. The first is that it is extremely low bandwidth. For each frame, we only need to send about one hundred bytes, rather than many kilobytes for streaming video. This could potentially allow for large multi-conference Crazy Chats, in which each user represents a different creature in an online RPG troop. Another advantage of Crazy Chat over ordinary video conferencing is that it allows the user a higher degree of privacy. Rolled eyes, bed hair and messy rooms are all suppressed behind the exaggerated smiles of an urban hyena or razor sharp winks of a lady killer whale. And of course the inherent fun alluded to earlier should not be casually dismissed. Gaim is first and foremost and entertainment application.</p> -</td></tr> +<tr><td class="highlight"></td>Log Management and Searching</td></tr> +<tr><td><p>Gaim's current logging system is powerful and modularlly extensible, however it would benefit from added functionality. Moving searching into the logger modules, for instance, could greatly improve search performance. The log viewer should also allow you to delete logs directly from the UI. The UI for log management should be improved to reflect your design changes.</p> </td></tr> -<tr><td class="highlight">Doodle - <a href="andrewd">Andrew Dieffenbach</a></td></tr> -<tr><td><p>I propose to make a Gaim plugin that allows users to interact with others using the Yahoo Instant Messenger IMVironment service 'Doodle.'</p> -<p>'Doodle' provides the ability for users to draw and sketch together in real-time. Some subject matter is difficult for many to verbalize; therefore, 'Doodle' is an extremely valuable tool for communication.</p> -<p>Gaim provides users with a unified and unique set of features. There are only a few which it lacks--a handful of such features one sacrifices while using and supporting Gaim.</p> -<p>The addition of a 'Doodle'-like application for Gaim would widen Gaim's popularity and the open-source platforms it supports as well.</p> -</td></tr> - -<tr><td class="highlight">Collaborative Code Editor - <a href="cristhian">Chisthian Kim</a></td></tr> -<tr><td><p>A plug-in for gaim that would allow developers to join a chat room where they can collaboratively edit files specially tailored for coding. It would have color syntaxing for various languages, locking portions of code and it would be highlighted with a color that will be assigned to each user who joins the chatroom, synchronizing of code and much more.</p></td></tr> </table> - -<h1 id="available">Rejected Summer of Code Project Suggestions</h1> - -<p>The following projects were suggested by the Gaim team, and, despite numerous excellent applications for each, we decided the ideas were not as strong as some of the original ideas suggested.</p> - -<table> -<tr><td class="highlight">RVP Support</td></tr> -<tr><td><p>RVP is the protocol used by Microsoft Exchange messaging. It is used mostly in corporate environments. Your task this summer is to write support for the RVP protocol used by Exchange. The protocol is open and well documented, but to test it, you will need to provide your own access to an Exchange server; no public servers exist.</p></td></tr> - -<tr><td class="highlight">Skype Support</td></tr> -<tr><td><p>The popular Voice Over IP (VoIP) program Skype also supports plain-text instant messaging. Your task for the summer will be to write a plugin that implements this portion of the Skype protocol; you will not need to implement the VoIP protocol. This will probably require reverse engineering the protocol.</p></td></tr> - - -<tr><td class="highlight">MSN File Transfer</td></tr> -<tr><td>The MSN protocol supports several different file transfer methods which are used under different network conditions. Currently, Gaim only supports a method that transfers through the MSN servers. While this is guaranteed to work under any network condition (even if both sides are behind NAT devices, for instance), it is unbearably slow.</p> -<p>Your task this summer is to implement at least one other MSN file transfer protocol: one that directly connects the two clients. You will also need to provide a mechanism that will easily fallback on the slow through-the-server method in case your new method fails. This may involve reverse engineering, but there are other free software implementations you may use as a reference.</p></td></tr> - -<tr><td class="highlight">Improved User Interface</td></tr> -<tr><td>In recent years, the open source world has been focusing increasingly on good user interfaces and effect human-computer interaction. Some changes have already been made to Gaim to improve its usability, but there is still much work to be done.</p> -<p>Your task this summer is to perform a full review of the Gaim user interface, propose a list of improvements to the gaim-devel mailing list, and then carry out the desired changes by making the appropriate modifications. Our goal is to make the computer do the work instead of the user.</p> -<p>Knowledge of human computer interaction is a plus. Some useful references are the <a href="http://developer.gnome.org/projects/gup/hig/">GNOME Human Interface Guidelines</a>, the <a href="http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html">Apple Human Interface Guidelines</a>, Havoc's essay on <a href="http://www106.pair.com/rhp/free-software-ui.html">Free Software UI</a>, the book <a href="http://www.cooper.com/content/insights/cooper_books.asp#TIARTA"><i>The Inmates are Running the Asylum</i></a>, and any other book on software usability.</p></td></tr> -</table> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |