Sunday, February 15, 2015

A Prediction: 2020 the year of (PC-)BSD on the desktop

I am going to make a prediction right now that FreeBSD is going to take off in a big way on or before 2020, perhaps even to the point where it threatens Linux Desktop share.

This is of course a bold claim, however before you automatically dismiss me, consider this: where was LLVM/CLang 5 years ago? Now today it's almost a foregone conclusion that it's the future, to the point where RMS thinks there's a conspiracy against GNU by the LLVM folks.

Alright so change happens and those we might consider untouchable can in fact be dethroned. Hasn't FreeBSD had more than enough chance that it's unlikely for the status quo to be disrupted though? I would agree, but for two things: PC-BSD, and the KMS linux-shim.

First off what is this KMS shim? It's an adapter between a BSD kernel and the linux Kernel Mode Setting drivers, this is important because instead of having to port the Intel and AMD drivers over to how a BSD thinks they should be written, they will be able to just take the drivers as they are, thus reducing maintenance burden and allowing BSDs to have up to date graphics drivers (as opposed to the current state of being at ~ Linux 3.8 equivalence). As someone who uses all-AMD hardware this is kind of important, but this will more or less permanently solve the graphics hardware compatibility issue.

Now with the hardware compatibility issues out of the way, what is so special about PC-BSD?

The answer is that unlike Linux distributions, it's not stagnant, and it's truly focused on being a desktop offering. Consider this: In the past 10 years has the distribution you run changed significantly in what it offers over other distributions? I think you'll find the answer is largely no. I do have to give a shout out to openSUSE for the OBS, but otherwise I've used my desktop in the same exact way that I have always used it within the continuity of distribution X,Y, or Z since I started using them. Distributions simply aren't focused on desktop features, they're leaving it up to the DEs to do so.

PC-BSD on the other hand in fitting with the BSD mindset of holistic solutions is focused on developing desktop features and is moving rapidly to implement them. Check out for a feel of their direction.

Already PC-BSD sets itself apart with power-user features like being able to easily install a package with it's dependencies into a jail, integration with FreeNAS using ZFS as a backup solution, and 100% OS encryption, as well as niceties such as utilizing a Solaris idea called Bootable Environments where updates don't touch the running system instead it creates a new snapshot and installs the updates there, and you boot into this new snapshot the next time you reboot, with capability to go back to an older snapshot in case an update borked your system but also preventing say KDE Applications from stopping running after you ran an update that touched the KDE version number (In theory openSUSE should be able to modify Snapper to do something similar as an option). Quite frankly, to me this is a breath of fresh air.

PC-BSD's offering is only going to become stronger as time goes on, while I fear Linux desktop distros in 5 years will be much the same as they are now. The development of Really Neat Features ™ on top of the advantages that FreeBSD itself provides (better documentation, source and binaries as first class citizens, etc...) has convinced me that I should switch to it when my hardware is finally adequately supported (FreeBSD 11?), but what about other people? The FreeBSD and PC-BSD crowds are actually working on that problem, raising awareness at conventions and on the internet, thus doing the much needed footwork to effect a change.

With a large enough desktop feature gap, and appropriate marketing I have a strong feeling that PC-BSD will pose a serious threat to Linux desktop distributions within the next 5 years, what happens then? Who knows?

if you want to try out PC-BSD it's available here In my opinion they're still in a relatively rough state right now, and here there be dragons and all that, but with enough polish it's going to become a real gem.

For those who didn't quite catch it, I'm not talking about infrastructural changes like systemd, Wayland, Plasma 5, etc. There has indeed been a lot of change along those lines. What I'm talking about is the Last Mile Integration, where we are only considering what does Ubuntu provide over Fedora provide over openSUSE provide over InsertYourFavoriteDistroHere,  This is to say things like system-settings-* vs YaST, zypper vs apt vs yum vs pkgng, etc, and it is these things that will make the difference.

Wednesday, June 19, 2013

Intermittent GSoC Status Update 1

Well First off let me explain the title, basically these posts are going to be a running series of updates on what I did on a particular day, within the scope of that day, sort of a reflection and a what did we learn/do today sort of thing.  Now this series will in no sense be complete because I have no intent on doing this every single day just on days I happen to feel like doing this, and hence they will be numbered and I don't know where that number will end or how often it will update.

Now what did I do today:

well this morning I mostly was taking care of getting myself up on KDE's gsoc2013 status wiki page thing, dealt with some things related to OASIS membership and setting up the blog and signing up for it to be hooked up with PlanetKDE. 

in the afternoon and evening I worked on getting my library to actually integrate with the Calligra build system, it was some trouble to actually get it all set up and working due to my lack of familiarity with CMake (I've mostly used QMake in the past) and I was having build errors which it took a few hours of debugging for me to finally figure out that the errors was with my CMakeLists.txt file in the build system not linking in QtCore.  Thanks go out to Zagge for helping me with what I needed to do to fix that.

What I learned today:
errors in the linking stage that don't make much sense are probably due to not having the build system link the library, not in your code itself.  Also that I really need to read the CMake documentation more.

Hello World and GSoC2013 Introduction

Hello Word!

I can't promise I'll post regularly or keep this up to date, in fact I can pretty much promise I won't but I'm not going to.  Anyway this'll be a blog on my development related activities and maybe some other things, who knows?

Onto the project:

For GSoC2013 I'm helping to develop and implement the Changetracking specification being developed by OASIS for the Calligra Office Suite, to do this I am writing an Operational Transformation library (Currently codenamed kostep) and integrating that with the kotexteditor component of the Calligra suite (There may be other hook ins later outside of the scope of GSoC2013 but the current specification only covers adding and removing characters and paragraphs).  I'm not going to get into the implementation details right now but the bigger picture is it being based on Operational Transformation will lay the groundwork for future features such as Collaborative Editing.

I think that's all I'm going to cover for right now, back to code!