RapidSMS Developers Guide/Code Structure
RapidSMS is an SMS framework based on Django (Python language). Yet, it is not simply a Django app.
RapidSMS Components 
RapidSMS depends on Django. You need to install Django before installing RapidSMS. This is the default Django (1.1) version.
RapidSMS (core) 
What is called the core or master branch is the original source code from RapidSMS. You can find it on github and it contains the following:
- apps/: a collection of bundled apps (webapp, reporters, httptester)
- lib/: RapidSMS libraries to handle SMS (Message, Connection, etc)
- lib/backends/: Backends which is an abstraction level to the source of Messages (http for tests, gsm for use with modems, kannel for operators)
- lib/router.py: Library handling the routing of Messages from backends to apps and return.
- lib/parsers: libraries to be used in Apps to help message parsing
- rapidsms: a script which includes Django's manage.py functionality used to start rapidsms router.
Third parties apps 
RapidSMS community produces a lot of apps which stays on creator's repositories. A sample setup most of the time includes one or more app from a third party repository.
Those repositories can either be forks of the core (and thus includes libraries and everything) or just repositories of apps.
Sample RapidSMS Installation 
~/sms ~/sms/apps ~/sms/apps/myapp ~/sources ~/sources/Django-1.1.1 ~/sources/rapidsms ~/sources/pygsm ~/sources/third-party