Iris: An MSN Messenger Client with a Cross-Platform Core

Page created by Carol Myers
 
CONTINUE READING
Iris: An MSN Messenger Client with a Cross-Platform Core
Iris: An MSN Messenger Client with a Cross-Platform Core

               Nicholas Murdoch                                            Jacob Young
         Department of Computer Science                            Department of Computer Science
               University of Kent                                        University of Kent
               nsm2@kent.ac.uk                                            jy8@kent.ac.uk

                       Abstract                              (MSN) Messenger protocol utilised by Microsoft’s
                                                             standard instant messaging client, MSN Messenger.
    Instant messaging has fast become an essential tool          Many open-source messenger clients support the
for the common computer user over an array of many           MSN Messenger protocol due to MSN Messenger’s
different messaging protocols and instant messenger          massive worldwide popularity with the common user
clients. One of the most globally recognised clients is      and the main motivation behind the investigation was
Microsoft’s MSN Messenger which utilises the MSN             to look at developing a client that has a much broader
Messenger protocol. In developing clients, it is             appeal to this user and the factors relating to this. Such
necessary to look at both the requirements of the            a client evidently needs to possess properties that many
server and the requirements of the user. This paper          other clients do not and forming a software solution
focuses on developing such a client and the factors          that is less specific in its target set of users could only
that affect this process. Iris Messenger aims to             be achieved through effective portability so it was
provide essential instant messaging features along           necessary to look at how software could be designed
with providing a simple environment for users wishing        and developed to be as portable as possible leaving
to chat to other users over MSN without the need to          scope for unlimited extension. We looked at how we
use Microsoft’s standard client. We explore the design       could achieve this whilst still providing the
and development stages and reflect on the technical          functionality, usability and coherent graphical user
aspects of the project in terms of the decisions that        interface that is essential to the appeal of such a client.
were taken throughout the process of research,                   The Iris Messenger client would initially be
analysis and implementation of our own Iris                  developed for the Debian Linux and Microsoft
Messenger client.                                            Windows platforms to demonstrate its portability and
                                                             in terms of development tools, it was necessary to
    1. Introduction                                          focus on tools unfamiliar to us and more challenging to
                                                             utilise in order to provide a solution that reflected the
   The rise of the Internet has provided the common          requirements and our objectives. Using the ANSI C
computer user with an extremely powerful array of            programming language allowed for greater versatility
tools for communication purposes, none more                  on every level and coupled with the graphics tools
ubiquitous or useable than the instant messaging client.     selected for interface design, the Win32 API for
The concept of instant messaging revolves around the         Windows and GTK+ for Linux formed a powerful
ability of computer users to converse over a connected       means of developing lightweight and efficient
network in pseudo-real time and although the                 software. With this versatility came increased
parameters of this are infinitely variable, the principles   complexity making these tools and underlying
remain constant. The underlying mechanics of Internet        concepts far more difficult to understand and begin
“chat” generally involve a designated server with            using. This provided us with the greatest technological
which clients exchange requests utilising a set              challenge of all.
protocol. This then leads to the server exchanging
messages between clients. Although many different                2. Background and Resources
protocols exist, this paper and the accompanying
documentation focuses on the Microsoft Network                 The project relied heavily on several core resources
                                                             which were utilised at every stage of the design and
Iris: An MSN Messenger Client with a Cross-Platform Core
development process. Initially, research and analysis      and requirement of space. With these properties being
assisted in the formation of the software requirements     its main development considerations and very similar
based on the functionality of the client and led to the    to those of Iris Messenger, it provided an effective
conception and design of the software model. The           model for how the client could be developed and what
basis for these requirements and initial model and         the final piece of software should be capable of.
prototype was Microsoft’s MSN Messenger which was
analysed in great detail ([1] and the software itself).    2.3. Protocol Reference
Actually using the software and Microsoft’s online
references generally as analysis tools allowed the            In terms of the protocol, research and definitive
features of MSN Messenger to be broken down to             referencing was made more challenging by the fact
form a guide to the MSN protocol and the instant           that Microsoft do not release details of their MSN
messaging functionality that it supports. This then led    Messenger protocols and so it was necessary to
to forming the functionality that our own Iris             discover a third party reference for client development
Messenger client would eventually support. It was also     which suited our needs. The hypothetic.org page [5] is
necessary to look at the interface requirements and        a unique and extensive reference for the MSN
again, Messenger was a possible template on which to       Messenger Protocol Version 8 (MSNP8) providing
base initial ideas. As the main inspiration behind         examples of code and many possible multiple
design, it provided a subset of features from which we     operations on the protocol. It provided details of
could draw.                                                exchanges with the MSN server and the circumstances
                                                           under which such exchanges may occur. As an
