Blog

Toughts about Linux, Windows and Mono influence – Part II

Well, the feedback to my first post was so fast that I decided to move on with the second part of my planed article. The fact is that I’ve used gentoo and initng but those aren’t standarts. Gentoo isn’t for the home user and if you aren’t one you should be able to tweak the system – anyway, even if you’re an hacker you surely would be glad to see your distribution doing it for you and without a standart thats a pain to the distribution guys because they need to patch and test the changes delaying the release time and wasting time that otherwise would be improving the software. There are some nice Linux solutions that boost the performance like prelink but my point is another. Lets go then.

If you don’t remeber my second question, it was “Why does Outlook startup under 2 seconds and Evolution takes ages?”. This is a subject that has much to be told and a subject to an long discussion, this is simply my humble opinion.

Windows is a closed source operating system and, if you aware of recent events, you know that Microsoft had to open the source to governments and license some other parts. You should know too that they aren’t playing and that they do actually make sure there are no leaks. They justify they extreme security measures and license telling something like: “We do not wish Windows clones to appear.” – this is a big tip to one of the most fundamental points of success of Windows and some other closed-source software. By closing the source they ensure that there are no clones, forks and remakes that would make the users live a pain.

With Linux its exactly the oposite, almost everything is open and almost any project has a clone, fork or remake. The actual results are a mess. A great example is the number of XML parser libraries, you’ve hundrends of them, some simple, some complex but very powerfull, read-forward only, read-write, fast, slow, etc… When you load a piece of software in Linux that uses XML it has a specific XML library but it usually has some other dependency libraries, which in turn can make use of XML too and, in that case, chances are that that library isn’t using the same XML library. As a result you have 2 or more equivalent XML libraries loaded.

This doesn’t happen with XML only, its happens with lots of other libraries. This is something that increse the overall memory usage and make each application slow because most of them are using equivalent but different libraries. This is why Outlook, Word, etc… are so fast. They use what the Operating System has to offer by default, they avoid using equivalent libraries so they don’t need to load them.

While this can look like an insane acusation, I ask you – is it? Whats the purpose of Freedesktop if not trying to make some pieces of software a standart in linux thus avoiding equivalent libraries to be loaded? Isn’t its purpose to make things work well together? Whats the difference between this and a closed-source software like Windows?

I’ve my opinions about this and about how open-source could learn and improve with it, specially with Mono. Thats what the 3rd part will be about.

Post to Twitter Post to Delicious Post to Digg Post to Facebook Post to Reddit Post to StumbleUpon

