The paradox of FOSS projects supporting Windows
As we near in on the Inkscape 0.46 release, I've been increasingly focusing on the few remaining "critical" bugs. A lot of these are specific to the Windows port, which is a bit frustrating for those of us whose big hope in life is to *replace* Windows, not to support it.
For Inkscape, popularity on Windows was sort of a side-effect not an objective. The entire raison d'etre of Inkscape (going back to the Sodipodi and Gill origins) was because of the lack of drawing tools on Linux. The proprietary Windows drawing app vendors refused to support Linux, so we all set off to fix that issue ourselves, and in so doing help make Linux a more viable alternative to Windows. For me personally, solving bug 1 is a big motivation to working on Inkscape.
In fact, while there had been some work on Sodipodi to do a Windows port, when we started Inkscape we dropped that, so we could focus on the Linux core. But it was not long before people who loved Inkscape and wanted it to work on Windows volunteered to undertake the porting work. We figured, hey, if it didn't impact the Inkscape core, and if these Windows contributors took care of all the porting work, what could it hurt to have more platform independence? These porters deserve a lot of credit - not only did they pull off a decent port, but the Windows version of Inkscape has proven to be extremely popular, and today our estimates are that we have vastly more Windows-based users than any other platform.
One could also argue that a Windows port could help provide a "stepping stone" for people to ease their migration from Windows to Linux. I have no clue whether this has come to be, nor know of any way to measure the significance of it if it has.
A point I often hear made is that having a good Windows port of Inkscape will "increase it's popularity." Perhaps, however popularity by itself isn't valuable - it needs to be translated into something tangible. For proprietary software, increased userbase means increased income, which allows hiring more developers to fix the bugs that the increased number of users are reporting. For free software projects, popularity doesn't bring value quite so directly - although you definitely get the increased number of bug reports!
In theory, you would expect that increasing userbase would result in increased number of contributers. This is the whole concept of Open Source - more eyeballs makes bugs shallow, a rising tide raises all boats, et al. I say 'contributor' rather than 'developer' deliberately, since value to an open source project can come in the form of a lot more than just code - documentation, translations, bug triaging, testing, marketing, tech support, and on and on.
So rather than just looking at userbase size by itself, consider the *ratio* of contributors to userbase. A platform with a high C/U ratio is going to have a lot more luck at stabilizing and optimizing its package than one with a low C/U. Commercial software can get by with low C/U's by paying developers to work on it; volunteer-only FOSS projects don't have that option though.
Thinking in terms of this ratio lets you think of larger problems in a bit different light. For instance, to determine if it's worth supporting a given platform, you could imagine comparing the C/U ratio to a Bugs/Userbase ratio. If C/U is too low in relation to the B/U ratio, the project won't be able to keep up with bug reports, so supporting the platform is going to literally be more trouble than worth.
This also lets you consider whether userbase growth due to increased popularity is going to be a good thing or a bad thing. If you have had a high C/U ratio previously, you can be relatively certain that increasing the userbase will bring with it a lot of new contributors. Often this can take the form of users simply helping each other out with answering questions on forums, helping with bugs, sharing tips and tricks, etc. This all represents value coming into the project, and is a strong sign of success.
On the other hand, with a low C/U ratio, increasing popularity may simply bring with it piles of bug reports and frustration by all involved. With few new volunteers coming in, existing ones risk becoming burned out, and the C/U ratio continues to decrease.
I also have a hypothesis that the base C/U ratio is platform-specific and derived from the level of technical knowledge and culture of that platform. In other words, by default, a Linux userbase will have a higher C/U than a Windows userbase, because the coder/non-coder ratio is higher, and because of cultural differences: Windows users are more accustomed to business models where they are simply consumers of products and their role ends at the point they submit a bug report; volunteer-involvement in a company's software product is not only a foreign concept but indeed something that can get you sued! On open source platforms like Linux, it's a completely different story - users are welcomed to be part of the collaborative process.
Another obvious question is, how do you improve your C/U ratio while allowing U to increase? A lot of ideas seem obvious - making the project more welcoming, encouraging people to get involved, providing ample training material, demonstrating how new participants can scratch their itches, encouraging them to learn coding, etc. Even though these ideas are so obvious, it's amazing that projects run into trouble fairly regularly because they've not done them - which can result in people not in the "inner circle" to not get involved; keeping C fixed while U goes up is just a recipe for disaster.
But I'm particularly curious how to deal with the situation of C/U on Windows. On the one hand, I don't particularly care to make life on Windows easier - I want people to switch to Ubuntu! But on the other, I want other people to take care of the Windows bugs; the existing Windows Inkscape supporters are obviously pretty overwhelmed, so really this means we need to get more Windows contributors. Telling Windows bug reporters the equivalent of "send a patch" gains either blank stares or outrage. Others would like to, but don't have the time or interest.
Sometimes, one way to increase contributions is to simply put the software bugs and all - in keeping with the "Release Early, Release Often" adage. This exposes the bugs to more people, at least some of which will be sufficiently bothered to put in the effort to fix it. But this is a mean thing to do deliberately to users.
Some would like to offer bounties, but honestly the amount of money required to compensate a developer for the time they spend fixing a bug is usually way beyond what a user can reasonably afford (and who wants to do the paperwork?) Personally I like the idea of bounty systems, but for whatever reason they don't seem to work in practice.
It's sort of ironic, that many of us got involved in Inkscape to further the aims of Open Source with the intent of getting people AWAY from Windows, yet since there aren't enough Windows contributors to cover all the problems particular to that platform, here we are with an expectation that we spend extra time supporting it. Do Not Want!
freeman, certainly a good set of points and well worth thinking about.
Still, for me personally I can't shake the feeling that with so much of the bulk of Inkscape users being on Windows, that any time I put into development on Windows is just facilitating people remaining on that platform. Yeah, maybe for some small percentage of people, having the software on both Windows and Ubuntu makes their transition marginally easier. But for the much larger proportion what motivation exists for changing if everything they would want from open source is ported over to Windows for them? I feel like I would be subsidizing 99 people to stay on Windows for every 1 who I would be helping come to open source.
I suppose this is one of the reasons I don't really invest much time into Inkscape. Instead, by working on X.org for Ubuntu, I know that 100% of my efforts are helping people who are coming to Ubuntu.
I've made the plunge from Winblows, and love reading all the posts and comments on Linux. Winblows disgusts me on how they've ripped us just like Bell Canada did for yr s on phone service and especially long distance. I don't make enough money to be able to donate but I have been going to the local junk yard and collecting old PC's to rebuild and give away to the many who cant afford. Every one that I've given away has had one flavour or another of Linux so far and with Ubuntu taking well over 90%. I don't specialise in anything in particular but I love to try and experiment with all this software that is at our hands. I just cant believe that all Linux and Unix OP's haven't way surpassed winblows long before this. I just stumbled across yr set of programs and as soon as I try them out I think I might be able to contribute in my own little way by making sure that your software is on every pc I put out there. I hope in some way this may help ? if not in the long run??
(just a lonely experimenter that loves to help way in the back ground) Michael.
Hello Bryce, just another stranger - I used to work on Evolution, and although I left before the windows port got going (did it ever?) we suffered similar problems of C/U ratio on our supported platforms.
Vadi has it right. Do what YOU want to do. If you have a choice (e.g. you're not paid to work on it), don't let others tell you what to do or even plead you into subservience. People 'appreciating what you've done' is all well and good, but really, is 'being appreciated' why you write code? I used to find it embarrassing most of the time. Can't they just plead nice words with (or pay) a windows developer so he/she can go through the pain instead?
I would be quite hard on this - if the windows porters did not take into account how much work it was, or cannot keep up with the work-load, then the last thing you should be doing is taking responsibility for their mistake. It is not being selfish to take into account your own desires and plans before those imposed on you externally, so you should feel no qualms about the morality of this position. People laying guilt on you are not worth listening to.
So, only do it if it makes you happy. If not - and it seems it does not - why on earth are you doing it!!
If these windows-only bugs are causing delays, I would say let it delay the windows port until the windows developers *responsible* can catch up. Every proprietary company delays their gnu/linux versions because they do not resource them sufficiently - so why should you be subsidising someone else's port of your software with your precious spare time? And as an added bonus, you have an easy way to encourage users to consider the gnu/linux version over the windows one, thus promoting your original reasons for joining the project. 'Like what you see? Want a fuller experience ... go get it on ubuntu! it's free!' etc.
Just don't waste your time and energy and burn yourself out trying to keep other people happy for problems someone else created for you. It wont make you happy.
While i'm here ... bounties are pointless at best - and probably a lot worse than that in practice - I urge you to avoid them at all costs. Been there, done that, realised it as a bad idea, but Novell were paying so I couldn't do much about it by then.
Users don't realise how expensive software is to make, so the bounties are never worth it for experienced developers, as you say. So at best you get poorly written software from novices, and you spend a lot of time teaching them to fix it or fixing it yourself (cheaper in the long run).
But worse than that, it also tends to attract the wrong sort of short-term contributor - once they have a bounty, why would they maintain the code - which is where the real cost comes in, as you are no doubt well aware by now.
And it also leads to a pay-per-feature culture invading the project.
It's all bad.
First, let me say that I know resources are limited, but please hear me out.
Make building a Linux distro around your project a project for the community. This will take time to get off the ground. Lots of howto videos mixed with cool effects and articles will help drive enough motivation for Windows users to try the distro making thing. Initially, you may want to partner with other app projects and with a distro. Respins of popular distros are (I think) rather easy to do (at least with careful instructions), so this can provide a starting off point.
[A bit of a rant and cheerleading...]
Keep in mind that Windows is not conducive to sharing and customizing, but Linux is ideal. When Windows users start to see this, ideas will pop into their heads (hobby and business alike), and they will have another reason to install Linux. A LiveCD is a customizable, portable, shareable, full platform/presentation. Meanwhile, when you port to Windows, you are discouraging Windows users from moving over or even trying out Linux. Windows is the platform owned by a closed source monopolist. All "open source" on Windows/Vista and even Mac ceases to be open source, becoming instead an open script layer over a proprietary locked down system much like HTML might be looked at when running within IE. There are many many MANY ways and reasons for Microsoft to protect their Windows monopoly and keep port makers running a rat race. They control every line of the trade secret source code within their binaries, including bugs and time-bomb effects as well as deterioration effects and can change these around on a user's PC with a simple online update based on their current agenda. You aren't going to get quality API's (over a function of time) nor a good ability to debug these interfacing system components when you use closed source Windows/Vista. Porting to these closed platforms will suck up time. The porting challenge can be exhilarating but much energy will be spent for every step only to possibly fall backwards on the staircase at an unexpected moment. I think a LiveCD is BY FAR more useful to Linux/FOSS and ultimately to end users and developers than a port. In the short-term, Windows users would have as an obstacle the fact that there are not too many people out there that can come over to their house to fix a problem. In any case, as lead maintainer think beyond the popularity of your app project, towards the popularity of FOSS. Build a solid foundation. Don't neglect GNU and Linux. As Benjamin Franklin said wrt the American Revolution that was getting started: Join or Die http://en.wikipedia.org/wiki/Join,_or_Die .
I don't expect people to pay too much attention to the "do not port" warning/advice, but I just can't pass up the opportunity to lay out the arguments for completeness sake. I am aware that some developers don't have Linux experience but want to dabble with FOSS; however, this group may be motivated to help build a distro. They will gain long term by moving from Windows (at least as a hobby). We all started somewhere and most of use probably called Windows home at some point or other (I did). Linux knowledge is cumulative. It's not a rat race. Linux is liberating and those building tomorrow's hot new stuff will have to learn Linux first. Microsoft won't/can't give you Windows to make into your playground as you can with Linux.
For those that like challenges, creating a super distro around this project is very challenging. Show existing distros how the desktop experience should be like. Show your userbase why this distro is the distro to have when they want to do X.
Plan this distro making as a project for noobs of varying skills. Brainstorm (use a wiki?) on ways for users to get into teams. As you stated, there are many types of contributions, so many can find a way to chip in.
You may also want to have motivational contests and the like.
Many less savvy users want to contribute, but they need baby step help. Ironically, the end product of this exercise to motivate noobs (the LiveCD/DVD) can be just the tool to further help ease people into your project app and Linux.
Remember, Linux LiveCD/DVDs that result from this will be theirs to do with basically as they wish.
Check out these two links:
http://www.linuxtoday.com/news_story.php3?ltsn=2008-08-19-019-35-OP-MS-SW-0004
http://www.linuxtoday.com/news_story.php3?ltsn=2008-08-21-024-35-OP-DT-SW-0000
My email is hozelda-at-yahoooooo-com (fix the yahoooooo)
Thanks for the time and for the thoughts expressed on this page. I find this very exciting.
Its catch-22 situation.
But I still feel that open source projects on windows are necessary: people do learn somethong about opensource.It helps in spreading knowledge.
I write and podcast, among the other things about open source in Hindi. I am often asked a question, What is Linux; is it aanother theme of windows :-)
Very interesting post. It’s important to keep in mind the philosophical goal of some free software developers. That goal is to spread freedom by encouraging the use of free platforms, ideally from hardware through BIOS and drivers to all software, but certainly as much of the software stack as is possible. The question is whether it’s worth the additional development and maintenance work to make free software applications available to non-free platforms, or if that work subverts the goal of encouraging the use of completely free platforms.
Of course, with the source code available for porting, there are no universal technical barriers to running any given piece of F/OSS on Windows or Mac OS X. The project’s maintainers may refuse to merge the portability patches, in which case a fork is necessary, but this is a question of philosophy, not technical concern.
@Gatonegro
I've talked to a few folks since writing this article who had done the Windows->Linux switch and they made a couple interesting points.
First, like you point out, the existence of Inkscape as a cross-platform tool enabled them to switch to open source in stages. For them, drawing was a principle use of the computer, and so they needed to use Illustrator or other Windows-only tools; Inkscape on Windows enabled them to start migrating over slowly. Then, once they were comfortable with Inkscape as their primary tool, they then took the plunge over to Linux.
Second, most of the people who work on the Windows port (including Ishmal!) said they are actually Linux users day to day. So this is evidence that Windows is drawing labor that otherwise might be going to Linux. On the plus side, they didn't seem to mind doing cross platform support work.
So it sounds like, if our community is investing Linux-based resources into supporting a Windows port for the potential benefit of gaining Linux converts, we ought to step up our marketing to the Inkscape Windows users about why they should convert over.
It also says that while we shouldn't ship a "crippled" Inkscape on Windows, it may not be necessary to port 100% of our functionality over, where that functionality would require an excessive amount of platform-specific work. (Unless of course someone passionate about the platform really wanted to do it.) A good goal to shoot for would be to give Windows users a pleasant taste of what Inkscape can do, and some encouragement to switch to Linux so they can gain the full deal.
Very interesting post. I too sometimes have doubts as to wether the courses of action we take are the best for our ends or not.
I do am sure that having multi-platform applications is good for the users: it helps migration. I have helped many people migrate from Windows to GNU/Linux and one of the key steps was to first replace their proprietary software with free one. Once they are using Firefox and OpenOffice and Pidgin and whatnot --- then it is relatively easy to switch the OS under their feet.
That said, I think that your comment on the fact that ports to Windows tend to "suck off" the developer task force resources (perhaps because Windows users are less contributive) is very interesting, worrying, and should at least be considered with extreme care. If it is indeed as you say, the mere effort of porting programs to Windows would be a very bad idea, and we need solutionsn to fix it.
Perhaps Windows ports could be a separate, sister project? Sort of like -- the main developers stick with the GNU/Linux one, and a team of Windows developers tends to porting the resulting program to Windows? That way we are separating, at least partially, the Windows port from the main program, and avoiding one to suck resources from the other: if the Windows port has bugs, have Windows developers and users fix them.
Another (and not exclusive) option is to try and rally more involvement with Inkscape development. We could start a n Inkscape Propaganda Division with the aim of getting people to:
a) Use Inkscape.
b) Report bugs.
c) Write tutorials.
d) Contribute code and fixes.
e) Spread the word.
It'd be especially fun since Inkscape is a good tool for generating propagandistic material... I can already see banners of "Inkscape needs YOU" or "What have YOU done for Inkscape?" :o)
What do you think?
Hello Bryce,
I found your article rather interesting. I dream of a day where I could use Linux all day long. I definitely prefer it over Windows. Sadly, due to the line of work that I'm in, I don't see myself breaking free from Windows anytime soon. I depend on too many proprietary applications where no free or open source alternative could easily take it's place. The best that I can hope for is cross-platform applications, taking the operating system out of the equation. It is very convenient to step onto my Windows machine and Linux machines and use the same set of applications. Inkscape happens to be one of those.
One of the things that I love about Inkscape is that it is cross-platform software. I use it more often because of it. I rely on it because of it. I don't use a Mac. Never have but I'm pretty certain that Inkscape would be one of the things that I would install right off of the bat. I cannot speak for the lot of Inkscape users around the world but I will say this...I appreciate the efforts of the Inkscape developers that port it to other operating systems. Thank-you. :)
You do what you want to do - promote the OS of your choice then.
That's what I do on my project - everybody who gets involved with me knows that I'm on Ubuntu (I have a sig banner on the forums that says "duubuntutu?", & make sure to help out people on ubuntu, so the idea spreads).
As for windows problems, well, I haven't had any showstoppers so far, but did run into quite a few minor bugs - some of which were very hard to fix because they were bugs just for a stupid reason. But I'd let the users know of that then, so they got the idea.
You ultimate goal is to make sure everyone uses Linux.
But the fact that most people are still using Windows means that each and every Windows user has to make the transition from Windows to Linux.
Your success depends on a simple equation:
Number of converts = Number of conversion attempts * Conversion success rate
Let's address these two issues, from a USER's perspective:
Number of conversion attemptsUser's question: What is Linux?
Ideal Answer:
When you use Windows-port of our software (say, Inkscape), there is a banner/link on top saying "Enjoy Inkscape with Linux", click on it and see.
Point in Question
If you want people to use Linux, you have to make sure they know Linux in the first place.
I'm fine with Windows. Why Should I try Linux?
Ideal Answer:
In Linux, you got free and better software. Inkscape will have more functionality and perform faster in Linux.
Point in Question
You can only convince people to try new things, if you can convince them you add value to them.
Make sure Linux + Software are up to user's expectation.
Conversion success rateLinux looks interesting, but I fear I mess up my PC
Ideal Answer:
Here is a Linux Live CD, just pop it to your CD drive and give it a try, it will not mess up you PC. If you do not like it, just throw the CD away, everything will be back to normal.
Point in Question
There is nothing to fear, except fear itself.
I am in Linux now what do I do?
Ideal Answer:
You see, there are icons on the desktop. They looks familiar, right? See, Firefox, Thunderbird, Inkscape, Open Office. Lots of familiar faces you have seen in Windows, isn't it? Now give them a click and you are good to go.
Point in Question
First contact is crucial. If users cannot find something he/she can use in Linux, chances are they are going to throw away Linux rather than learn Linux.
Familiar faces in a foreign environment (Linux is very much foreign to a Windows user) is very much appreciated and provides a smooth transition.
That is the point where Windows-port of Linux software help Linux adoption.
Summary: Convert a Windows User in 3 steps