I am an extreme moderate

November 23, 2012

My way to BSD, part 1

Filed under: Uncategorized — niezmierniespokojny @ 10:37 pm

I finally made it, I made BSD (PC-BSD to be exact) my desktop OS. It’s been a long road…and one that will keep being bumpy for as long as I can foresee. Still, I believe it goes in the right direction.
I’d like to sum up the years I spent preparing….
It all started in 2007, in January. At the time I have been a loyal Windows fan. I had spent huge amounts of time to learn Windows, not without successes. I kept investing in my Windows skills and wanted to spend my life using it and career – working with it, mostly coding for it.
Then came Vista…and I was in shock.
What was so bad about it? For me, the list was longer than for most.

  • It was bloated.
  • Most agree with this one.

  • It was slow.
  • Again, a common point.

  • It was freaking ugly.
  • I like simplicity. It was complex. I like good use of screen space – OS is supposed to stay out of my way. It was wasting pixels everywhere, huge icons, huge titlebars, huge borders around windows. I like readability. I was showing all text on a background that was highly uneven and frequently moving. It reminded of Apple’s glossy screens…engineers had spent a ton of effort to rid us from reflections on screens, Apple decided it would be cool to do it different and people have been buying it.

  • UAC killed usability.
  • Another common complaint.

  • It was significantly more closed.
  • I was OK with XP. I could do anything with it and though w/out access to the sources some things were hard, there was enough documentation to make them possible. With Vista, MS tried to keep independent developers (like me) off the kernel. You needed to have all your drivers signed, which was supposed to improve security. I didn’t believe it would make computers any more secure (and I was right) and viewed as a pure obstacle to keep people from messing too deeply with their systems (and I’m not sure if I was right). Soon there was a hole discovered that allowed one to use self-signed drivers, but I didn’t want to use it. Even if it stayed unpatched, I didn’t want to fight my PC, I wanted it to just do what I ask it to.

  • It added privileged processes that users couldn’t touch with debuggers.
  • A DRM enabler. It was a hot time for DRM, many still believed they could stop piracy with it and kept investing in it. I found it hugely disturbing. It was my PC and MS gave media companies some control over it that it didn’t give to me. I still find it weird that it’s so rarely talked about, while few need it (and I didn’t need it either), the principle is just terrible.

    What was my reaction?
    First, I didn’t believe. It couldn’t be that bad.
    It was. Then, deluded myself that with the next Windows things would improve.
    Then realised that people loved the look => if anything, it would get worse. People complained about slowness and bloat. It could improve. People didn’t talk at all about freedom. So it too didn’t have a chance to get better either.
    I was stumped. I didn’t see any way forward. My experiences with Linux have been simply terrible and I didn’t expect any Unix to make a better desktop, so this was not an option. I knew I had to do something. I had quite a few years, I could keep using XP until all hardware vendors would stop supporting it and then another couple before the last supported PC would die. (I guess I was not the only as MS does its best to make new software stop working on XP (new .NETs don’t work, Visual Studio 2012 binaries don’t work and for the latter I see no reason other than the will to kill XP))
    After Vista, I didn’t have a great period… I had limited time to do something, with a limit being loose but still. And no way forward, just darkness. It stayed like that for over 3 years…
    To be continued.


    1. http://bench.cr.yp.to/supercop.html Benchmark gather various machines and algorithms. Can be a nice addition to your tests.

      Comment by bgm — June 9, 2013 @ 12:52 am

      • Here goes the story:
        Some time ago I’ve added a couple of ecrypt ciphers. They had a common API and while the way it was designed prevented me from adding it directly, with some trickery (use of namespaces) I got them included.
        Then I found supercop. I added some codecs from it (AES for example), but my fairly manual approach simply didn’t scale to a code repo this large. I didn’t want to add it then and I forgot about it.
        Thanks for the reminder. Now supercop seems to be one of the good options in terms of effort / benefit ratio…especially that it can save future work like the one that I did to add Blake2; if I had supercop handled well, updating it should give me the new checksum. The effort to add supercop wouldn’t be small though, the building model is so different that supercop won’t mix with fsbench fluidly.
        To add it in a scalable and maintainable way I would resort to automatic code generation, basically automating my manual steps and IIRC adding some extra preprocessor tricks.
        There is one problem that I can’t solve well now:
        In supercop, codecs have architecture-specific implementations. I don’t know how does supercop handle them, I guess it tries to compile and simply handles errors. I don’t think that such approach is even possible with CMake and even if it is, it may require major rearchitecting of the way fsbench handles optional compilation (which I like).
        What is possible though is doing it semi-manually before compilation.
        I could write script that takes 2 parameters, a supercop source tree and a list of whitelisted codecs/implementations and produces 2 outputs; a set of C++ files that somewhat resemble the current implementation of ecrypt codecs (except for being much bigger) and a CMake file controlling which ones should be enabled; by default enabling the whitelisted ones (which would supposedly be portable), but allowing users to enable others too.
        Doing it at compilation time would be neater though…and since I’m thinking about switching CMake to some other tool, I won’t be implementing supercop support until after the change (or the decision to stay with CMake).

        Comment by niezmierniespokojny — June 10, 2013 @ 5:59 pm

    RSS feed for comments on this post. TrackBack URI

    Leave a Reply

    Fill in your details below or click an icon to log in:

    WordPress.com Logo

    You are commenting using your WordPress.com account. Log Out /  Change )

    Google+ photo

    You are commenting using your Google+ account. Log Out /  Change )

    Twitter picture

    You are commenting using your Twitter account. Log Out /  Change )

    Facebook photo

    You are commenting using your Facebook account. Log Out /  Change )


    Connecting to %s

    Blog at WordPress.com.

    %d bloggers like this: