I know, people will say, this hardly makes a difference, right? But all the steps hardly make a difference. OSX Mountain Lion defaulting to only allow apps signed with a certificate from Apple? Why, the user can just disable that ... not including Flash or Java? Sure, just install them! It all hardly makes a difference. But all these steps put together - they make a difference!
Slowly and surely we're being led like lambs to the slaughter to a world where everything we say or do with our technology will be under the control of giant tech companies that ultimately care only about their own profit. This is just one more little step to ensure that developers preferentially make apps for Microsoft's walled garden rather than free apps that run anywhere and might compete with their interests.
Edit: correction about Mac App store vs signed apps
The future isn't all that dark but it certainly seems like the "wild west" days of computing are coming to an end.
One point however: in Mountain Lion, the default is to allow any signed app to be run. One alternative setting is to only allow App Store apps. The other, likely more popular, alternative setting is to allow any app.
Although we could pass the expense of the App Store or absorb the cost, I guess most software companies would go bankrupt if Microsoft or Apple cancelled their accounts.
It would be hard, but if they do actually push a totally locked down iOS-style platform it'll be the end.
It was bad enough that their mobile platforms are so locked down, but with Apple and Microsoft now turning the screws ever tighter on their previously open desktop platforms and development tools the future is looking grim. Remember, once a freedom is relinquished it can be very difficult to get it back.
As much as I dislike trying to build complex apps on the web stack I'm starting to feel an almost moral obligation as a hacker to throw my weight behind the web, for whatever it's worth.
No, it's not. I'm a huge, huge MS fanboi. I've used WP7 since it launched, I've been using Windows full time for quite a few years now and love it, I'm a huge .NET fan, etc. But about two weeks ago, I switched back to using Linux full-time. I only plan on using Windows in VMs for running software I'm reversing; everything else will be done natively under Linux.
Windows 8 on ARM being so locked down was the last straw. I'm done playing their game, even if it means a slight drop in productivity in the short term.
But I applaud your willingness to put principle before convenience. I've been working almost exclusively on iOS apps for the last year and I really enjoy the platform but it bothers my conscience.
The one thing you must do is to embrace the Unix way of doing things. Learn the basic command-line tools and use them daily. Learn to use Emacs, because the same shortcuts are available in the shell.
This book is great btw: Unix Power Tools (http://amzn.to/Klexhf)
Another thing you have to realize is that Unix was built for polyglots. Many Windows developers usually stay within the walls of .NET, but on Unix that's a mistake. Learn Java, learn a good scripting language (I recommend Ruby because it is great for scripting, has a thriving community and can also run on top of the JVM), learn C along with the POSIX APIs.
Eclipse or IntelliJ IDEA are good substitutes for Visual Studio, however I work with Emacs, because in dynamic languages the APIs and workflow are optimized for non-IDE usage and an IDE just stays in my way. I still use an IDE for Java, but that's only because in Java I can't drop to a REPL.
Also, Linux is great for your desktop, but only if you have hardware that's compatible with it. So be careful when picking hardware and do some reading first, otherwise it will ruin your mood. OS X is also an option btw, but I wouldn't make long-term commitments to this platform because Apple is even worse than Microsoft in some regards.
I don't understand the connection. How many of the web services we use are open source? A native program I buy may be closed source, but it runs on my computer and storage and is updated on my terms. I can even legally crack it if that's what it takes to keep it running (as far as I understand German laws). If I use an open-source OS and an open-source web browser to access a standards-based HTML5 web service, what interesting freedom do I have?
Now, Metro may offer a better deal by encouraging local HTML5 apps. But I still think the Open Web is something that underdog browsers should care about, neither users nor developers.
On the web everybody is welcome. If you don't like any of Google's services, you can create your own clone, and people can use it by just entering an URL in a browser.
Now imagine for a second how 2012 would look like if Microsoft banned Firefox because it "duplicates existing functionality" or other such invented guideline for the good of their app store ... because that's the direction Microsoft and Apple are taking us. And btw, just so you know, Firefox or Chrome cannot run on top of Metro.
You have the freedom to use a site built by anyone, anywhere in the world, for any purpose, using any tools or process they like. If you limit yourself to these new appstores you can't run anything that wasn't approved by the gatekeeper.
And if you think Microsoft or Apple abuse their authority now just wait until they have nothing to fear.
The difference is that web apps give you something in return. They allow you to run software without having to buy and support all the required hardware.
A desktop restricted to running apps from an App Store takes away freedoms without providing anything of any additional value for competent users.
I spend maybe 8 to 12 hours a day in front of some very classic laptops or desktop PCs, and I'm happy with low-latency desktop programs. I don't anticipate this to change.
Maybe the industry sells more mobile devices these days, and that makes it easy to for people to go "all mobile" or "all html5", but a good amount of being actually productive still happens on the old school desktop.
I'm worried about this move to walled gardens on all the platforms. The desktop is one of the last bastions of openness, but its not really evolving. Could we have cake (openness) and eat it to (app store where devs can make money, at least easily distribute their possibly creation-oriented apps)?
I think people wildly overestimate how much money the typical app can make in any of the app stores but I do think it's important that we find ways to make it easier to monetize web apps.
Yes, you can. e.g AIDE : https://play.google.com/store/apps/details?id=com.aide.ui
What happens if services like amazon AWS put smaller hosts out of business and services like facebook become so ubiquitous that they are considered the "gateway" to the web and most web services are built on top of these APIs?
With BizSpark or similar, you're looking at something like $400 total to get as many copies of VS.NET as you need for your entire team. And all the other dev tools everybody needs. And Windows licenses for all their boxes. And Office. And everything else Microsoft makes.
So even assuming a team size of one, it's still closer to free than it is to a day's worth of your bill rate. Considering how much better the paid version of VS.NET is than the "Express" version, it's not even something worth thinking about.
Given that, the fact that the Free version does this or doesn't do that has pretty much zero bearing on the life of a guy writing software on the Microsoft stack.
For C/C++ hobbyists and Open Source developers, MSVC used to be the compiler of choice on Windows. The Ruby community has embraced mingw more and more, and I think everyone else will (and should) do the same. Breaks my heart because MSVC has good C++11 support.
I don't think any professional will care about this. In fact, it's probably good news for them (us). Any barrier to entry means slightly less competition.
Just because it's a hobby doesn't mean you can't pay a little money for things. I have lots of hobbies that are way more expensive than computer programming.
One surfboard costs more than you'll pay for a full VS.NET license. Over the 4 years this next version will keep you going, I'll go through thousands of dollars worth of rock shoes. A gamer will go through thousands of dollars worth of games. A mountain biker will replace his $1500 bike in that timeframe, and a snowboarder will rack up thousands of dollars in lift tickets and baggy trousers.
All these things have in common that: A. They're enjoyable, and: B. They cost money. Programming computers is no different. If you want to do it, and there's a good new tool out that costs money, why would you not buy it?
I used the free MSVC2003 compiler during high school, when $600 was half a year's worth of pocket money, and when mingw didn't even link a basic UNICODE program properly. I eventually saved up enough money to buy the "full" MSVC2003 Standard for ~€130, what later became Express. I never made a single penny off it. I bet many people who got into programming through hobby gamedev lived a similar life.
After making the switch to OS X during university, I often used the (now free) MSVC Express for playing around with Open Source on Windows. Or to compile a copy of my game for Windows friends. Tiny stuff that's not worth three-digit sums. If I can't toy around and be happy on Windows, then I'll forever stay in Apple wonderland.
Both scenarios will be too expensive to imagine now. If anything, people will use mingw instead. And that's what breaks my heart - I really wish people could use the awesome MSVC2011 compiler instead, with all the new C++ features we have been looking forward to for years. MSVC2010 is still good enough, but for how long?
Also, take a quick glance upwards and notice that it's $400 for VS.NET + Everything Microsoft Makes. So if you would have otherwise spend $189 to have Office bundled in with your computer, you can think of the IDE costing ~$200.
Or four video games (as in, one per year). If programming is something you value doing, that's not a lot. Poor or otherwise.
When people start complaining about not having functors, or some other language feature, I tend to get a little irritated, because this is not the big problem with software development on Windows.
If someone doesn't want to use VS2008 Express, I will note that there is always WDK, which last I checked shipped with cl.exe, and will almost certainly continue to do so.
I think it's unfortunate that the professionals would see this as a good thing. New developers to the MS Stack can bring a fresh perspective with newer, more unique approaches to solving problems. That leads to a healthier ecosystem.
still closer to free than it is to a day's
worth of your bill rate
I paid £160 for a single copy of Windows 7 Ultimate, for example - 1 licence for 1 PC! And my accountant costs me more per year. (etc.)
But there's another, more plausible, explanation for this particular move. They want people to create Metro apps and making it cheaper to do that creates an incentive.
Even if we get free development tools it would sucks if we can't share our work for free.
- Open source development on Windows will take a hit
- Freelancers will either stick with older and less effective tools, or will choose to abandon Desktop
- Users will tend to get less new software for their Windows 7
+/- Will not affect big corporations, e.g. gamemakers, who use the professional version
- This will provide no additional motivation to bulk of the users (e.g. corporate, gamers) to switch to Windows 8
- This will further 'encourage' piracy of VS11
Also, I only got into MSVC because of open-source/hobbyist dev in the first place.
At least they still allow other compilers and any programming language.
I wish Ubuntu would step up their development resources game, so that it becomes less painful to do anything there.
Will there even be a compiler they could licence from MS and bundle?
Previous discussion here: http://news.ycombinator.com/item?id=4020222
But now with Eclipse reaching maturity (it's the main IDE at the banking multinational where I recently worked), I'm finding less and less justification to stick with Visual Studio when my MSDN subscription expires. Another very promising tool is Qt Creator: http://qt.nokia.com/products/developer-tools
This has less of the UI quirkiness of Eclipse, and the built-in documentation is great. Qt is now using Clang for code validation, but can be set to use Gcc or the Microsoft compiler. So given that I'm using Qt anyway for cross-platform UI, this may be the way forward.
The fact is that for the average non-techie user, allowing unsigned/untested apps results in a system full of malware and crappy software that destroys it. That's because the OS is not isolated from apps, and apps are not isolated from each other.
The popularity of virtualization is also due in large part to this. Why can't you just rent accounts on large Linux servers? Why is KVM, OpenVZ/Parallels Virtuozzo, etc. necessary? Because everything requires root and everything pollutes the OS space.
Broken, broken, broken.
The way Macs package .app directories full of all files related to an application is a huge step in the right direction. The next step is to utterly forbid "installers" and make everything work this way, and to add stronger privilege isolation and organized APIs for apps to talk to each other. These should probably be based around peer-to-peer networking so that an app can locate and talk to another app regardless of what box it's on.
That would be significantly less broken.
Then allow apps to have their own addresses. We probably have to wait for IPv6 for this, but not necessarily. Then an app can bind, run services, etc. without requiring root.
Finally, banish the entire concept of root/administrator except for OS developers and OS maintenance. The vast, vast majority of users (even power users) should never need to even know these exist.
The bottom line is that the entire concept of "installing" something "on" the OS needs to be killed. Installers are ugly nasty hacks. Package management (ala rpm, deb, etc.) is also an ugly hack. Signed apps in walled gardens is an even nastier and downright evil hack to get around the brokenness of these ugly hacks.
I agree and disagree with you. I would be awesome if I could restrict apps and forbid installers. I'd also like to be able to run arbitrary apps as forbidden to use the internet and make them think they are reading/writing to /some/path/ but they are really reading/writing to /app/sandbox/some/path. I'd love the option.
But then there are problems with that as well. Want to make an app plugin? Nope. Want to share libraries? Nope. Want to talk to an app? Hope it's got a canonical port number.
So I don't think enforcing boundaries is the way to go. I'd love to see other opinions and whether or not there are any alternatives, though.
Plugins for instance could be handled like firmware updates to a device. Send the image to the app via the API. "Here is your plugin..." Or some apps could have their own plugin stores, ala the Chrome store. There are different ways of handling this.
Oh well, I guess I'll just move to Java to create some games. It worked for Notch :)
Also, checkout MonoGame: http://monogame.codeplex.com/