Standards


As a culmination of all the positive momentum that has been going on the past few years all the important Open Video players will be gathering at NYU’s law center for the first of hopefully many Open Video Conferences on June 19th.

The interesting part of this conference is it isn’t exclusively a tech conference. According to their website:

Open Video is a broad-based movement of video creators, technologists, academics, filmmakers, entrepreneurs, activists, remixers, and many others. When most folks think of “open,” they think of open source and open codecs. They’re right—but there’s much more to Open Video. Open Video is the growing movement for transparency, interoperability, and further decentralization in online video. These qualities provide more fertile ground for independent producers, bottom-up innovation, and greater protection for free speech online.

If we have any hopes of success in bringing the general public an understanding of our views on the importance of openness and freedom, forming a larger community with like minded content creators is the next logical step and another piece of the puzzle.

I will be attending the conference as a representative for GNOME. Others should consider registering and attending to represent their own media minded project. I hope to see you there.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

When people think about economics they usually just think in terms of money but economics is about understanding the flow of limited resources within systems in an effort to make those systems more efficient (or if you are cynical making those systems be more efficient for a specific group). Money is just a system we have used to quantify the worth of those resources to counteract the inefficiencies of bartering. Since money has the ability to be traded for almost any resource (including money itself) it holds a lot of power and has become the focus of most of economics.

However, in the Open Source community a majority of our transactions do not include money. At least not directly. In fact, a majority of our capital is payed in the measure of time and effort; both by the consumers and producers. Both are highly limited resources which in the Open Source world aren’t really given the thought they deserve.

First consumers often give the impression that they think producers have all the time and energy in the world but only a small portion of the community can be classified as producers, and even a smaller subset are full time producers. The only way to grow time and energy in an efficient way is to get more people to become producers. The power of Open Source is not that it is freely available but that anyone can become a producer. Providing that producers work together in some sense of a direction, Open Source growth should be exponential and eventually overtake proprietary development in terms of an efficient economic model and generation of capital. That is why the GPL and other reciprocal licenses are in the long term a better model as they prevent the “picking up and going home once the market expands” syndrome - though there are other forces that effectively prevent that for projects under other licenses. That is all another post though.

The other place where both time and effort are not given enough thought is in the use of the final product. In fact many projects fail to productize their efforts, choosing to leave that up to vendors. I cringe when I hear things like, Linux can do anything you want, you just have to configure XYZ. I don’t know anyone who truly wants something that can do everything. They want something that can do what they want without too much time and effort put into it. Every time we require our users to expend time and effort that is resources they are spending. If the cost is too high they will simply look elsewhere. Believe it or not, the worth of time and effort are readily quantifiable by looking how much people spend a year on unneeded conveniences. It is pretty high.

An example of time and energy wasted is logging into open services. Logins are inevitable but why in a world that prides itself on community are we beaten to the single signon party by the likes of MS Passport or Google checkout? Taking an example from Sound Juicer, the cd ripping app, I have a number of cds which I pick up at local venues because I heard something I liked when walking by. Sound Juicer gives you the option to upload track info to the MusicBrainz database. Unfortunately all this option does is bring me to a login/signup screen after I took the time to enter in all of the track data. Having to get yet another account for something I don’t really care about anymore because I already have the track info is just too much effort to spend so I end up just closing the browser window. Sound Juicer and MusicBrainz does get the consumer seal of approval for making it easy to grab track info when ripping my cds but they missed an opportunity to convert me into a producer which would bring even more value to their consumers. In fact the track grabbing functionality is so transparent - no configurations needed, no extra actions are required - that it is a quintessential example of how an app should be productized. Why adding to the DB isn’t more wiki like or federated with other open services, such as wikipedia, slashdot, lwn, distributions, etc. is somewhat of a mystery. It isn’t a mystery altogether though -

Time and effort on the producer side needs to grow and producers need to work closer together, building bridges instead of just looking to grow their own little island. The Open Source ecosystem, while priding itself on community has often neglected to build technology which works like a community. More cohesion between these islands allows them to grow and innovate on their own but still act as an integrated/efficient experience for the user, minimizing the time and effort it takes to use our software. By having an integrated experience all the way to the producer level we have more of a chance to convert consumers to producers thereby adding more time and effort capital to the entire ecosystem. Make it easier to both consume and produce in the Open Source ecosystem and traditional economics will take over to propel it to the mainstream as it has done in small subsets such as in the business server market.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

Ok so it isn’t all JavaScripts fault and Mozilla’s ‘let’ keyword might have just solved some of this if everyone would just support it, but take a look at this bit of hack I had to write.

public_methods: ["insert_row", "append_row", "remove_row", "json_load"],
    public_signals: ["ready"],
    bind_api: function(api_list) {
        var self = this;
        for (var i in api_list) {
            var pm = api_list[i];
            var name = pm + ".mokshagrid";

            // proxy pattern (used for javascripts busted scoping rules)
            (function() {
                var proxied = self[pm];
                if (!proxied)
                    throw ('ERROR: binding api "' + pm + '" failed - method does not exist.'); 

                self.element.unbind(name).bind(name,
                    function() {
                        return proxied.apply(self, arguments);
                    });
            })();
        }
    },

It is a convenience method for binding public API in my jQuery.UI plugins which require the use of the 'trigger' method in order to call into a widget from external code. In other words jQuery.UI treats signals and public methods all as part of their event system. A bit confusing but not a huge deal. This would all be unnecessary if there was a better OO model on top of the prototype model. I'll admit the prototype model allows for some cool stuff but there is a reason everyone is jumping to write an OO model on top and why everyone is doing it differently.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

Havoc,

I totally agree that embeddable languages is the way to go.  I’ve been using JavaScript heavily lately, along with the excellent Firebug for debugging (decent debuggers are something some very big languages are missing btw).  The biggest issue I have with JavaScript  is it’s lack of structure and horrendous scoping rules (this certainly doesn’t mean you are calling the containing object, especially when running a “method” from a callback).

What would really make JavaScript even more useful is the proposal for JavaScript 2. Unfortunately that presentation was made in 2006 but some, if not all of those features are part of the ECMA Script 4 proposal.  They even have a reference implementation up which is under a liberal license (I haven’t looked into it much but it links to a GPLv3 library).  As anything in committee, it is slow moving.  Hopefully we will see a finished spec sometime soon but I couldn’t find a timeline.

In the meantime there is an ECMAScript 4.0 to JavaScript converter call Mascara.  Unfortunately it is under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 license which means the code can not be distributed on many distributions because of the Noncommercial clause.  It isn’t always clear what constitutes commercial and most distributions I know of want to allow the possibility of for pay distribution or use in a commercial product by 3rd parties.  It also isn’t clear if that license extends to the generated code.  Does anyone want to write a GPL version?

Truthfully, I have a dirty little secret - I like JavaScript with all of its warts and hackish workarounds.  I like it because I know non-programmers who can grok JavaScript but can’t wrap their heads around Python or C.  I attribute that more to the environment than the language itself because it allows for the instant gratification of hitting the reload button and seeing something happen.  But what I like even more is the idea of embeddable languages bringing that sort of development process to GNOME.  There are a few apps that already do this and though it isn’t as easy as it is with the web whenever I have jumped into one of those apps, such as experimenting with writing a quick Vi mode for gEdit, it is amazingly simple.

What would keep me working in those environments would be an embeddable debugger, object viewer and UI/extension point tree.  Whoever writes those components and makes it simple to add scripting to any GObject app will be a hero in the community.  Anyone willing to sign up?

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

You know what I dislike about emotional arguments?  They are backed up by specious logic and anicdotal evidence which is often so out there it verges on being part of a fantasy land people build up to feel that they are right.  Lets examine the argument:

It seems that a “feature” that Microsoft implemented in the Windows 9.x days has appeared in Plymouth. Yes that’s right, that “feature” the I.T. world grew to hate, holding down the Ctrl or F8 keys to get into Windows Safe Mode (http://support.microsoft.com/kb/180902/en-us) has invaded Fedora. Ouch!


Now, if I take a step back, I can completely claim the following:

  • Plymouth takes away my freedom of choice (a freedom that has become a basic Human Right
  • Fedora has taken three steps back to gain one step in the name of ‘usability’

The funny thing is Mac has this feature also (hold c to boot from cdrom etc). Let’s repeat after me, “having to hold down one key after boot does not take away my freedom of choice”. And while we are at it, why do people fling around phrases like “freedom of choice” so cavalierly? It gets to the point where those once powerful words become watered down and an instantly marks ones argument as suspect. I know, let’s give more freedom of choice by bringing up the bios every time they boot. There is a lot of choices in there.

If there is an argument to be had here it is about continuity and discoverability. On the continuity side, if someone is used to seeing grub every time they boot it might be nice to keep that feature or something equivalent on upgrade but not on a fresh install. On discoverability of the feature, I would agree this is where the fustration comes from. However for the small number of (potential) users who actually like grub it would be wrong to add another option to the install. It would be much better as part of system-config-boot and if possible as an option in grub itself so that people who need to switch often can set it the first time and never have to hold down a key again. Hell, if I dual booted a lot I would like to have a key assigned to each OS I boot into but then again with virtualization being pretty good, there are better ways to run a separate OS.

Put it this way. Users may have kicked and screamed when Windows integrated DOS but Windows usage still grew. When MS decided not to show the text boot menu, again usage still grew. The way I see it is polish opened up the world of computing to more and more people.  By not polishing Linux and staying in a mindset that change is bad we will be stuck in the past while the rest of the world moves on. That is not to say every change is good but good reasoning went into this particular change and so far I haven’t seen any legitimate argument for not having it. Let’s repeat again, “having to hold down one key after boot does not take away my freedom of choice”.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

For my Fedora friends who don’t read Planet GNOME (you should):

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

This really gives a kick in the pants to those who take short cuts and lose sight of software freedom.  Kudos to Mozilla who actually has the critical mass to effect real change by endorsing Vorbis and Theora on all of their OS platforms.  Soon it will be up to the content producers to make open formats ubiquitous.  Having a delivery channel which people use on a regular basis means we can finally work from start to finish without touching a closed format if we so choose.  That to me is freedom - not forcing everyone to encode in open codecs, but to allow for those who prefer open formats the ability to deliver their content without any barriers between them and their end users. There are those who don’t want to see this happen but I have to believe that momentum is starting to swing our way.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

We’ll I’m going to dive into the deep end (flames welcome) because I have been talking to people about the Qt “possibility” since Nokia bought Trolltech and GNOME was considering what to do for the future of its toolkit.  I can see the headlines of yet another GNOME developer advocating using Qt4 as the basis of future releases but this simply is not the case.  It is, in its basic form, an exercise in “what ifs?” and an iterative process of looking inward at our ecosystem and seeing the pros and cons of certain directions we could take.

Is this going to happen?

First off this is a highly unlikely scenario. The planets would have to align, Qt would have to go LGPL, Nokia would have to loosen controls on contributions to avoid a fork, the Qt team would have to accept a community which has slightly different goals and the GTK+ team would have to signal their willingness to move. We are not going to turn our back on the great work the GTK+ teams are doing and most certainly the base libraries we use such as GStreamer wouldn’t change.

What are the possible advantages?

  • Less confusion for the non-insiders on what to learn and program for
  • We can get rid of the whole Freedesktop common widgets talk (e.g. Print and File dialogs) which is nonsense and a distraction anyway
  • Hopefully less bickering in the community meaning a more unified and focused front against larger threats
  • Focus can move from the lower toolkit layers to the higher level desktop layer which really define the value differences between GNOME and KDE
  • Easier technology sharing

Note that these are all only possible advantages and may not even happen even if there was a move.

 What are the possible disadvantages?

  • More bickering on how to write applications (who’s approach to usability wins out?)
  • Less focus and a return to writing applications without a shared guideline (just look at old XLib interfaces - almost like snowflakes)
  • A loss of identity
  • Loss of amazing GTK+ developers who may feel abandoned
  • Splintering of the community so we have parallel GTK+ GNOME and Qt4 GNOME development
  • Screwing ISV’s who bank on GTK+’s stable interface
  • GTK+ isn’t just a license - we would be losing a lot by switching away from the codebase
  • Falling into the growing pains GTK+ 2.0 brought GNOME and Qt4 is still bringing KDE
  • A loss of activity at Freedesktop.org which is actually sometimes useful in producing dialogue and shared practices
  • A loss of control over the direction of the toolkit effecting the quality and feel of the GNOME desktop
  • Really a lot of development is moving to the web - will toolkits be important enough to warrant the pain of the move

What this wouldn’t be

This wouldn’t be a merging of GNOME and KDE.  Each community has a different idea of what constitutes a usable desktop and Qt would simply be an implementation detail bellow GNOME.

Conclusion

This is pretty much a pipe dream.  It solves some issues while creating a whole host of different ones.  I’m not going to advocate it other than seeing what peoples reactions are.  On the flip side if the work was put behind it, the planets aligned, and both communities came to an agreement I wouldn’t object to the arrangement.  Needless to say, I’m not holding my breath nor would I be elated or saddened if it did or did not happen. To me it is all what is best for Linux, GNOME, Free Software and the wider market. It is unclear what direction would be best (any claims to that knowledge would be suspect) but honestly and actively looking at the possibilities is a useful activity, however remote. People reading should not put their “hopes and dreams” on this or believe it to be more than it is.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

A little over a year after releasing D-Bus 1.0.0 I am proud to announce the beginning of a new series of stable releases. This is effectively the 1.2.x stable series though the version does not reflect that yet due to non-technical reasons discussed in the release notes bellow. This replaces the 1.0.x series while still staying ABI compatible. What this means is that applications written for the 1.0.x versions of D-Bus should still run unmodified using the 1.2.x library and bus.

D-Bus is a message bus system, a simple way for applications to talk to one another. In addition to interprocess communication, D-Bus helps coordinate process lifecycle; it makes it simple and reliable to code a “single instance” application or daemon, and to launch applications and daemons on demand when their services are needed.

Major Version Feature List

  • Features
    • The system bus now supports starting services on demand. This uses a setuid helper program because system bus daemon runs as a nobody user, while services it launches may need to run as a different user.
      • A design doc is available in doc/system-activation.txt
    • The TCP address format has been enhanced, such that TCP may be actually usable.
      • The dbus-daemon man page describes the new elements in the address format.
    • Support ANONYMOUS mechanism for authentication, which allows a client to authenticate as nobody in particular
      • The ANONYMOUS support means you can now use D-Bus (without a bus daemon) as a protocol for a network service provided to anonymous Internet or LAN clients.
    • Autolaunched busses now save their parameters in X11 if possible making them behave closer to busses launched through the normal mechanisms
    • inotify is now the default backend for watching configuration file changes
    • Better thread support.
    • The bus daemon now generates a globally-unique ID for itself.
      • Use this as a unique ID for a user’s session, for example.
    • Support for message serialization added for use with external transports like TUBES!!!
    • Better eavesdropping support now picks up reply messages for debugging
  • Library API additions
    • dbus_connection_set_allow_anonymous() - allow the message stream to begin if the client auths as anonymous (otherwise, the client will be dropped unless they auth as a user).
    • dbus_watch_get_unix_fd() - replaces dbus_watch_get_fd
    • dbus_watch_get_socket() - replaces dbus_watch_get_fd
    • dbus_server_get_id() - available to access the unique ID of a particular address
    • dbus_connection_get_server_id() - available to access the unique ID of a particular address
    • dbus_message_marshal() - serializes a message into a byte array
    • dbus_message_demarshal() - de-serializes a byte array into a message
  • Library API deprecations
    • dbus_watch_get_fd() - had unclear cross-platform semantics
  • Protocol additions
    • Argument path matching of the type arg0path=’/aa/bb/’ is now supported
    • New error org.freedesktop.DBus.Error.ObjectPathInUse added
    • ANONYMOUS auth support added
    • GetAll call added to the properties interface for getting a list of properties an object exports

Release Notes

  • This is the next generation supported STABLE release of D-Bus. For all intents and purposes this is the 1.2.0 release WITHOUT the planned X11/MIT license change due to a couple of license holders who have yet to respond. For the most part this license change is being pursued to simplify licensing issues and fix a couple of licensing corner cases. When this happens D-Bus will be released under the 1.2.0 version.
  • D-Bus 1.0.x effectively goes into security fix mode and will only be updated for major issues.
  • Fixed CVE-2008-0595 - security policy of the type <allow send_interface= “some.interface.WithMethods“/> work as an implicit allow for messages sent without an interface bypassing the default deny rules and potentially allowing restricted methods exported on the bus to be executed by unauthorized users.
  • Fixes dbus-launch so the session bus goes away so does D-Bus
  • Builds against latest gcc/glibc changes
  • Correctly unref connections without guids during shutdown
  • About the name: Submitted by Greg K Nicholson, Coniston Water is a lake in Cumbria, England where several water speed records have been broken. Between 1956 and 1959 Sir Malcolm’s son Donald Campbell set four successive records on the lake in Bluebird K7, a hydroplane. Wikipedia

Get D-Bus 1.1.20 “Coniston Water”!!!

Go to the D-Bus web site for more information.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

Well folks, D-Bus 1.1.3 has a little bug introduced via the inotify patch which would consume 100% of your memory, go into the OOM killer and subsequently consume 100% of your CPU. This is exactly why we have the Release Candidate series, to root out any last minute issues. Thanks to all who tested and sacrificed their productivity to get us to this next release. D-Bus 1.1.4 (1.2.0RC2) is now available for your perusal.

Download: http://dbus.freedesktop.org/releases/dbus/dbus-1.1.4.tar.gz
Homepage: http://www.freedesktop.org/wiki/Software/dbus

[read this post in: ar de es fr it ja ko pt ru zh-CN ]

Next Page »