2.1. Alternative Clients                                   invaluable resource to development of the client, the
                                                           hypothetic.org web page [5] was not only an
    Fully understanding the MSN Messenger                  incomparable guide to specific protocol commands, it
functionality and forming requirements around it           also detailed solutions to problems and common
required the further analysis of third party open-source   protocol errors. It was indispensable throughout
MSN Messenger clients which demonstrated the               development and will undoubtedly continue to be
versatility of the MSN Messenger protocol through          referenced for maintenance and extension.
extending the functionality offered by MSN
Messenger. They also allowed us to see some of the            Utilising this array of resources aided the design
limitations that Microsoft’s client imposes and to look    and development process leading to the conception of
at ways in which these limitations could be removed if     the project’s primary objectives and its intended
necessary. Mercury Messenger [2] with its extensive        achievements.
list of features illustrates how functionality can be
realistically extended and the further implementation          3. Aims
involved in this. Gaim Messenger client [3]
demonstrates a unique interface which has also                 The project had several aims which were derived
contributed to design and interpretation of Iris.          from the initial analysis and investigation, in order to
Looking at these clients simply provided a contrast        achieve our main objective, we aimed to become
enriching the influences of design and development far     familiar with implementation tools that we previously
more than analysing a single client could have done.       had little or no experience of using. Initially, it was
                                                           necessary to look in detail at the ANSI C programming
2.2. Miniaim                                               language and to become comfortable with developing
                                                           in it. This process had to be repeated with the graphics
   In terms of development considerations and the          tools for interface development and the aim was
motivation to build a piece of software with broad         similarly to become comfortable with and learn how to
appeal, we analysed another open-source client             use these tools in a development environment.
possessing the required properties of the Iris                 In addition to this, the most important aspect of
Messenger client. Miniaim [3], although it does not        building an MSN Messenger client was handling the
support the MSN Messenger protocol favouring               Messenger protocol and although an extensive
AOL’s (AIM) protocol, Miniaim provided us with a           knowledge was not necessary for this purpose, a basic
unique example of a client similar in concept to our       grasp of the protocol and its operations proved to be
own. Miniaim is a considerably lightweight piece of        essential.
software, designed to be very efficient in its operation
Finally the overall main objective of the project was     field of instant messaging and the operation of the
to design and develop an MSN Messenger client using           MSN Messenger protocol. In addition, for
the knowledge we had gained and the tools that we had         development purposes, gaining the ability to use tools
learned to use. This objective was formed with                of which we had no real experience has been greatly
versatility at its core, analysing third party Messenger      advantageous. Overall, in terms of the knowledge we
clients revealed many inefficiencies which would              have gained from designing and developing Iris
exclude certain sets of users and thus reduce the broad       Messenger, the project has been successful leaving
appeal of the client considerably. We decided that this       considerable scope for extension in the future. The
appeal should encompass a variety of users but focus          following technical content sections set out the overall
upon non-Microsoft users, those users that prefer third       results and scientific and technical achievements of the
party non-Microsoft authored software and perhaps             project illustrating the development work that has
running lightweight operating systems with hardware           contributed towards the initial release of Iris
incapable of supporting inefficient and expansive             Messenger.
software.
    Evidently any client has to be portable to satisfy this   4.1. Language:
