Crowdfunding Open Source

I know various people who sing the praises of Apple’s OSes in part because of the quantity and quality of apps. Or conversely criticize Linux or to a lesser degree Android because of the lack thereof. I get the pragmatic appeal they are making. But then, referring to the apps, they say things to the effect of, “where I can PAY money to keep them going”, and they lose me a little bit.

Is the utopia of open source yet maintained quality software somehow out of reach, or out of reach on specifically on open platforms maybe, as this type of thinking seems to imply? I don’t think it is, but I am not certain how to explain its overall lack of realization. This isn’t to say open source stuff is bad. It isn’t! I use it almost exclusively, and manage to be mostly productive and not frustrated with it! But, generally speaking, open source options often either don’t exist, are missing some features, or are lacking some polish compared with proprietary options. Even if that is not mostly true it is true often enough to maintain that impression among most people I know who have an opinion on the topic.

I have been glad to see more crowdfunding and such for open source projects. The donation model isn’t new of course, but the ways to do it have certainly expanded and the popularity of crowdfunding in general has exploded. Personally I try to contribute funds for projects that I use, but I always struggle to decide how much money throw in the hat. Should I contribute what I would guess a license for similar software might cost, based on how frequently I use – or would potentially use – it, or based on how much I want to see this missing piece of functionality added to the ecosystem?

With crowdfunding gaining popularity and becoming easier to initiate I have been hoping to see more quality and increasing options emerging on Linux, and that is happening, but it seems slower to happen than I would expect honestly. Maybe another way to say it is that it simply isn’t terribly clear whether there has been an increase in the pace of general development or the willingness to stick around and maintain and refine a project. And if there has, it’s not to the degree I would have expected now that the crowdfunding option has emerged the way it has.

One possible cause is that somehow crowdfunding doesn’t yet feel as legitimate as it should to the type of people who typically fund software development. Many, if not most, people who pay for software licenses barely understand the distinction between open source and closed source software, so in part a failure to jump on the crowdfunding bandwagon isn’t surprising, however, I know a number of tech savvy OS X and PC users who have the philosophy of “I want to financially support developers of good/useful software”, but sometimes it seems like they are only interested in doing that through the license/closed source model, and not so much via the crowdfund/open source model. Like somehow the later isn’t sustainable or doesn’t qualify as legitimate support somehow. Maybe my perception is just off on that, but if not then I wonder what causes/perpetuates that, and I wonder what can be done to get over that and get us closer to software utopia.

Flattr this!

Firefox Propaganda

Overall I think people don’t understand propaganda well, and this leads to the perpetuation of bad journalism among other things. I could go on about that, but suffice it to say there is propaganda out there in the tech press and other places concerning web browsers. I don’t really get the reasoning behind why there is propaganda regarding web browser software… A little, just not well enough to articulate or go into here. Anyway may as well add my voice to the noise.

Reasons I continue to use Firefox as my primary browser.

  1. It is decent software that is constantly improving. On the whole, in numerous practical benchmarks and measures it compares well with Chrome, IE and Safari. Meaning there is no obvious or sweeping practical reasons that serve as justification to sacrifice ideologically superior software.
  2. Ideologically superior software?! Firefox is open source AND the only major browser with development driven by an open community facilitated by a non-profit organization. Consider why companies like Google, Microsoft and Apple may want you to use their browser; why they even make web browser software at all… They do not have your interests in mind, at least not primarily. Their primary interests are necessarily those of the businesses and shareholders who profit from you in some form or another. The fact that their source code is open or that their development happens within public view doesn’t diminish the significance of this fact.
  3. The focus of Mozilla being the interest of their users leads to innovative and interesting projects that stand to directly improve the experience of web users.
    1. Rust: a new language that focuses on concurrency and memory safety. This has more potential to benefit users than the languages and platforms advanced by the other browser vendors. Dart, Go, Swift, .NET, etc. They are all interesting, and not bad or anything, but their primary directions and focuses all seem to revolve around solving business and development problems rather than end user problems specifically.
    2. ASM.JS: making code, especially gaming code, blazing fast in the browser. This vastly expands the scope of products that could be delivered though the web browser reducing the reliance on particular OS’s or vendor specific app stores to deliver such products and services.
    3. FirefoxOS: a whole mobile OS that uses the web platform as the development framework and the web itself as the app distribution model! Mobile OS’s have notoriously delivered a relatively poor web experience preferring ‘Native’ Apps and the App Store model for distribution each for various reasons, but some aspects of this model are inferior and detrimental to users experience comparatively speaking.
    4. Shumway, Firefox’s Sync and WebRTC implementations, PDF.js, OculusRift/3D support, etc…
  4. The focus of Mozilla being the interest of their users leads to standards that tend to center around the benefit to web users and developers in general rather than specific features or functionality that some company or companies perceive as important for their products/users/developers.
  5. A few particular features that may or may not be replicated in options or add ons for other browsers:
    1. Firefox Sync: Passwords, history, bookmarks, settings, etc shared between devices, including mobile versions, in a way that remains completely private! Actually, it looks like Chrome supports a form of this now, but it is opt in. By default Google will be able to see all your data unencrypted. (and that makes sense according to their business model, so I wouldn’t expect that to change.)
    2. Just in time tab loading: I like to have my browser open with tabs in state it was when I closed it. This is convenient for me. However there is usually no need to load the content, and start playing videos or whatever might be on those tabs, until I switch to it for the first time. Besides avoiding annoying videos starting to play on some unfocused tab the just in time option keeps memory, battery, and network uses lower in many cases while improving the start-up experience. It is a small thing that makes a significant difference. Apart from some technical challenge that makes it much more difficult than it would seem to be I genuinely can’t see why the other browsers wouldn’t decide to implement this.
    3. Firefox Hello/built in WebRTC tool: The new chat feature bundled with Firefox just floors me. No sign in or pre-agreed upon shared service is necessary between you and whomever you want to video chat with! Just share a link and go!

Recently there was a post going around about switching back to Firefox from Chrome. Even though it is in favor of Firefox in this instance it is this sort of ‘journalism’ that I find disappointing.

Flattr this!

Touch Monitors Are On My Wishlist

I think I want touch screen monitors for my work and home desktops. I might be one of the few who still uses a desktop, but my quirky thoughts on the coming obsolescence of laptops as a form factor can be saved for another time.

The appeal of touch monitors is not to replace my mouse or keyboard, but rather to do the things they aren’t terribly great at. For example when I want to re position my cursor from my browser on one monitor to a specific location in my text editor on another, neither the mouse nor the keyboard are able to do this with the level of efficiency that a touch screen enables. To illustrate what I mean it helps to detail the steps a bit.

With the mouse I first have to find the cursor. This is normally not so difficult and there are even tools to help, but it is a task none-the-less. It gets a little worse if the window currently in focus doesn’t have the mouse within its space. Usually what happens is I wiggle my mouse or finger on the track pad and find the movement with my eye. With dual monitor setups this is yet less trivial.  Step two involves navigating the pointer to the next location. Step three is clicking to place the cursor. Step four is placing my hands back on the keyboard to start typing.

With a keyboard there are so many options for keyboard shortcuts and paths to accomplish the task that whatever steps I chose someone could just say, ‘well my [secret hidden] way is much simpler’ and probably be right, but a typical person like myself in a typical scenario as I often find myself in might use alt+tab to select a new window to focus from the list of open windows, and either press that multiple times until they land on the one they want or use arrow keys. In Ubuntu this method uses icons and I have to remember which icon belongs to the program window I want to focus on (text editor). Add two more little steps if I happen to have two text editor windows open so that I pick the right one. Once I get the right window in focus. I hunt down the blinking cursor with my eye and move the cursor with the arrow keys (or in my case nimble well trained fingers with lots of keyboard keys in combination that are faster than using only arrow keys.) to the desired location.

With a touchscreen I could simply reach up and touch the place on the screen I want the cursor to now be at, put my hand back on the keyboard and start typing.

And there are probably infinite combinations of using all three interaction avenues to accomplish the task depending on if it involves multiple windows of the same application, minimized or hidden windows, scrolling to window content that is out of view, tabs within the application, windows on other virtual desktops, etc.

Anyway long boring bit about HCI, but point of it is that I think touch is here to stay because it is a intuitive and useful way of interacting with computers. It has been overplayed so much that I kinda hate bringing up how effortlessly my kids use a tablet, but seriously, they do, and observing them on it is part of why I am thinking about this. Personally I don’t think touch interaction will replace keyboard, mice, or track pads on platforms where those already dominate. Touch screens will merely compliment them very nicely. And as cool as other interaction methods such as eye tracking, voice recognition, or body gesture readers are conceptually, for the near future at least, I see those as only being practically applicable for niche cases whereas touch seems beneficial in many more scenarios. My take away from all these thoughts is probably nothing all that revelatory or novel. It is simply that it doesn’t matter what sort of device you are designing your application GUI for anymore, you need to consider if, where, and how to make it touch friendly because, even if your particular platform doesn’t have touch capabilities now, I guess the odds that it will in the future are increasing rapidly.

RESTfullness and web-frameworks

After working on an offline mobile web app that integrated with a Grails backend, and after that being prompted to explore options for a new some green field development, which lead me to re-evalutate things like REST to NoSQL to MVC frameworks in general to mobile frameworks, to front-end frameworks in general. I feel like I have started to form a more robust comprehension of where web-app development is headed in general, and most of the web-frameworks I know of seem to be missing it so far. This would be hard to articulate briefly, but blogs are good for taking a wild stab at that sort of thing, right? Disclaimer: this is just me sort of thinking out loud, so take it for what it is.

I am coming to the conclusion that I don’t think I want to use Grails anymore. Either that or I want to gut it of a lot of what it does. Sitemesh, don’t need it. Hibernate, don’t really want SQL database anymore, schema’s are so restricting/un-agile, so don’t need it. GORM, dislike it about as much as I find it useful, so could really take it or leave it. if you end up working with a object DB then it is pretty much an unnecessary abstraction anyway. Groovy, well I like it better than Java, but honestly Scala seems like it might be the most promising language on the JVM, and for that matter other non-JVM languages have plenty of appeal too. Resources plugin, Tablibs (built in or customizable), Scaffolding and Templates, i18n… better handled by a front-end framework.

Or…  RESTfullness and MVC are beautifully simple things, and these plus the idea that next generation web applications can no-longer count on consistent and/or high-speed connectivity, but can count on robust javascript engines on the client side means that pushing as much of the application to the client as possible is now something to strongly consider. . Grails (and lets not just pick on Grails, most web-frameworks I know of) is still stuck in the paradigm where views are generated server-side .

Grails, again, to be fair, this seems to be a pattern for web frameworks in general, has been advancing in ways that make it more powerful and thus more complex, not less. True it does a decent job of hiding that complexity away most of the time, but even so, what if  its being there is all unnecessary in the first place? The trend in the way people are using their computers/devices would seem to me to drive rich apps working on the client-side with relatively simple storage and syncing services that they connect to. Maybe what it means for web-frameworks to evolve at this point means to specialize, simplify, and strip down.

Flattr this!

Jan 2010 Ubuntu Browser Benchmarks

A follow-up of this.

Note: I am just comparing Javascript. This is no longer a good way to benchmark a whole browser, if it ever was… but it is just interesting to me, and gives one metric that is an important one.

Environment is Ubuntu 10.10 64bit on Core2Quad@2.66Ghz

Browser Version Sunspider result
Chromium 10.0.634.0 277.2ms +/- 1.8%
Midori 0.2.9 388.5ms +/- 1.0%
Epiphany 2.30.2 382.0ms +/- 2.4%
Opera 11.00 352.6ms +/- 1.8%
Firefox 3.6.14pre 1883.8ms +/- 2.6%
Swiftfox 3.6.12 1068.2ms +/- 2.3%
Firefox 4b10pre 283.6ms +/- 5.0%

All the browsers have advanced pretty well. Once Firefox 4 finally ships I’d say the playing field is pretty level for javascript performance in browsers on Linux. In real world usage I just don’t know that anyone would be able to distinguish a speed difference between the browsers when it comes to javascript. The next pieces browsers need to keep working on are HTML5 and CSS3 implementations, Hardware acceleration for 2D and 3D rendering, and additional browser features, like extensibility and ‘installable’ web apps.

As a web developer I am excited about where things are going, and how the web as a platform is advancing. Native (meaning native to the OS/Desktop environment) applications aren’t gone yet, and probably won’t be for a long time yet, but they are needing a better and better excuse to not move into the browser. What would be the benefit of that you ask? The same that Java Swing, Adobe AIR and others have tried to achieve. OS independence. You write it for Firefox according to defined standards and it should work on all browsers that implement the same standards on all the OS’s. That is a big deal! I think a couple prime candidates for proof of concept browser apps would be all the little games normally included in Ubuntu. Mines, Solitaire, Tetris clones etc. and maybe the social networking client like Gwibber. If only I had more time to play…

Update: I played some with Tetris in a browser idea

Flattr this!

A Service is not a Product

A recent article details How Google Is ‘Closed’, Just Like Apple

I have to disagree. They may both have aspects that are closed, but they are definitely not ‘just like’ each other. Apple sells a product that is closed, Google sells a service that is closed. The difference is crucial, and should be obvious to anyone who has taken business 101. Some companies make money on a product some on a service. A closed service is nothing new, and doesn’t offend me (though it may entrap me). A closed product is a new concept. It is offensive because it restricts me in new ways that I am not accustomed to evidenced by new laws that have to be created to enforce the restrictions. I would add that if these restrictions actually were justifiable we wouldn’t need new laws to enforce them and thus wouldn’t feel offended.

Apple has plenty of closed services as well by the way, so they may qualify as doubly closed, or maybe closed squared?

Flattr this!

Pragmatism, Idealism, Tension and Balance

A friend and I got into a brief discussion around audio codecs and licence restrictions today as we talked about working on something together – specifically why Firefox doesn’t support mp3 in their audio tag. Other discussions we have had hit on this idea of pragmatism vs. idealism. Today I was reminded of this now-out-of-date article that still had some interesting points to make (while also making dumb points along the way).

What I gleaned from the article is that there can be a good sort of balance these perspectives can bring each other. That balance is achieved in a tension between not completely ignoring the reality of the situation, and not completely capitulating on principles that matter.
It seems to me this thought can be applied more broadly to things outside the realm of software development. Church practice, politics, family life, etc. In most things I tend to find myself farther to the side of the spectrum of “we can’t compromise on principles”. Some people I have relationships with tend to balance my perspective with their “don’t be unrealistic” perspective. There can be some tension in those relationships in the process, but I am finding myself appreciating that more than I used to. The tension can be a good thing.

Flattr this!

IP infringement and definitions

Apparently the current US administration is pushing to ‘reform’ intellectual property laws, and even some popular tech sites have chimed in. Anyone around me for any length of time over the last few years knows that intellectual property is a pet subject of mine, so I can’t help but be annoyed by what they are saying.  Is piracy theft? Well yes, but I don’t agree with what they mean. I think intellectual property is an altogether invalid concept, and even find the term ‘intellectual property’ itself objectionable because the word ‘property’ can’t legitimately be applied to ideas, patterns, or arrangements. Property by definition needs to be able to be owned in an exclusive manner. I suppose that is why they had to add the word ‘intellectual’ in front of it – to distinguish it from actual property, in which case they may as well have called it ‘imaginary property’! The argument is framed by the terms used. My aim here will to briefly question definitions. With diagrams I ‘stole’.

There is the somewhat popular graphic that emerged a while back.

In a simple way gets at a core issue. Scarce vs. non-scarce entities. 'ownership' is not violated by duplication in the way it obviously is by theft.

And lots of variations springing out of that:

pirate hater
Didn't like the original, so attempts to recast the 'pirates' as evil without really dealing with the scarcity issue. I guess the underlying claim is that piracy 'steals' the possibility to profit exclusively, and those potential profits were somehow owned by an ideas originator, however, you can't really own an opportunity any more than you can own an idea so it doesn't hold water.
Just decided pigs were more fun than stars I guess...

Some people prefer hexagons and shopping carts

A feeble attempt to appeal to the plight of the starving artist while again ignoring the core issues. Has this person lived under copyright for so long they have no ability to imagine alternative models of profitability? Do they really think without IP all creativity and innovation will cease? In general IP benefits the big guys more than the little guys. Many independent artists thrive without IP, others just prefer to do art for arts sake.
file sharing not piracy
Pulls into question the usage of the term 'piracy' with a touch of humor.

