Building a Linux distribution from scratch | Interview
Here’s a quick interview with Constantine Apostolou who is the creator and maintainer of the Cinux Linux distribution. Creating an operating system from scratch has its difficulties, but also its good parts. Constantine explains this process and gives us more details about his own baby – Cinux!
Tell us a few things about you and your relation to the FOSS world.
Well, my name is Constantine, which in Latin means stability (thankfully I have plenty of that), I was born on January 2nd 1991 in New York City. Both of my parents are Greek. When I was 8 to 9 years old and after my father’s death, my mother decided to move back to Greece and reunite with her family. There, after I finished school I was admitted to the Computer Engineering and Informatics school of Patras University. That’s when I first came in contact with the FOSS world. My cousin, Andrew, a telecommunications major at the time, suggested I installed Ubuntu 9.04 on my laptop which I did and really liked. From that time, an installation of a Linux distribution always “resided” on my hard drive, simply because I enjoyed the freedom and the philosophy of FOSS. Also, shortly after that I started developing software, at first I did quite simple stuff in C or Java but not too long after that I begun to write a simple UNIX like kernel in C and then I started planning and developing Cinux.
How did Cinux came to be? Was it a pre-planned project, or a nice curiosity “accident”?
That’s a good question. I always admired Bill Gates and Linus Torvalds because they created something of a kind, with millions of users (in the case of Windows, I guess billions?). So, I always wanted to do something like that. Well, obviously I wasn’t trying to create something for the millions of people but, something for me and if someone else liked it, for him too. That’s why I begun writing that UNIX-like kernel I told you about. But, I came to realize that it would be impossible for me to maintain a from scratch OS (drivers, bug hunting, new features…) so I simply went the free and open source way to create a from scratch Linux! Which probably makes it was a curiosity “accident”.
What are the biggest difficulties that you faced while building a Linux distribution from scratch and how did you overcome them?
When I started to develop Cinux I hardly knew 1% of what I know now about software development. This had me hours hunting on Google for information or trying to understand what the LFS or BLFS books meant. I guess that my need and passion to create was the thing that made me overcome these and any other difficulties that I ever had.
Besides learning everything about how your system works, what would you say are the main benefits for someone who builds a distribution from scratch?
Well, Cinux is a pure Linux system. Anything you create on it will work with most Linux distributions. Besides that, it’s a more secure and fast environment. Who would want to exploit Cinux anyways? Also, because of it’s nature the user has as much freedom as he wants, no super users, no restrictions. Of course, he will always have to be careful because he doesn’t want to break his system. With Cinux everyone has a good chance to become a Linux expert.
What makes Cinux unique among the hundreds of Linux distributions?
As I stated in my previous answer, Cinux is a pure Linux based operating system. It’s not just another Ubuntu, Debian or Fedora based distro. To be honest I was quite sick and tired seeing more and more of those and that’s another reason I went the “From Scratch way”. To add, Cinux is just a system, an operating system to start off, once you install it you can take it as far as you like, unlike other Linux distributions out there.
Cinux is trying to automate processes like the installation of the OS, and to offer an easy way to install applications that almost everyone uses. It is trying to be user friendly, but what is the target user market really? Is it the linux noobies, or the experienced users?
I’m not trying to provide pre-installed applications that much as I’m trying to cover dependencies in case a user wants to install his favorite application. Lets say a user wants to install Skype, or Google Chrome. From when I was developing that version of Cinux, I included all of the back end dependencies that are needed to run either software. This way Cinux is for sure trying to be user friendly. Now, about the target user market… Cinux might not be best for entry level users but a level up. After users “get their feet wet”, then they can use Cinux, play with it and learn from it. It’s a specialized operating system anyways.
The latest version (Cinux Pandora) is considered still unstable. What is it suitable for, and when are we going to see a “stable” Cinux release?
Cinux 1.7 (Pandora) is really another more stable Beta version of Cinux1. It started from Cinux 1.0.3, the first release with a user interface and brought it up to Pandora, with more features, speed and stability. Pandora has many good features. One of them is the presence of the Debian Package manager (Dpkg). By including it I managed to make Cinux a binary compatible OS with Debian and Ubuntu, not 100% but it’s still something. That’s how you can install Google Chrome for example. Other than Dpkg, there is the Cinux-Get package manager. It is ready to be modified by the user. And by that I meant that the user can, by himself, add his own repositories and have Cinux-Get install his packages from his own repos. Plus, Cinux 1.7 is continuing the job of it’s older brothers to be the a specialized OS.
Is Cinux still an one man project? Do you receive any contributions from Cinux users?
Up to Cinux 1.7 I was the only one who developed Cinux. There were a few guys that provided feedback but that’s just about it. Lately, and as I prepare the next release of Cinux (version 1.8), I get help from a kid in Greece. I hope in the future more people will want to help. That’s the purpose of FOSS, the community.
I know you like feedback and proposals, but how difficult is it for a developer to find the golden mean between doing what he wants and doing what the users tell him to do.
When a project is user oriented rather than developer oriented, the developer strives to make his creation likeable by the end user(s). However, there should be a border line as well. For example, a user may ask me to try to implement a new feature such as Gtk+-3.0 (which I currently am for 1.8) but he can’t ask from me to compile and make a version with Xfce, or Lxde, or Gnome Shell and so on, simply because that doesn’t meet the philosophy of the project. I have never heard anyone telling Microsoft or Apple to implement a new User Interface for a minority of users.
Any future plans that you may share with us?
Well, I stated on Cinux’s blog some time ago that I was planning on making it an all x86_64 (64 bit) distribution, simply because, for me at least, 32-bit systems are dead and the beyond 64-bits systems are the future. But, my grandfather used to say “Tell God your plans to make him laugh.”, so other than that, I really don’t want to say something specific because you never know how things will turn out to be.