Windows Loses Ground With Developers 431
An anonymous reader notes that InfoWorld is covering a survey of North American developers that claims that Linux is gaining share as the number of developers targeting Windows fell 11 percent over the last year. Evans Data has been conducting these surveys of client, server, and Web developers since 1998. Evans Data says that the arrival of Windows Vista likely only kept the numbers from being even worse. The big gainer wasn't developing for a Web platform, but rather for Linux and "nontraditional client devices." Windows is still dominant, with 65% of developers writing code for this platform. Linux stands at almost 12%, up from 8% a year earlier. The article says that Evans Data collected information on Mac and Unix development but did not include them in this year's report.
Client vs. Server Applications (Score:5, Interesting)
Perhaps Its just gotten easier.. (Score:4, Interesting)
Windows has some of the best tools out there - software as a whole has matured to a level that there hasn't been anything "new" and its been mostly upgrades. No wonder the market has shifted. Just because there are more developers in other environments, doesn't mean the market has dried up, just that it has matured.
Hardly Surprising... (Score:2, Interesting)
Surely that's the [regularly stated on
Re:Client vs. Server Applications (Score:5, Interesting)
We don't do server apps, and we considered linux quite seriously.
We have abandoned windows as a development platform, but it wasn't linux that replaced it, it was OSX. Linux's lack of a standard GUI layer in the OS - modern menus, buttons, lists, even windows - is the primary issue for us. There are lots of things that are very attractive about linux, not the least of which is a large user base that we think would have an interest in some of the things we can offer, and so we do keep an eye on what is going on. But there is a long history of independent widget development projects with quite a range of capabilities, licenses and corresponding legal issues, and in some cases, prices for commercial use; there's no certainty there will ever be a standard graphics layer. In my opinion, which is only one fellow's outlook (though I do control my company's direction) this is a key factor.
Both Microsoft and Apple have some pretty nice interface builders; that'd be a factor too, presuming that the embedded graphics eventually gets past xwindows and user-land layers on top of it. And by the way, I'm not advocating any of that be dropped; just that a standard be added to the OS that anyone can use in any way without any issues, just as one can use the fopen() call and know it'll be there and neither legal nor accounting will have to be called because the call was used.
.net anyone? (Score:5, Interesting)
This mess is drawing Microsoft's attention away from the C/C++ layer, where it's sorely needed, and into what, as far as I'm concerned, is comparable to Visual Basic. Put simply, neither my employer nor I are interested in writing in a proprietary, bytecode-interpreted language. If we have to abandon our C/C++ investment, it certainly wont be for a proprietary java knockoff. It will be for the real thing, allowing us to slowly drift away from Windows.
Blowing off VB6 burned some bridges (Score:5, Interesting)
Different niches (Score:5, Interesting)
In a perfect world, this article would distinguish between development "for pay" and all development.
Re:Client vs. Server Applications (Score:5, Interesting)
You can use GTK instead if you like. Or if you want something that works in anything, but looks different every version, you can always use WX.
Add in a platform independant language like Python if your application is not extremely intensive (and sometimes, even then), and you have an extremely nice setup for anyone to use.
And QT has a very modern (and more importantly, customisable) look. It comes with a little app, and you [the user], can set GUI appearances that the developer left as default, to look like Windows, MacOS 9, MacOS X, and QTs native, amongst others. It also pulls the system default colors for various field types, which is extremely nice.
Developing for Linux is just easier. (Score:5, Interesting)
Meanwhile, the entire POSIX spec, suitable for fully implementing a POSIX system including the utility apps, with commentary and rationales for design decisions, fits in about two and a half feet of binders.
Intellisense is practically mandated if you want to work with an interface as baroque as Win32. And it's nice even when you're working with your own defined classes and structures. But it has its own drawbacks, as Petzold notes:
I develop for many platforms at work. It's a core part of my job. I mostly enjoy writing code for Unixish platforms, and tolerate the Windows stuff. The APIs on Unix are small, well-thought-out, have few if any side effects, and tend to be thoroughly documented. I find very few interfaces on Windows have even a majority of these traits, let alone all of them.
I've rarely felt the need for more debugging support than Linux comes with. The problems tend to be simpler and more easily uncovered. Eclipse is nice, and appears to take many of the good things about Visual Studio and leave much of the bad behind. For some projects, it's very useful. For others, it's overkill.
Another item worth reading - the whole book, really - is The Art Of Unix Programming [faqs.org]. For a Windows developer's perspective on the book, see here [joelonsoftware.com]. Needless to say, I don't agree with everything he writes there, but you might find it interesting.
Re:Client vs. Server Applications (Score:1, Interesting)
Re:Client vs. Server Applications (Score:3, Interesting)
The people at PC-BSD thought the same thing. So PC-BSD specific software was GPLed since they used QT.
It's now BSD also, for the same reason that you are incorrect. Namely - you can use QT without having to GPL your stuff.
Re:Blowing off VB6 burned some bridges (Score:5, Interesting)
The lack of a clear upgrade path from VB6 has forced companies to hold off on porting, upgrading or even replacing "legacy" VB apps for a lot longer than they otherwise would. The standard average lifecycle for a LOB app in most corporate environments is about 3 years. We're going on 5 now, and unless Microsoft pulls a rabbit out of the hat somehow, these people are probably not going to go to .NET. They'll go to Java or some other technology, at least those that have the option, because some don't. Microsoft has made it really hard for a lot of folks and they're going to end up paying for that in the long run.
Microsoft squandered the mine gold that was the enormously huge VB developer base. They should have released a follow up to the COM-based VB6 platform with improvements and provided a clear timeline for the jump to the .NET CLR. Instead one day they just announced VB6 was dead, being replaced by something that is arguably better but completely incompatible, at least from a practical standpoint.
Re:Client vs. Server Applications (Score:5, Interesting)
You can have your code under BSD license, because it's less restricting than GPL. But if anyone tries to use your application as a part of a commercial closed-source project, then they will be violating _GPL_ license of QT. Which, sort of, defeats the whole purpose of BSD license...
You can have QT in BSDs without GPLing the whole thing because of the 'aggregation' clause in GPL.
Re:Linux is not another Windows (Score:3, Interesting)
Re:Linux is not another Windows (Score:2, Interesting)
This is a part of the issue, but keep in mind that most commercial software houses are going to target the biggest userbase they can. Even if they have to use Notepad to write the software.
I would love to write software that would work on Windows, Linux, and OS X; but I work at a small development company. We are far more productive just sticking to one set of code for one platform, because there are no good languages out there that work for any platform.
There are good languages that work for any platform. Ruby is the current favorite among fanboys. (I'll admit, it's my favorite too, for now. Though it has its warts). Java is certainly cross-platform, but it's almost as painful to code in as C.
Writing software that works with Linux, OS X, and the other Unix-like operating systems is trivial, if you plan it right from the start. Apple has done a lot to make targetting Unix-like operating systems as easy as possible, and they keep adding tools to make porting Unix applications to OS X easy.
For instance, OS X comes with Perl, PHP, Python, Ruby, and Java, by default. Getting GCC installed is a matter of installing the Xcode Tools. Leopard is going to include Cocoa bindings for Ruby (I'm excited about that).
Outside of Java, Windows doesn't include any cross-platform programming language, which complicates deploying to that platform. Targetting
Re:Client vs. Server Applications (Score:3, Interesting)
We did.
At least, in the sense that we're now targetting Python + wxWidgets (and soon QT4) for pretty much all new development. Most of our programmers still use Windows as their desktop OS, but all of our new software is testing to work at least on Windows and Linux (and FreeBSD for server stuff, and OS X if we're bored).
Honestly, we've had enough of vendor lock-in. Sure, our programs still need to be able to run on Windows but that's only part of the requirements now. Given that we've already rolled out Firefox, Psi (for Jabber messaging) and OpenOffice.org on every desktop, we're only one major release of our in-house core application away from not needing Windows anymore. We'll almost certainly still use it, at least until we can't get security updates for XP/SP2 anymore, but it's now at our convenience rather than by mandate.
Re:Blowing off VB6 burned some bridges (Score:2, Interesting)
So... Free live webcast classes (and also an archive for ones you missed) on msdn, free licenses for Visual Studio Express and also a VB6 Upgrade Wizard built into the IDE left you feeling "stranded?"
You're entitled to your opinion if you don't like .Net or whatever, but saying Microsoft didn't prepare you or offer you the tools needed to evolve with them is a blatent lie. I was a VB6 developer "back-in-the-day" and I couldn't imagine sitting back and ignoring everything that was happening (this wasn't a surprise to anyone). Everytime I hear a sour VB6er, I always wonder what kind of developer they actually are. 1) It was their first language and they've never had to evolve before 2) They actually are the stereotype lazy VB developer who is just too apathetic to move on or 3) They simply refused becase of misinformation and FUD they read in random articles/blogs written by people who regurgitated it from other articles/blogs in hopes to give their site tech cred (9/10 of the articles you see provide no technical information at all - but since it's MS bashing, people just assume).
Some developers might not like .Net, but Microsoft needed it. If you do some research, you can see exactly how much .Net has opened doors for Microsoft. Sure - every door has a group picketers infront, most of which just happened to be walking by and picked up a sign... But if you take a minute, walk by them and go inside; you're going to pick up on this very quickly and be exceptionally happy you did...
The tools and resources are still out there (all free).
Vista hurt the numbers, not helped (Score:4, Interesting)
Re:Ob.. (Score:5, Interesting)
I love the Mac interface, but the thing I always loved about Windows was that it forced me to look more closely at what was going on than I may have wanted to. And that exploration of the nuts and bolts of an overcomplicated desktop OS gave me insights that I may never have gained had I stuck with the more opaque Mac OS. Of course, for those who want that experience today, Linux has it in spades. But as much as I loathe Vista and the company that has trumpeted this abomination on us, I'm glad that I had to learn about a "registry" and I'm glad I had to learn about shared libraries and memory management.
As much as I'm sure that the devices that will contain embedded processors will provide us with utility and convenience, pleasure and all varieties of entertainment, I hope that the idea of an all-purpose, configurable, expandable box with a keyboard and operating system doesn't go away any time soon. And I hope that developers continue to create tools for us to use on those boxes.
Re:Client vs. Server Applications (Score:3, Interesting)
You could have at least picked GTK and had Windows and Linux compatibility. Seems like you guys threw out the baby with the bathwater. Your OSX widget library cost $0, but how much does each development-grade Mac cost? Or are you doing all your work on Mac mini's?
Re:Client vs. Server Applications (Score:3, Interesting)
Then there's the other side. We use a lot of scientific and engineering software that will only run on proprietary Unix systems. Recently, the developers of one of those programs decided to try and port their 64-bit Unix version of a CAD/CAM/CAE package to Linux to compete with their lighter and less stable Windows version. It didn't go over so well. They retained ye olde Motif UI on this brand spanking new program in 2006. After a lot of people were upset by this, the next release of the program saw a somewhat nicer UI. This same company is also planning on cutting development for HP-UX, Solaris, and AIX, and instead focusing on Windows XP, Windows XP x64, and Linux (64-bit), while porting their software to OS X (10.5 64-bit) with their next release.
Just thought I'd throw that in the mix.
I'm actually sad about this (Score:4, Interesting)
The hack and slash security patches Microsoft brings out these days often unexpectedly denies features in the API on which solutions are based thus rendering large chunks of our code useless and a workaround must be found.
Security is important in a connected world and indeed not recognised enough my many programmers but the hap hazard ducks and dives in Windows makes it hard to tackle this issue in a structured way. Often I find myself hacking my way around "Security patches" in order to restore functionality in our software.
Add to that this crazy program (I refuse to call it an operating system) called Vista which is is so secure you hardly can run anything on it. I imagine the next version of Windows is 100% secure as it will only run "Notepad" and "Calculator"
So, bottom line. If the Operating System no longer allows us to use the hardware to drive our programs then the OS get's in the way. For me the problem is that I have a huge skill base in Windows and my programming tools that I don't like to give up. But for some of my projects I seriously consider to try my hand at Linux so I can provide a turnkey solution (Include the OS with the software).
MS Windows has become like a government. It is supposed to serve but instead it now insists to rule the IT world.
Re:Client vs. Server Applications (Score:3, Interesting)
We feel that the time QT saves more than pays for the software.
As to "the little guy" I would say it all depends on what you consider little. My company isn't Microsoft but it isn't two guys in a basement.
Re:Ob.. (Score:3, Interesting)
You're glad you have a lemon for a car because it's forced you to learn car mechanics?
Useless (Score:3, Interesting)
Re:Ob.. (Score:3, Interesting)
The overcomplicated state of Windows has done more to turn people off computers than it has to help them. There are only a paltry 500 million personal computers in the world, that is abject failure on the part of the 30 year old personal computer industry. There are 4x as many phones right now and everyone will tell you phones suck. Microsoft is to blame for a lot of the PC's unpopularity. People fucking HATE them. Just stop making excuses for Microsoft. The PC is fucked right now and the Web moving to phones can't happen fast enough.
Also your remark is bigoted: 1) coding is just one way to use a computer, and it is only a solution to a minority of tasks, and 2) you obviously know nothing about Mac OS.
> The best thing about the rise of the PC was that it gave people access to a machine that could be configured to do a lot of different things,
> including "learn about making your own applications".
Here is how you make your own application on the Mac:
- launch Script Editor (the Mac shell since System 7 in like 1992)
- write AppleScript code
- click "Compile" (it is instant)
- choose File > Save As
- specify "Application"
- give your new application a name
- click OK
- in Finder, locate your new application and launch it
- enjoy
I'm a graphic artist, I went to art school not CS, didn't even use a computer until I was 21, and yet I make 50+ Mac apps per year that do the work of an entire other graphic artist, using nothing but the built-in tools in Mac OS. Sometimes an app only takes a half hour to develop and it saves me days and days of laborious, repetitive work. Some apps take as much as a week to develop, but they do a week of work in one hour the first time you use them, then every other time it is just gravy.
With AppleScript development, the applications on your system become libraries for your own apps. So even though you only wrote 20 lines of code and it only took a half hour, the app you create write JPEG's with Photoshop, writes MPEG-4 movies with QuickTime, creates folders and moves files around using Finder, converts EPS to SVG using Illustrator, runs Unix shell scripts using the command line, and so on, all in the same little rapidly-developed AppleScript app, so you get out very high quality products with very little work.
Maybe that is just the Mac being opaque to you, but I can tell you I go to Photoshop conferences and I sincerely want to know what Photoshop-Windows users are using to automate Photoshop since they don't have AppleScript. For example, converting 500 camera photos into 500 Web photos 1/8th of the size with 1/8th inch border and logo watermark is really time-consuming and error-prone if you try to do it manually, you want to write some code that describes the above task and have Photoshop do the task once on the first photo, then once on the second photo, etc. What I have found is that Photoshop-Windows users, when faced with a task like that, go out and buy yet another photo editing app that specializes in converting batches of photos and they take whatever options are in there and make the best of it. They don't get the exact watermark they wanted, necessarily, and the files they create are not as high-quality as Photoshop creates, and they also spend hundreds of dollars on these useless apps.
It is Windows that is opaque, in my opinion. Especially if you're not an MSDN member C software developer. Windows users are not supposed to develop their own custom software, they're supposed to buy software from Microsoft's developers developers developers.
I mean, Tim Berners-Lee is a physicist who had an idea for a software app and wrote it himself on a NeXT machine and it became Microsoft's worst nightmare. Those same tools have been on the Mac since 1999, how opaque is that?
> access to a machine that
Re:Ob.. (Score:2, Interesting)
I see what you mean, and I agree.
A computer should be programmable by its users.
One correction though: it wasn't the PC that turned kids into programmers.
It was (a) Unix systems at universities and
(b) the cheap home computers of the 1980s,
with a BASIC interpreter and a demo scene, like the Commodore 64.
Re:Linux is not another Windows (Score:3, Interesting)
This is something I was going to mention too. Java development has a culture of free tools that seems to be lacking in the