For those trying to get their heads around the FrontlineSMS source code, here's a quick breakdown of the FrontlineSMS architecture as it stands, and some brief notes about how we plan to move it forward.
The "FrontlineSMS Core" comprises the central controller of the FrontlineSMS system, managing interaction between phones, stored data such as contact details, and an end-user's view and manipulation of the system. The core is a mandatory part of any FrontlineSMS system, but it should be possible to extend or replace any other part of the system.
SMS Device Manager
The SMS device manager is the interface through which all SMS messages are sent and received. It manages connections to hardware SMS devices, such as mobile phones connected via cable or bluetooth, and software SMS devices such as Clickatell's HTTP service.
Hardware management is currently implemented via SMSLib, an open-source Java library allowing connection to AT- (Hayes)compatible devices. We're also planning to add support for Symbian phones and newer (FBUS) Nokia Series 40.
On the software side, FrontlineSMS currently supports sending SMS messages via Clickatell. In the works is support for sending and receiving with IntelliSMS. We are also modularising the software SMS device interface to allow for 3rd-party plugins to be added more easily.
The data controller handles connections to the underlying database. Currently, SQLite and MySQL are fully supported. In the future, we are hoping to move database handling to a 3rd-party library, which should massively improve the supported platforms. We also intend to implement a memory-only Data Controller to allow for running FrontlineSMS with increased privacy.
For the current UI layer, FrontlineSMS uses the ultra-lightweight Thinlet. It's a great little library - fast to get going and with great internationalisation support - the FrontlineSMS UI is already translated into 8 languages. Project contributors modifying this should bear in mind that we will be looking to modularise the UI code in the coming months.
Keywords can trigger FrontlineSMS to make a call over HTTP or on the local machine with details of the message received. These systems can then process the message data, and respond to FrontlineSMS with instructions to send new messages.
FrontlineForms is a proprietary add-on for FrontlineSMS allowing a mobile Java client to connect to FrontlineSMS and share data with it. More details of FrontlineForms will follow in another post.
FrontlineSMS relies on many free and open source projects, and is grateful to them all:
, Silk iconset
You can get to the source code from SourceForge