type of requirement and this portability was a primary
consideration for development. Software inefficiency             There were several programming languages suited
often introduces limitations in terms of the hardware         to this task. When deciding on which language to use,
that it will effectively run on and some third party          we considered the following points:
Messenger clients require considerable disk space to
install due to the way in which they have been written.       Efficiency: MSN requires several connections to be
This was a scenario that we attempted to avoid. We felt       open to the Internet, which users have noticed can
that the solution to the problem was to strip down the        cause the application to use up a lot of resources as a
implementation tools in order to develop a piece of           result. As such, we needed a language that was fast and
software that could be considered lightweight but             efficient so as to compensate for this.
remain robust.
    In light of this, such a client had to be versatile and   Graphical User Interface: we required a language
prove to be efficient in functional use whilst being          that had GUI Toolkits available for it for both Linux
lightweight in its resource requirements. This client         and Windows, the two main platforms we were
had to be portable or cross-platform in order to have a       developing for. Ideally a language that had toolkit
broader appeal to the common user and provide a               support on any Operating System would be best for
simple yet effective graphical user interface for the         writing any kind of truly cross-platform client. We
common user. The decision was made to develop Iris            considered also implementing a text-only interface, but
Messenger for two initial platforms: Microsoft                decided that the time and resources were simply not
Windows and Debian Linux due to their wide spread             available to devote to developing a third UI.
use and to demonstrate full portability. It had already
been decided that Iris would be written in C but              Challenge: We were both eager to develop our
interface development to fit over the top of this would       understanding of unfamiliar languages, and as we
be undertaken using the win32 API for Windows and             undertook a similar project in the previous year
GTK+ graphics for Linux to retain versatility and             (although not nearly as complex in protocol terms as
satisfy development considerations. In addition the           the MSN protocol), we wanted to use a different
client was to be developed with unlimited scope for           language for variation.
extension so that porting it to additional platforms is as
uncomplicated as possible in the future.                         This left us with several options:

    4. Technical Details                                      Sun Microsystems Java: We are both very familiar
                                                              with Java, having utilised it to write a chat server the
   In technical terms we were able to achieve a great         previous year. However, as such it would have been
deal in the timescale available considering the size of       trivial to transfer that knowledge into developing an
the development team and the complications that the           MSN client quickly, which defeated our aims. In
project experienced. Extensive analysis and research          addition to this, the Java windowing toolkit AWT
coupled with the design and development stages led to         looks outdated, and the newer toolkit Swing is well
us gaining a great deal of technical knowledge in the         known to use considerable system resources. It also
                                                              lacks a familiar look because it does not use native
Figure 1. Initial redesign of the Iris Buddy List         Figure 2. Second redesign of the Iris Buddy List

widgets. Although we were not developing for the          language that didn't fully support the object-oriented
Apple MacOS, we did bear in mind that this is a           design model.
possible extension of the project, and Sun's version of
Swing is unpopular with Apple users as it does not           We decided to use C to develop Iris Messenger,
respect the MacOS style of locating the menu at the          This was due to the versatility and efficiency it
head of the screen in addition to other such              provided and for the challenging aspects pf
inaccuracies.                                             implementation, but also due to the two ideal toolkits
                                                          available fro the supported platforms. Of course, C++
C++ / C#: Neither of us had programmed with C++ or        would have allowed us to write in those toolkits simply
C#, which made them both reasonable suggestions for       by using the C subset of C++, but we wanted to keep
developing in. C# however is not a favorite amongst       the code base in a single language to avoid over-
Linux users, which really excluded it from being          complicating the task.
considered. C++ was a good option with regards to
development for non-Microsoft users because it is a       4.2. GUI Design
well known and popular language. It also had the Qt
window toolkit available to it, used predominantly in         The design of Iris' GUI was an iterative process. As
the K Desktop Environment on Unix (KDE). C++ is           we did not aim to implement all of the MSNP8
also a fast language, and has several compilers           features, we couldn't simply design a GUI that featured
available for it.                                         all of them and restrict or conceal any unavailable
                                                          features. As such, as more functionality was added to
C: Again, both developers had had limited experience      the client, the design of the GUI was modified and
with C programming although it was always                 altered. Figures 1 and 2 for the Linux version of the
considered. It is a very fast and efficient language      client show how merely adding some buttons required
since it compiles practically line-by-line down to        a small shift in design. This is demonstrated when
machine assembler. C had the advantage that the native    considering the Iris image moving to above the main
Win32 API is implemented in it, and there was also a      set of buttons, to help enforce the relationship between
Unix toolkit available, The Gimp Toolkit (GTK),           the functionality they offer and the main buddy list.
which is used predominantly in the GNOME Desktop          Keeping the Iris image below the buttons may have
Environment. C also presented us with a considerable      inferred a lack of interaction with the main buddy list.
challenge; we were very much used to the object
orientated approach to programming, so it would be        4.3. Experimental Work
interesting to learn how to program efficiently in a
As mentioned, it would be impossible to implement             example if a buddy changed status, they might want to
every aspect of the MSNP8 protocol in the given time-            produce a window, or change some text in the buddy
frame, so we had to prioritise and include functionality         list, print a message to a chat window with that person,
that would be most important to a potential user of the          or set up some kind of automated message to that user.
system then implement this functionality first.                      The original design of Iris' architecture was slightly
   This was slightly skewed by our capabilities, for             more fragmented, as shown in Figure 4. It was
instance webcam conferences might be a desired                   expected that socket code and “Terminal” (UI) code
feature, but even a large-scale client such as Trillian          would be separated. However, as we discovered when
[6] took over a year to back-engineer and implement              looking at GUI tools, they are very closely linked,
this. In addition, certain components and features               since windows use calls like poll() themselves to listen
could not be implemented until others were completed,            for signals. So the same function in the platform-
for instance file transfer operations needed chat                specific code would determine which callback
capabilities first, since the invitation to transfer a file is   functions to use for both GUI events and networking
sent using the standard MSG messaging functionality.             events similarly.
   We came up with a rough ordered list of
functionality, sorted by importance and feasibility to
implement:

•    Log into the Notification Server.
•    Look at the user's Forward List (aka Buddy List).
•    Chat with another user.
•    Add, remove, block, and unblock other users.
•    Change display name and mark oneself as Away
     from the computer.

  These were the defining aspects which, when
implemented, would allow us to declare Iris as Beta
Version 1.

4.4. Architectural Design
                                                                   Figure 3. Final architectural design of Iris
    Iris' Architecture is designed such that the main
core of the program – which handles sending data and
receiving data from the server and deciding what to do
with it – is isolated from any machine-dependent code
that is used to display the GUI, set up networking
select()/poll() interfaces (which are implemented with
the window toolkits), and so on.
    To allow Iris' core to work without any knowledge
of the platform-specific code, there has to be an
interface which the GUI & Networking layer
implements. Iris provides a set of function headers in
its main header file which it expects to be implemented
by the external code. Some of the methods can feasibly
be left as simple declarations; for example, the
function for setting a buddy's changed status is void              Figure 4. Initial architectural design of Iris
extn_set_buddy_status (char* login,
char* status);, which could be left blank if (for
whatever reason) somebody was implementing a front                   5. User Evaluation and Testing
end for Iris that didn't include the capability to show
buddy statuses. The functions were named quite                      We believe that the best way that any program
generically to give any developer freedom over what              could be tested for bugs and user interface problems is
their interface should do in any particular event, for           to release a hopefully-stable version to the common
                                                                 user, and have them report back with any problems
they discovered. This is generally referred to as Beta       other user is part of a conversation when it is invited to
Testing, and relies on there being a Beta (hopefully-        one, and neither does it provide any functionality for
stable) version to distribute. However, due to time          inviting additional users into a conversation.
restraints, we were not able to release any fully
functional beta version of the Iris Messenger software       Support for Buddy Icon: This is a popular aspect of
at this stage. As a result, the testing undertaken was       MSN Messenger and also helps to make the chat
largely based on the Alpha versions of code, internally.     windows more visually interesting.
If, for instance, we produced the code for a new
button, we would launch the software, and attempt to         File transfer: This is a very useful feature enabling
find a circumstance in which it didn't work by carrying      contacts to share files without requiring space on a
out a series of functional tests. For example, the           web server.
Remove Buddy button might do something unexpected
if a buddy hadn't been selected from the buddy list as           In addition to the above, it is also worth bearing in
yet. Drop down boxes such as Set Status should have          mind that, although MSNP8 is the most recently
all options tested to make sure no minor coding              documented version of the MSN Protocol, there is also
problems had occurred. At other times, bugs were             MSNP9 and MSNP10 in use by the standard Microsoft
more obvious, with the dreaded Segmentation Fault            MSN client, both of which are yet to be openly
hampering code half way through a log-in cycle. In           detailed. It would be interesting to discover how the
that case, it would be a matter of immediate correction      most recent protocols work, although the use of them
once we had established where the program was going          is limited until Iris reached a stage where it could
wrong.                                                       utilise the newer functionality to a satisfactory degree.
    As for User Interface design, it would be imperative
to collect some feedback from users as to how intuitive          7. Conclusions
they found our program to use. Evidence suggests that
some people prefer Iris' buttons at the top of the buddy         The project has been relatively successful in
list window, whereas others would rather have set of         achieving the original aims that were set out in the
menus providing functionality. Human Computer                analysis and specification stages. Although in terms of
Interface (HCI) testing should be used to determine if       physical software, the initial Linux release of the client
the method of operation is obvious enough and would          does not satisfy all of the requirements that the project
also be useful to test to see if our informative and error   specification outlined, the development process has
dialog box messages were helpful or plainly confusing.       been extremely rewarding in terms of the knowledge
For HCI testing, we would set up a list of scenarios         that both developers have gained. The initial release of
that we think users may follow in the program and            the client (Iris Messenger beta01) provides a very basic
observe a user as they attempted to perform these            subset of Microsoft MSN Messenger’s functionality
scenarios, watching for confusion and encouraging            and the process of developing it has been highly
them to describe what they think of the interface as         challenging in the time available. The Windows
they progressed. The results from this sort of testing       release of Iris is delayed due to ongoing difficulties in
could be fed immediately back into design                    utilising the selected tools for interface design and the
modifications.                                               client has been set back. In its current state, the
                                                             Windows component does not implement any of the
    6. Future Development                                    required networking to connect with the MSN server
                                                             and although a basic interface is in place it is relatively
   There are many ways that Iris could be taken              limited in its functionality. Taking into consideration
forward in the future. Only the basic operations of the      the factors that have influenced the project such as
MSNP8 protocol have been incorporated in the current         complications with protocol operations and constraints
version and so there is considerable scope of future         on the development team, the final product (Iris for
extension. Some of the more obvious desired                  Linux) is satisfactory as an initial release. Iris
functionality is detailed:                                   Messenger in its current release cannot really be
                                                             compared with alternative clients that have had many
Support for group conversations: This would likely           releases and thorough beta testing over a considerable
involve minor alterations to Iris' architecture, since a     amount of time. It would require a more solid beta
one-on-one chat is simply a group chat with only two         release before any functionality could be fairly
users present. However, Iris currently assumes that no       compared and contrasted.
Although the idea behind the project itself was not           8. Acknowledgments
particularly original in terms of what is already
available to the user, it did provide an opportunity for        We would like to thank our project supervisor, Bob
learning and experiencing a style of development that        Eager (R.D.Eager@kent.ac.uk) for his continued
we were not previously used to. It is the experience         guidance and help to us throughout the year.
gained that is the most important aspect in undertaking
a project of this nature and it is important in retrospect       9. References
to consider the approach that we took to completing
the task. Considerable analysis and understanding of         [1] http://www.imagine-msn.com/messenger/default2.aspx?
the basis is necessary before any structural                 locale=en-gb, the MSN Messenger homepage.
development can begin to ensure that possible
complications will always be accounted for. In               [2] http://www.mercury.to,     the   Mercury    Messenger
addition, a willingness to learn and push oneself            homepage.
towards a new ways if working is essential when
undertaking a task on this scale. Iris has always been       [3] http://gaim.sourceforge.net, the Gaim Messenger client
developed with possible scope for extension and              homepage
addition of new layers of functionality because this
                                                             [4] http://miniaim.net, the miniaim homepage
intended to be part of its versatile appeal as a client.
Having been designed to be fully portable ensures that       [5] http://www.hypothetic.org/docs/msn, the primary
in the future, it can eventually be extended onto            unofficial reference for the MSN Messenger protocol.
additional platforms without constraint.
                                                             [6] http://www.ceruleanstudios.com, The Trillian homepage.
You can also read