File sharing has evolved some, and I sort of feel it is worth while to illustrate how as it is actually quite relevant to the file sharing legality issue. However, I can’t really do it better than the wikipedia article on torrenting, and this demo (won’t work in IE, don’t try) does a slick job of illustrating a torrent in action.

Copying is duplication, not piracy. Piracy is theft in international waters. Theft only operates in the realm of property and ownership. Property is a scarce resource that can have exclusive ownership. Ideas can have an originators but not owners.

Flattr this!

My Android Experience Thus Far

I have had my Samsung Moment since around Thanksgiving 2009. It came with Adroid 1.5 initially and was my first smartphone. I played with it quite a bit at first, but after the first few months the novelty mostly wore off. I fell into a pattern of using it for its browser, email, twitter (mostly reading tweets not tweeting myself.) and occasionally for taking photos. Battery life was pretty dismal which actually discouraged me from using it because I would rather not have a dead phone by the afternoon.

Sometime in the spring it got updated to 2.1 which was sort of a let down to be honest. Most things were just as they were. There were a few more options as far as apps, and a nice new unlock screen, but that about covers it. standard 2.1 stuff was left out by Sprint. I guess they had their reasons.

About a month ago I decided I wanted to try to do some deeper customization. These phones are like little computers. If I could install Ubuntu on my laptop why couldn’t I do something similar on this phone.  Android is basically a Linux distro for mobile phones.

Anyway long story short – rooted it and installed custom ROM with the help of sdx-developers. I actually had some reasons for work that prompted this move, but those aren’t so relevant here. The phone is awesome again. A couple new features and capabilities come with root access that only geeks will appreciate, and all the bloatware that I never used and couldn’t get rid of was gone, but the most useful aspect is the dramatically improved battery life. Now a full day of heavy use is no problem. Two full days is pushing it a bit, but I do it from time to time. The wireless tethering is slick and actually useful when traveling. (did I mention I am not paying Sprint for this feature? … don’t tell….)

It comes with some consequences. The occasional random reboot or flickery screen, but so far they haven’t really interrupted anything I needed to do. reboot is faster than it used to be too. Overall the stability isn’t really a hit, because the phone wasn’t glitch free before anyway.

What is cool is that these now ‘old’ phones (Sprint tweeted they were done providing updates for the Moment 6-7 months after it was released!) can continue to be very useful because of an active developer/hacker community. I do encounter these longings to have the latest greatest devices, but I am also beginning to see much more challenge/fun/value in being able to keep lower end hardware useful through better software.

The more I have a smartphone the less I want to be without one. It is interesting how my computer usage habits are changing because of it. Maybe a topic for another post.

Flattr this!

Ubuntu Lucid = mega cool, but…

I am really enjoying the latest Ubuntu. They added lots of polish, and the OS is consistently moving steps ahead as far as ease of use for geeks and non-geeks alike. My thoughts center around, “but does it even matter?”. Sure, Ubuntu is free on a couple levels that OS X and Windows aren’t, but most non-developers don’t feel the shackles, so they don’t care.

Like an invisible tax the cost of the OS is bundled with the hardware for the vast majority. Again, for non-developers, the licence restrictions are slightly annoying at worst, also they are accustomed to paying for software, so they think “who cares?”. It would take something more significant than a very usable and free alternative OS that they would have to take the effort to install and get accustomed to make them care. I won’t be wasting a lot of breath trying to convince these sorts of users to make the switch. My lengthy discourses on open source ideology would merely prove to be confusing or annoying. That is not a guess, it’s happened.

Developers, however, have much less of an excuse for not caring. They should be feeling, or at least be aware of, the shackles of the closed environments and ecosystems. Those with a choice, often choose to ignore or to justify. I have noticed they justify their use of OSX or Windows for what tend to be short sighted reasons. If such short sighted excuses were ever really valid, is another debate, but either way, those justifications are getting weaker and weaker. Ubuntu, from a developers perspective, has potentially crossed over from being a viable alternative to being a superior one. 10.04 = a better chance of them actually being convinced, like me, that Ububtu is mega cool!

Flattr this!