Lets take a rest and think about the architecture we have. Is it good? What can be improved?
Please use this page as a big blackboard: Simply take notes for yourself, do not question other peoples issues, do not defend your own. This might sound odd at the beginning, but we have time and things will get clearer.
The first step is to think about what you disklike in the current architecture and what you would like to see improved.
This is only brain storming, please do NOT think about solutions yet. This will happen in a separate step.
ZeroConf duplicates code
having to handle JIDs and contact instances is double effort.
our xmpppy fork look in gajim conf file for SSL certs
files in src/common/* should not touch GUI
separate GUI and XMPP code. Ideally, we wouldn't have a single file doing both, handling XMPP stuff and doing GUI.
there are two modules both called gajim.py
contacts are too loosely coupled to their account
roster_window does not honor the MVC pattern
contact class should do more low level things, actually done in roster_win (ex : roster_win.chg_contact_status()); and possibly other things related to contacts.
connection_handlers with its multiple inheritance is hard to understand and maintain
logging is not uniform - gajim.py, gtk_helpers.py and connection.py use "logging" module but scripts in src/common/xmpp/ use src/common/xmpp/debug.py
profile configuration is limited to options hardcoded in Config class (should be more 'open' or more 'general')
Lots of its should be replaced with a function that checks it. For example, a function send_would_leak_presence(jid) should be added to check if we can send safely without leaking presence so we finally can stop leaking presences everywhere in Gajim.