One Application. A Small Team.
SecurityNet seems like it is a single application.
In one sense, that's true.
You install SecurityNet.
You start SecurityNet.
You use SecurityNet.
From the user's point of view, it behaves as one application.
Behind the scenes, however, several small specialist programs quietly work together.
Each has one responsibility.
Together they create the experience the user sees.
I learned many years ago that large programs often become easier to understand when each part has a clearly defined job.
Rather than trying to build one enormous application that did everything, I chose to divide SecurityNet into a small team.
Each member of that team knows its own responsibilities.
The main SecurityNet application is the part users interact with every day.
It's where contacts are managed.
Files are selected.
Messages are written.
Settings are configured.
From the user's perspective, this is SecurityNet.
Behind the scenes, another component quietly watches for work to do.
It checks whether authorised contacts are available.
It watches for transfers that can begin.
It keeps an eye on activity in the background.
Most users never notice it.
That's exactly how I wanted it.
Other small components have equally focused responsibilities.
One listens.
Another provides notifications.
Each exists because it has a single job to perform.
Rather than making one large program responsible for everything, each component quietly does its own work.
One consequence of this design is that SecurityNet doesn't assume everyone is online all the time.
If the person you're sending to isn't currently available, nothing is uploaded to a waiting server.
Nothing disappears into the cloud.
The encrypted transmission simply remains safely on your own computer until both participants are online and the transfer can begin.
That reflects another design choice.
SecurityNet favours reliable delivery over immediate delivery.
The same principle applies if a transfer is interrupted.
Perhaps someone's Internet connection drops.
Perhaps a laptop is closed.
The encrypted transmission isn't lost.
It simply remains safely on the sender's computer until both users are online again and SecurityNet can resume the delivery process.
Only after the transfer has completed successfully is the transmitted copy removed.
I'd rather a transfer took a little longer than risk somebody losing an important document.
These background components are rather like members of a small team working in the same office.
Each person has a different responsibility.
No single individual has to do everything.
The user doesn't see the conversations between them.
They simply experience a system that quietly gets on with its job.
Perhaps that's another lesson SecurityNet taught me.
Good teamwork isn't only about people.
Sometimes software works best when each component understands its own responsibility...
...and trusts the others to do theirs.