10 Responses to “Toughts about Linux, Windows and Mono influence – Part II”

  1. Gerd says:

    You do not have to use evolution. Why is Abiword so fast?

  2. OOo says:

    I think a bad problem in
    the linux world is not-invented here syndrome (NIH). Case in point, the numerous XML libraries you mentioned.

    So I guess I see where you might be going with the Mono teaser. Mono and Java
    give us a standardized class library (well, two). Too bad they are largely controlled design-wise by Microsoft and Sun, and I don’t like some of the decisions they’ve made, but I guess it’s
    better than nothing for now, and of course we do have open source versions with Mono and gnu classpath.

    p.s. People may jump on you for the 3rd paragraph. About Microsoft closing its source
    and so forth for the sake of easing our pain. But I understand you wrote this quickly :)

  3. Arron says:

    That’s the nature of open source software, I
    think, everyone works on what they find comfortable.

    I don’t think it would hurt if a “Gnome Platform” offically sponsored and helped maintain critical libraries like XML parsers, etc, that
    guaranteed certain elements would always be available if someone had the “Gnome 2.12 platform” installed.

  4. Keith J. Farmer says:

    Disclaimer: I’m a developer on the DLinq feature team at
    Microsoft.

    Thank you for saying this, Alexandre and OOo. The balkanized world that Java has become is one of the reasons I loathe spending any time in it, and why I’ve held out hopes that
    Mono will take over development in the Linux world.

    What I’m curious about is why nobody’s tried making a new public domain OS based off of Mono. At least, I haven’t heard of any.
    Microsoft has the Singularity project and from what I’ve seen of it, it’s performing reasonably well.

  5. maiku says:

    I don’t know why anyone
    would jump on you becuase of the paragraph that OOo mentioned as *gasp* its actually saved many windows developers from the problem that IS plauging linux developers, and where it hasn’t saved a
    windows developer they’ve always been free to either write thier own lib or use someone elses.

    As a windows developer I think one of the best things is that we have that stability, if you
    can call it that, that we can either depend on microsofts libraries or opt for another tried and tested lib, but is that choice really so clear cut in linux? probably not.

    I think Alexandre
    raises a very vaild point why is linux and its large apps so slow to load? As a periodic user of linux on the desktop the only thing that comes to mind is the complex dependancies. Is there really
    any need for an app to depend on an a library thats vauge and obscure that depends on more vauge and obsure libraries that depend on stable and usefull libraries?

  6. Wolf says:

    OOo: “Too bad they are largely controlled design-wise by Microsoft and Sun, and I donâ?.??.?t like some of the decisions theyâ?.??.?ve made, but I guess itâ?.??.?s better than nothing for
    now…”

    unfortunately, that is the essence of not-invented-here: not liking someone else’s design decisions (possibly with good reason) and instead doing it your own way.

    one of the
    great promises of open source was that the best ideas would be polished and honed by repeated use until there arose (spontaneously!) an optimal solution, which would be enshrined as common idiom or
    standard library. unfortunately, there’s no real pressure to do so, since it seems everyone who *can* improve existing code is very willing to do so by simply taking it off in a new
    direction.

    microsoft software, especially windows, is incredibly conservative. maintaining backward compatability with poorly-written third-party application and driver code has been a very
    high priority for years. some of the “cruft” that many bemoan in windows is there precisely because *it’s still in use by some application code somewhere today*.

    I don’t recall the
    specifics right now, but as I remember some ridiculously large portion of development time on windows XP was spent making it backwards compatible with a huge number of software titles (the usual
    horror story here was the game “army men”). that was time that *could* have been spent doing other important work (notably, the work that’s taken up the last year of vista development). but in the
    windows world, if fixing an allocation error in some obscure undocumented bit of display code means that junior’s favorite game won’t run, microsoft loses out no matter what they do.

    people
    wondered why microsoft was “willing” to submit .NET’s CLR and C# specs to ISO as standards — that’s an easy one. with .NET and C# as standards, the job of ensuring compatability over future
    versions is drastically simpler. as long as they cleave to the spec, they stay compatible, and if application software breaks…that software wasn’t written to the spec.

    when DOS and win32
    were partially-documented APIs, there was a sense that if you could find an API, you could use it, regardless of the documentation, since it was probably in use somewhere internally and wouldn’t
    change. when the internals did change, applications broke, and programmers blamed microsoft. by “externally” specifying .NET and C#, they are (in a sense) establishing hard-and-fast ground rules
    for writing software in the “new era”. you may not like some of the decisions involved, but at least it’s carved in stone now.

    projects like mono that implement the same spec work in
    microsoft’s favor here. by further establishing a baseline for compatibility, it makes it that much easier to maintain backward compatability, since the target is now that much smaller and sharper:
    it’s less likely that some poorly-written application will do something undocumented, since it’s nearly certain that it won’t run on another implementation of the CLR.

  7. Daniel Alves says:

    Alexandre, I agree with you and already have perceived this “problems” before in the same way you. I think too that the Linux needs to follow a standart and I aren’t saying that the
    Windows is better (no way :P) but there is some points that the opensource systems needs to learn with closed systems.

    Standarts for files, configurations, libraries, etc. Not only for startup
    libraries.

  8. Brian Ramos says:

    I think you’re giving to much credit to Windows. A friend of mine who worked on
    Word told me that Office reproduces alot of win32 functionality and does _all_ of its own widget drawing. In fact, my gut feeling would tell me that on a closed platform where licensing of libraries
    and technologies is common, I would expect to see more duplication of code. The not-invented-here mentality is prevalent throughout the industry and is not a linux only problem.

  9. Indeed… you are giving the MS world WAAAY too much credit.
    Ever heard how many SOAP stacks have been implemented by MS (not just available for windows, but actual independant implementations from different MS dev groups)?

  10. Bahul Upadhyaya says:

    Do you even know how
    GNU/Linux manages memory? I’m sure you’re aware that in windows the entire contents of the library are copied to the target applications memory space. In the case if GNU/Linux the memory is just
    mapped from an existing copy of the library, i.e. the first instance. While this does mean that it’s extremely difficult to know how much memory your app is actually using, you do know that it’s
    less than the sum of the parts. The same cannot be said for windows.

    You are correct in some respect that there is a lot of diversity in similar libraries available, but this never tends too
    last for too long as weaker versions die over time, but then again since when is having a choice a bad thing. And, as you now know, that any libraries that they use will be shared in
    memory.

    I do agree with your boot time issues, and your idea is woth some thought. The nice thing about Linux is that you could have a bash at the idea yourself. Gentoo would be a good
    starting point as it does have a dependency calculator in the init scripts.

    I do not agree with your application load time issues. The latest version of Evolution takes about the same time to
    load as Outlook (on the same mailbox which has 11,000+ entries). The difference is that Evolution runs on a 500Mz Pentium III with 512Mb RAM and Outlook runs on a 3GHz Pentium 4 with 1Gb RAM. Go
    figure. Same with Firefox and IE (btw).

    Please check your versions and your setup as I would hate for someone to be have a needlessly poor Linux experience.

Leave a Reply

For spam filtering purposes, please copy the number 6215 to the field below: