Project Selection

As we have progressed in our software portability and optimization course, it is now time to select a project and attempt to use the knowledge we gained in the course so far, however we won’t be just doing them as labs. Our project is to apply this gained knowledge in a real world, practical application, in this case to attempt optimization on an existing open source software project. This will require not only applying what we learned in terms technical knowledge but also how contributions work in regards to open source projects.

With Open Source Software we learned that it is often maintained by individuals paid by large companies, for example Microsoft or Oracle to add the features that they desire. This not only creates better faster and more efficient software for the company that is contributing the resources, but also the community of users and developers who use the software as well.

Decisions:

There were a lot of considerations when it came to trying to choose what software I would most likely dedicate considerable time to over the rest of this course. In selecting the software for this project I tried to think about software that I use frequently and am comfortable with as a user. The common tools within any Linux distributions where my first thoughts, however I found that many of these communities; although open source, seemed to operate in a closed small group that would not be easy to set up communications with. Also a lot of these pieces of software have existed for a considerable amount of time and I assume have had years of improvements already made.

One of my considerations was specialized software such as chat clients like irssi. However I have never personally had to consider the resources such a client ever needed to run as is, meaning there was most likely not much to optimize. The other factor with this project to consider was that testing could require a client server testing model. Which would most likely be more complicated than I would be able to handle during the remaining time for this course.

Another option I looked at was the window manager DWM, it is easily my favorite window manager for ANY Linux distribution. (If not my most favorite software ever; I mean like, just look at the source.) This project was developed by a team who calls themselves “suckless,” the link is here:

https://dwm.suckless.org/

Not only is this project amazingly well done, it is also easy to compile, written in my favorite language “C” and they seem to maintain a philosophy of simplicity which translates directly into their final design.

It is stated on the above website that:

“dwm is only a single binary, and its source code is intended to never exceed 2000 SLOC.”

“SLOC” meaning “Source Lines Of Code”, here’s a link:

https://en.wikipedia.org/wiki/Source_lines_of_code

However ultimately I did not choose this project because I was not familiar with their contribution requirements, which may deter me from contributing in the context of a time constrained course. I am hopeful however to potentially pursue contributing source and/or getting to know the community based entirely on the fact that I love this piece of software.

 

Chosen Software:

Which brings me to the point of this article, the software that I have ultimately chosen to try and optimize for this course; that software is Oracle’s VirtualBox.

VirtualBox is a software project that has been critical in my personal learning of computers. It allows me to create and maintain large networks of (virtual) computers is a safe for learning environment.

See my post on using PfSense with VirtualBox:

https://penguinpro.ca/2019/09/14/87/

 

VirtualBox has also allowed me to practice installing and playing with various software and operating systems. It is able to do this without the need for specialized hardware and even allowed me access to the development environment that I am most comfortable when working on public machines.

The other reason that I have chosen VirtualBox is that I feel there is a lot of potential for optimization; not in that there is much wrong with it, or that I feel it is inefficient to use in its current state. But that there is a larger probability for optimization to be done. For example, this particular piece of software has many internal libraries that could show potential for optimization upon further analysis. Not to mention the fact that it has a GUI that may benefit from optimization and even relies on modules that must be loaded into the kernel itself.

Finally the model for contributions, seems to be quite straight forward and active. It is a piece of software that has the backing of a large company (Oracle) and the community around it seems to post into their forums in a professional manner.

https://www.virtualbox.org/wiki/Contributor_information

 

Concerns:

The main concerns that I have with attempting optimizations on such a large and complex piece of software is my lack of understanding of how virtualization, and bytecode pass through itself takes place.

My other concern is in relating to building the source code itself. The larger the project the more dependencies it generally can have, as well as the overall complexity and compile time which may become a factor in the context (again) of a time constrained course.

Finally the hardware that this software needs to run on must be considered, “Do I have access to any machines that can handle virtualization?” as well as “how can I work on this on the go?”, or without an active internet connection, I assume “virtualizing virtualization software” to be just as strange as it sounds.

My Next post will hopefully be on how attempting the build will go, wish me luck, it’s been an experience so far.

 

Cheers,

ElliePenguins