Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mattgreen/openim
Extensible Win32 instant messaging client
https://github.com/mattgreen/openim
Last synced: 29 days ago
JSON representation
Extensible Win32 instant messaging client
- Host: GitHub
- URL: https://github.com/mattgreen/openim
- Owner: mattgreen
- Created: 2011-12-30T01:32:08.000Z (about 13 years ago)
- Default Branch: master
- Last Pushed: 2012-01-06T21:08:43.000Z (about 13 years ago)
- Last Synced: 2024-10-06T04:07:00.706Z (3 months ago)
- Language: C++
- Homepage:
- Size: 520 KB
- Stars: 2
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
### Introduction
Many people experiment in college; I experimented with software architecture. Over the course of a few years in college I hacked on a component-based GUI Win32 C++ instant messaging client that interoperates with AOL's proprietary OSCAR protocol.### Why?
At the time, there were few quality IM clients on the Windows platform.
Most were either unable to use all of the features of AIM, or had
subpar UI. (Unfortunately, this situation hasn't changed much.)### What makes this interesting?
OpenIM uses a publish/subscribe architecture to minimize coupling
between components. This results in components that are
smaller, easier to reason about, and test. For example, the AIM protocol
component has no knowledge of any UI; it merely responds to method calls
and sends out events (such as AccountConnectedEvent) as they occur. The EventManager is responsible for distributing Events to registered components. Partitioning features along component boundaries makes development incredibly pleasant.(Also, the use of CRTP in AccountEvents.hpp should induce the Inception theme in
your head.)### What became of it?
I graduated, and became more social. Regardless, I thoroughly enjoyed the late nights spent hacking on it, and do
believe it is possible to make nice software, even in C++.