Creating Secure Connections

One of the main focuses of Olympus is to be able to access any number of computers securely. To do this we will be using a RSA style key-pair to securely send and receive data between client and server. The source server has a list of all of the remote server’s public keys (the pubkeys are also used a unique identifiers to make each computer unique, independent of its IP address). When a new computer is added to the list the new remote computer will send its public key over to the source server. The sys-admin can then use a fingerprint to make sure that the key is correct, thus creating another secure connection. The communication between the web client and the source server will eventually be an ssl connection however for now we are still working out a few bugs with the encryption method and the certificates.


Saving configurations using the filesystem

Olympus is meant to be loaded in parts, allowing for many queries to be made to it at once without noticeable delay. This is achieved by having each element of a the configuration, for example a list of servers, stored using the file system instead of a configuration file. This allows us to load each individual file about the server without having to load the entire set of information about every server. As a result this will allow for the program to be completely scalable to hundreds or thousands of servers without slowing down the program much on runtime, though we are not able to test more then ten at this point in time. Another benefit of this system is that if a system admin wanted to copy a server configuration from one Olympus program to another it would be a simple matter of copying a file or folder over, and would not require any kind of configuration change within Olympus. If you wanted to write a program that messes with the configurations of servers or plug-ins it would be a simple manner of changing the contents of the files, though that it not thread safe yet.

To maintain file integrity and avoid serious race conditions the process of writing to these files is contained in a single core while the process of reading from these files is un-restricted. In the future this method will change to allow for multiple files to be written to at once without fear of corruption. This will be done using file write locks to prevent a file from being opened twice.

Thats all for now

Promoting an Open Source Project

As completion of Olympus draws near its time to think about how to promote the project.  As a developer, one may be thinking that at the end of the project their work is finished.  This couldn’t be further from the truth.  To be a responsible citizen in the open source community one must not only create a project but then share it with the rest of the world.  Now how to do this exactly can seem like a project in and of itself, but after some quick research one finds that this is a common question among developers in the community.

After looking into it ourselves and getting tips from fellow open source members, we came up with the following Open Source Project Promotion Plan:

Step 1: Add project to a code repository –  We use github.  There’s also SourceForge and Google Code.  Take your pick.

Step 2: Add project to freshmeat – Another great software hub

Step 3: Maintain a blog and wiki for the project – its good to have a blog (like this one) and at the very least you can use github’s wonderful wiki feature

Step 4: Add Screenshots of your project – its true that pictures say a thousand words, screenshots of your project are a necessity for success

Step 5: Make it easy to install – if you want to make it popular make sure its easy to get running.  People want software that helps, not a battle.  For this we are looking into packaging for some popular Linux distributions.  For Windows you might look into NSIS

Step 6: Spread the word – Let your friends know about it. Use social media.  If you can, make a video of your project in action and put it on Youtube.  Just remember that the completion of your code is not the end of the project, its the beginning.