Doing our Linux Final project, I got to experience a little bit of the Linux design philosophy. Our project, basically followed a building blocks structure where there were python scripts written to run in the console level and there was a GUI interface built in Qt that sat on top of that. This is a typical convention for many Unix applications and I wanted to share the various problems and aspects I experienced. For one, since Linux is based so much on collaboration, I noticed it was quite difficult to blindly have a developer working on the console level and then blindly have another developer working on the GUI. More often than not, the developer working on the GUI will need a working console application that he can play with and see how it works so he can implement it in his GUI. However, I was curious to see if there were any projects that have a strict protocol that the developers of the console and GUI both strictly oblige to. For example, if there was a protocol that specified for these specific inputs, you would get these outputs formatted in this way. With that knowledge, both developers can work hand in hand at the same time to get their respective parts working in parallel. I realized that this approach was far more streamlined working on our group project. Tyler and I worked on the GUI and Sasha and Sungha worked on the console python code. Rather than waiting for them to finish their code, we established what kind of output we were expecting from the console and how it should be formatted so that we had a working template and framework setup while they finished their code. This allowed us to have a somewhat working interface that we can fine tune once the console application had been completed.
Researching into how other developers and things handle this method of establishing protocols, I came across the IMAP protocol. This to me seems to be the most standardized and widespread protocol used to this day and it is used for sending and fetching emails. I was intrigued by how millions of various applications, interfaces, web servers, and consoles conformed to this protocol when it came to the implementation of email services. If only there were protocols such as this that can be established for various types of data so that developers can collaborate much more efficiently and quickly.