Writing the chat server
Let's start the development with the server-side code so that we have an endpoint to connect to before we begin writing the client. For this, we'll use an excellent Twisted framework that reduces many common, low-level networking tasks to a small number of lines of clean, relatively high-level Python code.
Tip
Compatibility notice
Twisted doesn't support Python 3 at the time of writing, so we'll assume that all the following Python code is intended to run on Python 2.7. It should be easy to port it to Python 3 eventually, as no deliberately incompatible design decisions are made. (On a related note, we'll also completely ignore Unicode-related issues, because resolving them properly depends on Python version.)
Twisted is an event-driven, low-level server framework, not unlike Node.js (in fact, Node.js design was influenced by Twisted). Quite similar to Kivy, the event-driven architecture means that we don't structure the code as a loop...