email I don't know what you mean here. I'm under the impression that mail rules are to do with delivery/sorting, not view options, and my subject lines aren't darkened anyway. It seems to me you're complaining about not knowing much about the Mac UI. Here's a hint: different doesn't imply worse or better, it simply implies different. It may be worse, but to criticise based on your own unfamiliarity is not a valid point. *All* interfaces require the user become familiar with them, to gain the most efficiency.
iMovie... "OH, wait, I can right-click too! Why hide this option from me? Oh yes, I forgot: people who prefer using one hand (or are disabled losers) need not apply" This is a standard feature on the Mac - *any* ctrl-click is treated the same as a right-mouse click. This allows people who prefer to a use one-button mouse to have the same interface as those who prefer a multi-buttoned mouse.
iPhoto Photo's are indeed stored in a logical-to-the-computer storage hierarchy, probably so it can deal with a few hundred thousand images efficiently. On the other hand, all you need to do to get access to an image is click on it, and drag it to the desktop (or wherever). There's no need to go hunting for it through the Finder. There's also the 'Show File' option on that right-click popup menu, that'll locate it in the Finder for you if you want...
iChat
- Selects image on desktop
- Drags it to picture in top-right corner of the 'AIM Buddy List' ichat window
- Wonders what the fuss is about...
From reading this, it seems you're just unfamiliar with the Mac, and how it works in general. As mentioned above, different does not imply better or worse, but shooting your mouth off about how bad something is, when you're just missing how to do things, seems less than useful. Sure, there'll be problems in Mac apps - there are problems in all apps, but before you complain, perhaps it would be best to make sure they're *real* problems...
I particularly love the way that you can add files to projects by drag-and-drop! Oh, wait, no you can't, you have to add them with an "Add file" dialog.
- Opens up the 'src' folder in the Finder
- Selects a file
- Drags it to the 'Sources' folder in the XCode project
- Sees import-folder-to-project sheet drop down
- Wonders what the fuss is about
But at least you can add a whole bunch at once! Oh, wait, no you can't, you can only add one at a time
- Does same as above, but selects multiple files
- Wonders what the fuss is all about
- Tries using the dialogue box, in case Apple had gone insane... Nope, multi-select works just fine...
But at least the dialog box remembers where the files were so you don't have to navigate your directory structure again and again for every single file! Oh, wait, no it doesn't, it always goes right back to the project directory
* This one I'll give you, but then I tend to keep my source files for a given project within the project folder anyway, so it works quite well for me...
the only way to change the build settings for your project is to right-click on the build target name and select the intuitively named "Get Info" option
- Wonders why the coward just doesn't double-click the project...
Thinks to himself: "Perhaps reading the manual might be a useful exercise for this coward". Here's a hint: If you're doing something that you think is a monumental waste of time, something the computer could do far better, and make your life far easier, you're probably missing something. Reading the fine manual before blowing off steam in public saves making an ass of yourself.
I suggest you take a look at http://www.xdarwin.org/ - Ben Byer (an Apple employee) has been working to migrate Apple's X server to the x.org codeabase, and now has a re-port of the quartz system to that codebase.
You only have to pay if you want to use their Products in your development (i.e servers, office, etc...) which you would have to do anyway, with either Apple OR Microsoft, because they are both closed source products and they don't generally give away licenses for free.
So, lets put Windows 2003 (?) Server up against OSX Leopard server. I want to develop a client application that uses web-scripting, linked to a backend-database, and calendaring/contacts. On OSX, I use Apache2, MySQL, PHP, and iCal server as foundations for my ObjC app, all of which come for free with unlimited client-side licences. I can integrate with the open-source C api's easily, and life is good.
On Windows (and I may be wrong about this, but it's my impression) the standard database is SQL Server, the standard language is now C# integrated via.NET, the standard calendaring and contacts system is Outlook (server?). All of these are designed to play well with each other when you use them together, but that means a lot of licensing, both for the developer and for the client. Do all these licences come for free with a free MSDN subscription ? If so, when you sell the application to the client, is there a cost to you (now that it is a for-profit venture) ? Life doesn't sound so good...
Not sure about this one, the C API calls for all that you might want to do, along with headers were available without paying (although you would have been limited to the command line compiler + text editor again if you didn't want to pay for an IDE). The Apple drivers are just as proprietary as the Microsoft drivers so I don't see how Apple scores any points here
My point was that all the surrounding APIs (for other services provided by the company's software) are just as proprietary within the Microsoft hegemony. Apple's use of open-source components doesn't impose the same burden.
There are so few companies out there doing professional Apple development that I cannot profess to have ever meet a native Apple developer in the flesh (although I suppose they do exist). However, I wonder how their tool use stacked up with other third party tools that were available. I got the impression, working on macs in my college days (where there were a few professors who used them for other work), that many Mac developers used CodeWarrior instead of whatever tools were native. It is funny, I have heard of just about every third party IDE and programming tool there is, barring the really obscure stuff, but I have never heard the native Apple tools mentioned, even in the context of Mac development, by name. Perhaps there is a reason for this? I don't know
For what it's worth, CodeWarrior doesn't exist any more on the Mac. It hasn't for a while - pretty much when XCode came along, Codewarrior gave up. Since you've never apparently met an Apple developer in the flesh, I don't doubt you've never heard of Xcode... It's not something you hear about while waiting in the ATM queue, after all...
Don't know, but who cares? How many people actually bought Zune? Maybe Steve Ballmer and his immediate family?
I don't know either, and I care as much as you seem to. I was replying to the parent, and pointing out that there is a spectrum of developer opportunity in the Apple sphere, then contrasting it within the Microsoft realm. A fair comparison, I think.
They both release the source code under different licenses now with strings attached, but who really cares about the kernel other than kernel and maybe driver developers? The best kernel is the one that does its job, but is otherwise reliable and unobtrusive. I don't know about you, but I really couldn't care less about the kernel as long as the APIs provided by the OS give my programs the services I want.
As for attitude Apple and Microsoft are corporations, they don't have 'attitudes' (even though their marketing people might want
syntax-highlighting - obvious, but it's a requirement, so I'll mention it.
function/method expansion and auto-complete - again, obvious basic functionality, but worth a mention. More useful with ObjC's named-parameters than other languages.
reformatting - again, basic stuff. Auto-format code according to user-defined rules. Auto-insert of braces, auto-placement of cursor, etc.
block-structured folding editor - allows you to concentrate on just the code you care about at the time
documentation-integration - get keyword, constant, class,whatever documentation by just -clicking on the entity.
reference-integration - jump to definition of method, function, variable,... by just -clicking on the entity.
Fully-integrated dtrace instrumentation - use built-in instruments or create your own, run them automatically alongside your code and analyse the results graphically.
full refactoring - move classes or variables, rename anything, do partial moves, subclass, you name it...
full SCM integration - use any of svn,cvs,perforce either locally or networked
full unit-testing integration - for C/C++ and ObjC
fully integrated gui-driven data-modelling - provides object-relational storage backed by either XML or SQL
fully integrated with the UI designer - and doesn't create some half-assed computer-generated code in your app. Generates an archived instance of the objects you created in the UI designer, much cleaner.
easy distribution of builds over multiple macs on the LAN
uses gdb as the debugger - allows full access to its sophisticated features
completely scriptable - so common repetitive tasks don't piss you off.
... and that's just off the top of my head. XCode is a *great* development environment. You should maybe take a brief look
Apple has a history of being unfriendly to third party developers
No. They. Don't. Where the hell this comes from is beyond me...
Let's look at the Operating Systems: It's been a while since I coded on a windows box, but I seem to remember it was MS who made you pay for an MSDN subscription (the cheapest way to get the dev-tools and all the proprietary servers and drivers you needed to actually do something useful), whereas Apple gave away their (full, professional) developer tools.
Ok, so what about the music players: It's Apple who are giving away (already announced, in February) the SDK for their music-player & phone. Can you get a Zune development kit ? Maybe you can, but I've never heard of one. If you can, will it come with a hefty price tag ?
Ok, let's look at attitude: Apple have an open-source kernel, and many open-source projects shipped as standard with their OS. Microsoft are completely closed-shop unless you're a freakin' government or similar. Apple pick areas of open-source they think they can improve (eg: WebKit), and once they've delivered it back to the community, people seem to agree (witness Webkit taking over in Nokia phones, the android API, even the KHTML source-code is being migrated to it). What's MS done recently - can you imagine internet-explorer's rendering engine being made open-source ?
Microsoft are the closed-source, closed-minded company. Apple are a breath of fresh air.
It saves you an extra $1100 or so, paid up-front, on top of the existing cost of the phone. In Germany, officially unlocked phones were on sale at 999 euros (or ~$1500). This is down to Apple losing any monthly fees from its partner phone-network once a phone is unlocked from that network.
So, with Apple wanting to recoup 4 years (according to the Steve) of R&D, here's your choices:
- Pay $399 for a phone locked to AT&T.
- Pay $1500 for an unlocked phone
Apple's position presumably is that no-one in their right mind would pay $1500 for the same phone that costs $399; and that the additional overheads of supporting any network, not to mention explaining to consumers that the 'visual voicemail' and possibly other future features wouldn't work, just made option 2 a non-starter.
It's up to Apple to figure out how much profit they want to make on each device (that's the right of the manufacturer). It's up to the consumer to decide whether the value is worth the cost. If the value-proposition is high enough, people will purchase the device in droves (and it looks like this is happening).
What is less known about that particular quote, is that it's actually a finely-crafted insult from Newton, aimed at Hooke.
The two men had a very acrimonious relationship, and Hooke had accused Newton of "borrowing" ideas from him in the past. Hooke was a short man, and Newton's quote was basically saying "I have indeed made use of the discoveries of great men, but you are not one of those men". The implication is that Hooke was a midget in scientific terms, as well as in physical stature.
It just goes to show that the relationship of {number of patents : innovation} is a similar one to number of {number of security patches : security of the system}. It's not how many {patents/patches} you have, it's what they do for you. Apple, for example, is in the process of building another $10 billion/year business out of the multitouch patents that it has. One idea, a few patents to ring-fence and expand it, 10 billion dollars. That's a *good* idea. Microsoft has clever patents too, (eg: cleartype), but all that leads to is an argument over whether the alternative is "blurry" or "accurate", and whether cleartype text is "clear" or "anaemic". In other words, they gained support on their own platform, but they didn't managed to leverage it too much elsewhere.
Microsoft is *not* that innovative a company - it's bread and butter (80% of profits or so, I believe) come from corporations (not people), and corporations generally like "more of the same, please". There's nothing wrong with serving that demand, and [insert deity] knows they have clever people working there - the conclusion is that they don't *want* to be an innovative company - they're happy with the status quo, because it brings in gazillions of dollars for them. Sure, they'll have the occasional exciting new thing (how could they not, given their staff ?), but that's not the *company* focus.
In comparison, Steve is fond of saying he likes to run Apple as a small company, with the resources of a large company. That the cash-in-the-bank at Apple is because they *do* take risks, they *do* push the envelope that little bit farther, and that having a large wad of cash to fall back on is very useful, you know, just in case... Apple is ~1/5th the size of Microsoft (I think) in terms of staff, that's a lot of people, but they're spread pretty thin ("small company", "siege mentality", "more productive"), considering they produce computers, consumer devices, a major OS, several consumer apps, several pro-apps, as well as design their own hardware, operate a chain of retail shops (where most of the staff are), etc. etc.
Bottom line: Bill Gates said that Microsoft were one innovation away from being made irrelevant, and they work to protect their monopoly because of that. Apple's focus is more on the 'next big thing'. They take risks, and to do that you have to execute on new ideas. Apple is innovative, and its customers are people. Microsoft is protective, and its customers are corporations.
It comes down to determination - the only authority on what some consumer gizmo is "supposed" to do are its creators. The uninformed preaching to the gullible are an inadequate replacement. I note that you still failed to provide a citation for your claim, even one as pathetic as "bloggers said so"...
As for my good self being a troll - I deny the accusation completely. I tend to be pro-Apple because of their products, which are generally (there are exceptions) well-designed (as in: well-thought-out, not as in 'pretty'). I tend to be anti-Microsoft because *their* products (with the exception of 'Office' perhaps) seem to me to be actively user-hostile. I could never see there being an 'Apple Genuine Advantage', for example. I still haven't forgiven MS for that one...
If the world spun in the opposite direction, if it was Microsoft that had a solid UNIX OS with a fantastic GUI front-end, and it was Apple who thought that corporations were their customer, not users, I'd probably reverse the sense of the pro/anti statement above. It's the products (the end-results) that I like, not the corporate entity that produces them. That's what I spend cash on, after all...
Trolls don't tend to admit their bias, or accept that not everything is perfect in their reality-replacing fantasy, I am happy to be corrected if anything I write is wrong. Just because I disagree with your statements doesn't make me a troll. Posting blatant untruths, hyping up one aspect of a story to bolster a preconceived opinion, that's what makes someone a troll. Oh, look, this is what you did - as you yourself admit...
The case for the prosecution rests, m'lud; in summary: "Whiney Mac Fanboy" is indeed whiney, but no mac fan-boy. Quite the opposite, in fact.
The pre-iphone hysteria was touting the iphone as being the device that would liberate US consumers from the shackles of the telcos
Show me a single claim from Apple that says that. Just one will do. Or are you talking about some know-nothing blogger trying to generate click-ads ? In any event, to make the claim, you have to cite your source, otherwise (given that this is slashdot, and you're a known anti-Apple troll) I call bullshit.
I guess I'm not really following what you're saying, unless it's "OSX has unix API's and other ones too". Well, duh. There are lots of API's in all operating systems that aren't anything to do with unix - GTK is hardly a unix requirement, nanosleep() probably isn't in the spec, device-driver api's are almost always specific to the OS in question, etc., etc., ad nauseum.
The Finder creates aliases because aliases have more functionality than symlinks, and solve a different problem anyway. If I rename the file a symlink is pointing to, that symlink is misleading and broken. If I do the same to an alias, the alias still resolves the file correctly. Both behaviours are useful, under different circumstances, but for a UI-based desktop, the 'alias' behaviour seems superior for day-to-day use.
OSX is exactly a "unix with a pretty GUI". It's also other things, and certainly for me, it's the unix underpinnings that brought me to the platform a few years ago. It's the best damn unix workstation that I've ever used.
As for admin, again I guess I don't see your point. Administration tools on Solaris are different to HPUX, which are different to those in KDE, which are different to those in Gnome, which are... (another ad nauseum). There is no standard unix administration toolset. There are just many choices - learning the fundamentals of what is going on (how the networking/firewall works, how the system boots,...) and realising that all the fancy GUI's just configure the same old text files is how to learn once and control anything.
As for coding, well I guess all the gtkmm, gcc, glade, etc. (ad nauseum, ad nauseum) tools on my machine are an illusion then - strange that they seem "quite" similar to the versions on the linux box in the garage. Oh, and then there's XCode and ObjC/C++/C as well, with a nice IDE. So nice that I slave my iphone development stuff through xcode (xcode calls 'make') so I can get my nice IDE features (variable/argument/function expansion,...).
OSX is unix, and it's also other things. It's certainly not 5% unix like you seem to think - speaking as something of a unix expert (I've been using it for 20 years) *and* an OSX programmer.
Well, um...there are a few problems with Objective C. One, it's hard to find a book on it. I could find one book on Cocoa (using Objective C) at my university library, and nothing on Objective C itself. It wouldn't be too bad to learn either, but both at one time is a bit painful
As for readability, based on your example I'd have to go with C/C++. Having to write the name of each parameter sounds like a good way to make your code ridiculously verbose (slow to write, more chances for misspellings, and can't see as much on one screen at a time)
Some points:
We moved away from 80-columns being the maximum length of a line a long long time ago.
Any sensible IDE handles all the parameter expansion for you (including XCode). No typing...
In the example I gave, it's very obvious which of xxx and yyy are the object and the index. Not so, when the parameters aren't named.
Naming conventions (and they're rigorously followed in Cocoa/Foundation) give very useful information and context of what is supplied and taken as arguments.
Overall, though, I just don't see why Apple limits languages so much.
I'm not sure I get your point here... Apple doesn't limit the language choices: there is C, ObjC, C++ (since there is ObjC++), Ruby & Python. Hardly limited. I guess I don't see MS providing a GTK interface to the windows forms library, but maybe they do, and I just missed it...
I'm assuming you mean 'const' rather than 'cons', declaring either the pointer or the pointee to be constant. However, given that ObjC is a formal superset of C, I think you'd need to already know 'C' before trying to master ObjC in a month. Given the mastery of 'C' though, I think you could probably master ObjC in a month... There really aren't that many additions...
*Tiger* uses reference-counting. *Leopard* uses garbage collection (or reference-counting, at the programmers whim). Objective C just got an upgrade...
I'd personally hate it if they gave up the beautiful elegance that is ObjC and forced Apple developers to move to Java or.NET.
I've said it before, and I'll say it again now: Objective C is exactly at the sweet spot for a computer language - it has all the power of C (it's a formal superset), the nice features of a true object-orientated language (OOP, garbage collection, protocols, etc.), adds in dynamic dispatch (thus removing the need for generics), and does it all by adding about a dozen commands to the C language. The only thing against it is the unfamiliar (to C/C++ programmers) syntax. Really, though, how hard is it to make the mental leap to [myObject insertObject:xxx atPosition:yyy] from myObject->insertObjectAtPosition(xxx,yyy) ? And which is the more readable ?
Plus, the class library is *very* well designed. It makes easy things easy, and hard things possible. A lot of hard things are pretty easy too... There's a site that often compares.NET and ObjC/Cocoa. It frequently (despite the obvious potential bias given the name of the site) argues that the ObjC method for doing something is better thought out, more elegant, or simply more capable than the corresponding.NET approach.
Objective C is a classic example of how a simple clear approach can reap huge rewards in terms of usability and flexibility. It's not the over-designed bloat-fest that is C++ (template metaprogramming ? Really ?), and it's not the raw pedal-to-the-metal-hear-the-engine-scream-in-protest of plain old C. I've never yet met anyone give it a fair try (ie: write a real program in it) and not end up loving the language.
Um, given that if your boot drive goes on fire, you can still recover from a Time-Machine backup (on a different HD, obviously), I'd say you were wrong on that one. Sure sounds like a backup to me.
PHP 5 and Apache 2 both come with Leopard, I'm not sure why MySQL wouldn't play nice, but in any case, install s/w on a mac from scratch is pretty simple: either use the standard./configure && make && make install approach, or use the macports system...
1) download the macports installer from www.macports.com 2) install it by double-clicking on the friendly icon 3) open a terminal window 4) type 'sudo port install mysql5 apache2 php5' 5) make lots of coffee while gcc grinds away
As far as generalisation goes, with the stuff I do there is generally an abundance of training data - it's easy to get imagery, and it's easy to generate the input data from that imagery. As such, using some of the data as training data, and the remainder as generalisation-test data is a good (and pretty standard) approach. All you do is train on (say) 2/3 of the data while simultaneously checking the results against the remaining 1/3 of the data. You'll get two error-curves, which initially approximate each other, decreasing exponentially with time. After a while, however, the net will start to model the specifics of the training data (and thus continue to reduce the error for the training-data), but the generalisation-test data is different data, so *that* error curve will start to rise. To get the best generalisation from the network, all you need do is take the weights-state at the point of minimum error on the generalisation-test data.
I've used some linear discriminant techniques (primarily Principal Component Analysis and Canonical Discriminant Analysis) to get some information about the separability of the network input data, but not actually used an SVM as a classifier.
Generally I create networks using the centre-surround approach I detailed above. Each network is automatically trained with N runs over M configurations (for both hidden nodes and hidden layers), with the best result being selected. Networks are then trained to handle the fusion of these first-order networks into a new layer of networks - think of it as a multi-resolution approach. At the bottom level you have nodes, which combine to make networks, which combine to make networks of networks. I've also used network topologies where each classification-label has a single network representing that label rather than N outputs, one per classification, as well as hybrid systems.
Once the first-pass training has been completed, the confusion matrix (*) is determined, and is used to highlight typical misclassifications (where 'sky' and 'water' are being classified as the same thing, for example). This is where PCA and CDA come in, and I also have a derivation for the actual information content of any given input-data feature, expressed in terms of the output classification accuracy. These are used to split the conflicting categories and add network(s) that have a better chance of discriminating the problem categories, just prior to the fusion stage. All subsequent networks in the decision tree are retrained, and if the result is better, the next most-confusing pair is chosen and targeted. If the results are not better, the new network is discarded. This repeats until the desired error-rate is achieved on the generalisation-test data, or a set number of runs through the whole system are complete.
So, the answer to your last question is: both:) All the above is automatic, I just have to review the results. My main decisions lie in making sure the system is still generic at the end of its development, and if the error-target wasn't reached, doing more research on input-data that is more-likely to give a good result.
Simon.
(*) A confusion matrix is simply a plot of "what the network classified as" vs "what the truth is". What you want to see is high numbers on the leading diagonal, and preferably zeros everywhere else.
Perhaps you didn't get much out of neural networks, but my PhD thesis was on the similarities between a kohonen network and relaxation-labelling equations. Part of it is up on my blog (I haven't actually got as far as that bit yet, but the groundwork is there).
A neural network (well, anything more complex than the single-layer perceptron anyway) is an arbitrary classifier. I'm curious as to why other methods are "much better". Unless you do an exhaustive search of the feature-space, all classifier methods are subject to the same limitations - local maxima/minima (depending on the algorithm), noise effects, and data dependencies. All of the various algorithms have strengths and weaknesses - in pattern recognition (my field) NN's are pretty darn good actually.
It's also a bit odd to just say 'neural networks' - there are many many variants of network, from Kohonen nets through multi-layer perceptrons, but focussing on the most common (MLP's), there's a huge amount of variation (Radial-basis function networks, real/imaginary space networks, hyperbolic tangent networks, bulk-synchronous parallel error correction networks, error-diffusion networks to name some off the top of my head), and many ways of training all these (back-prop, quick-prop, hyper-prop, batch-error-update, etc. etc.) I guess my point is that you're tarring a large branch of classification science with a very broad brush, at least IMHO.
Not to mention that this is all the single-network stuff. It gets especially interesting when you start modelling networks of networks, and using secondary feature-spaces rather than primary (direct from the image) features. Another part of my thesis was these "context" features - so you can extract a region of interest, determine the features to use to characterise that region, do the same thing for surrounding regions, and present a (primary) network with the primary region features while simultaneously(*) presenting other (secondary) networks with the features for these surrounding regions and feeding the secondary network results in at the same time as the primary network gets its raw feature data. This is a similar concept (if different implementation) to the eye's centre-surround pattern, and works very well.
If you work through the maths, there's no real difference between a large network and a network of networks, but the training-time is significantly less (and the fitness landscape is smoother), so in practice the results are better, even if in theory they ought to be the same. I was using techniques like these almost 20 years ago, and still (very successfully, I might add) use neural networks today. If it's a fad, it's a relatively long-running one.
Simon.
(*) In practice, you time-offset the secondary network processing from the primary network, so the results of the secondary networks are available when the primary network runs. Since we still run primarily-serial computers, the parallelism isn't there to run all of these simultaneously. This is just an implementation detail though...
"I can't see how you can complain BTW, my GPL code is free, you can try and use it, test it and see if it fits your need as a developer. If you decided to use it in your own software AND redistribute it, then, and only then, do you have to abide by the provisions of the GPL regarding opening your own code.
The alternative is no code at all for you. GPL forces you to share, yes. Is it bad? discuss."
I wasn't complaining. You were supposed to glean that from the bit where I said "I have no problem with this".
With regard to your point about users - since (if I am solely a user) I am restricted to what developers do, I think the the knock-on effect of the developer-restrictions are very much restrictions on the users also. If a developer feels (s)he can't do something with GPL-licenced codebase X, the user doesn't get to enjoy that whizz-bang feature, or the software-project is simply discarded as not feasible.
In any event, (and to re-iterate, as I *said*) I don't have a problem with any licence that any software is released under - it's the owners privilege to assign the licence (s)he feels is most appropriate. What I was taking issue with was the assertion in the parent post to mine, vis: "The GPL only grants you rights that you wouldn't have had without it. It doesn't take any of your rights away.". This is quite clearly wrong - if no rights are taken away from you when you download and use GPL software, you'd be able to do anything with it that you could do with self-authored software.
To play the devil's advocate (since you *instructed* me to "discuss", you cheeky bugger:), in some ways one could argue that a licence that enforces sharing while simultaneously delivering the source-code to the public view is an egregiously harmful thing. It forever opens up independent developers to false accusations that they copied and incorporated GPL-licenced code. There are only so many ways to write some of the more fundamental algorithms in computer science. What happens when all those ways for a given algorithm have GPL implementations ? What if two people independently write very similar code, and one of them is GPL ? What if the first implementation of 'test-and-set' or memory barriers had been GPL'd[*] ? Why should the closed-source developer be impacted by software (s)he may never even have heard of ?
I happen to think the GPL is a good and useful licence, but like all good things, it can be abused. The moral of the story is simply to consider the ramifications of the licence you choose, for *any* code you release. I've released GPL code, and contributed to GPL projects. Likewise I've released BSD code and commercial (closed source) code. I've even released commercial (open source) projects. Choose the right vehicle for your code, and most people will be happy. Attempt to coerce them, or make a political statement with your code, and it will probably die a death, with some notable exceptions.
Simon.
-=-=-=-=-
* In this case, it would have been impossible to write a commercial operating system, "Windows" would not have happened, and the standardisation that the Microsoft Hegemony wrought would not have taken place. Without a standard OS, the software industry would probably have resembled the fractured state of the various un*x companies of the late 80's, and we probably wouldn't have seen the commoditisation of the PC, the resultant lower prices and exponential growth of the PC market. Without a single player driving the emerging marketplace, there wouldn't have been the enormous cash injections (and commensurate profits) needed to interest the large companies that fund the development of nascent markets. We may all still be using 80-character text displays (apart from the fortunate few using high-end workstations). All because of a licence.
Sure, this is a worst-case scenario, and it's just vaguely possible that the 30 or 40 open-source operating system communities could have come
Just look at the graph, and that was with the xbox 360 pretty much having the market to itself. I know the perceived wisdom is that the PS3 is a failure, but it doesn't seem that way if you look at the numbers...
If I download a project under the BSD licence, and I abide by the 'mention the copyright holders' clause, I can then use that software in a (closed source) commercial product and make money by combining it with my own ideas.
I cannot do this with any GPL software, it violates the terms of the licence. The GPL is therefore more restrictive than the BSD licence. This is an unassailable fact.
Now don't get me wrong... I don't have a problem with this - if someone makes the code, that person gets to say how the code can be used by others. Fine. Just don't pretend that the GPL doesn't impose limits and take away opportunities, because it very much does.
I've written and released software under the GPL, the LGPL and the BSD licence. I've written commercial software that includes BSD-licenced code (and complied with the terms of that licence, obviously). I don't care about the political agenda of either camp, for me it's just "what can I do with this code", and I get tired of hearing that the GPL doesn't take away anything when it quite clearly does.
It's not stupid at all. Apple make a huge impact every time they release something major - far and away more than any of their rivals. There's a direct relationship between the secrecy of the company and the buzz for a release, which translates into a *lot* of cash in sales. One of the reasons the iPhone was themost successful consumer product launch in history is the control over information that Apple exerts.
When the benefits are measured in billions of dollars, it makes perfect sense to implement the policy that Apple does. Sure it's an easy shot to blame it on Steve's ego, but it looks like a cold blooded business decision to me.
email
I don't know what you mean here. I'm under the impression that mail rules are to do with delivery/sorting, not view options, and my subject lines aren't darkened anyway. It seems to me you're complaining about not knowing much about the Mac UI. Here's a hint: different doesn't imply worse or better, it simply implies different. It may be worse, but to criticise based on your own unfamiliarity is not a valid point. *All* interfaces require the user become familiar with them, to gain the most efficiency.
iMovie ... "OH, wait, I can right-click too! Why hide this option from me? Oh yes, I forgot: people who prefer using one hand (or are disabled losers) need not apply"
This is a standard feature on the Mac - *any* ctrl-click is treated the same as a right-mouse click. This allows people who prefer to a use one-button mouse to have the same interface as those who prefer a multi-buttoned mouse.
iPhoto Photo's are indeed stored in a logical-to-the-computer storage hierarchy, probably so it can deal with a few hundred thousand images efficiently. On the other hand, all you need to do to get access to an image is click on it, and drag it to the desktop (or wherever). There's no need to go hunting for it through the Finder. There's also the 'Show File' option on that right-click popup menu, that'll locate it in the Finder for you if you want...
iChat
- Selects image on desktop
- Drags it to picture in top-right corner of the 'AIM Buddy List' ichat window
- Wonders what the fuss is about...
From reading this, it seems you're just unfamiliar with the Mac, and how it works in general. As mentioned above, different does not imply better or worse, but shooting your mouth off about how bad something is, when you're just missing how to do things, seems less than useful. Sure, there'll be problems in Mac apps - there are problems in all apps, but before you complain, perhaps it would be best to make sure they're *real* problems...
Simon, leaving the title as-is...
I particularly love the way that you can add files to projects by drag-and-drop! Oh, wait, no you can't, you have to add them with an "Add file" dialog.
- Opens up the 'src' folder in the Finder
- Selects a file
- Drags it to the 'Sources' folder in the XCode project
- Sees import-folder-to-project sheet drop down
- Wonders what the fuss is about
But at least you can add a whole bunch at once! Oh, wait, no you can't, you can only add one at a time
- Does same as above, but selects multiple files
- Wonders what the fuss is all about
- Tries using the dialogue box, in case Apple had gone insane... Nope, multi-select works just fine...
But at least the dialog box remembers where the files were so you don't have to navigate your directory structure again and again for every single file! Oh, wait, no it doesn't, it always goes right back to the project directory
* This one I'll give you, but then I tend to keep my source files for a given project within the project folder anyway, so it works quite well for me...
the only way to change the build settings for your project is to right-click on the build target name and select the intuitively named "Get Info" option
- Wonders why the coward just doesn't double-click the project...
Thinks to himself: "Perhaps reading the manual might be a useful exercise for this coward". Here's a hint: If you're doing something that you think is a monumental waste of time, something the computer could do far better, and make your life far easier, you're probably missing something. Reading the fine manual before blowing off steam in public saves making an ass of yourself.
Simon
I suggest you take a look at http://www.xdarwin.org/ - Ben Byer (an Apple employee) has been working to migrate Apple's X server to the x.org codeabase, and now has a re-port of the quartz system to that codebase.
Looks as though your doubts are unfounded.
Simon.
So, lets put Windows 2003 (?) Server up against OSX Leopard server. I want to develop a client application that uses web-scripting, linked to a backend-database, and calendaring/contacts. On OSX, I use Apache2, MySQL, PHP, and iCal server as foundations for my ObjC app, all of which come for free with unlimited client-side licences. I can integrate with the open-source C api's easily, and life is good.
.NET, the standard calendaring and contacts system is Outlook (server?). All of these are designed to play well with each other when you use them together, but that means a lot of licensing, both for the developer and for the client. Do all these licences come for free with a free MSDN subscription ? If so, when you sell the application to the client, is there a cost to you (now that it is a for-profit venture) ? Life doesn't sound so good...
On Windows (and I may be wrong about this, but it's my impression) the standard database is SQL Server, the standard language is now C# integrated via
My point was that all the surrounding APIs (for other services provided by the company's software) are just as proprietary within the Microsoft hegemony. Apple's use of open-source components doesn't impose the same burden.
For what it's worth, CodeWarrior doesn't exist any more on the Mac. It hasn't for a while - pretty much when XCode came along, Codewarrior gave up. Since you've never apparently met an Apple developer in the flesh, I don't doubt you've never heard of Xcode... It's not something you hear about while waiting in the ATM queue, after all...
I don't know either, and I care as much as you seem to. I was replying to the parent, and pointing out that there is a spectrum of developer opportunity in the Apple sphere, then contrasting it within the Microsoft realm. A fair comparison, I think.
Simon.
No. They. Don't. Where the hell this comes from is beyond me...
Let's look at the Operating Systems: It's been a while since I coded on a windows box, but I seem to remember it was MS who made you pay for an MSDN subscription (the cheapest way to get the dev-tools and all the proprietary servers and drivers you needed to actually do something useful), whereas Apple gave away their (full, professional) developer tools.
Ok, so what about the music players: It's Apple who are giving away (already announced, in February) the SDK for their music-player & phone. Can you get a Zune development kit ? Maybe you can, but I've never heard of one. If you can, will it come with a hefty price tag ?
Ok, let's look at attitude: Apple have an open-source kernel, and many open-source projects shipped as standard with their OS. Microsoft are completely closed-shop unless you're a freakin' government or similar. Apple pick areas of open-source they think they can improve (eg: WebKit), and once they've delivered it back to the community, people seem to agree (witness Webkit taking over in Nokia phones, the android API, even the KHTML source-code is being migrated to it). What's MS done recently - can you imagine internet-explorer's rendering engine being made open-source ?
Microsoft are the closed-source, closed-minded company. Apple are a breath of fresh air.
Simon
It saves you an extra $1100 or so, paid up-front, on top of the existing cost of the phone. In Germany, officially unlocked phones were on sale at 999 euros (or ~$1500). This is down to Apple losing any monthly fees from its partner phone-network once a phone is unlocked from that network.
So, with Apple wanting to recoup 4 years (according to the Steve) of R&D, here's your choices:
- Pay $399 for a phone locked to AT&T.
- Pay $1500 for an unlocked phone
Apple's position presumably is that no-one in their right mind would pay $1500 for the same phone that costs $399; and that the additional overheads of supporting any network, not to mention explaining to consumers that the 'visual voicemail' and possibly other future features wouldn't work, just made option 2 a non-starter.
It's up to Apple to figure out how much profit they want to make on each device (that's the right of the manufacturer). It's up to the consumer to decide whether the value is worth the cost. If the value-proposition is high enough, people will purchase the device in droves (and it looks like this is happening).
Simon
What is less known about that particular quote, is that it's actually a finely-crafted insult from Newton, aimed at Hooke.
The two men had a very acrimonious relationship, and Hooke had accused Newton of "borrowing" ideas from him in the past. Hooke was a short man, and Newton's quote was basically saying "I have indeed made use of the discoveries of great men, but you are not one of those men". The implication is that Hooke was a midget in scientific terms, as well as in physical stature.
Simon.
It just goes to show that the relationship of {number of patents : innovation} is a similar one to number of {number of security patches : security of the system}. It's not how many {patents/patches} you have, it's what they do for you. Apple, for example, is in the process of building another $10 billion/year business out of the multitouch patents that it has. One idea, a few patents to ring-fence and expand it, 10 billion dollars. That's a *good* idea. Microsoft has clever patents too, (eg: cleartype), but all that leads to is an argument over whether the alternative is "blurry" or "accurate", and whether cleartype text is "clear" or "anaemic". In other words, they gained support on their own platform, but they didn't managed to leverage it too much elsewhere.
Microsoft is *not* that innovative a company - it's bread and butter (80% of profits or so, I believe) come from corporations (not people), and corporations generally like "more of the same, please". There's nothing wrong with serving that demand, and [insert deity] knows they have clever people working there - the conclusion is that they don't *want* to be an innovative company - they're happy with the status quo, because it brings in gazillions of dollars for them. Sure, they'll have the occasional exciting new thing (how could they not, given their staff ?), but that's not the *company* focus.
In comparison, Steve is fond of saying he likes to run Apple as a small company, with the resources of a large company. That the cash-in-the-bank at Apple is because they *do* take risks, they *do* push the envelope that little bit farther, and that having a large wad of cash to fall back on is very useful, you know, just in case... Apple is ~1/5th the size of Microsoft (I think) in terms of staff, that's a lot of people, but they're spread pretty thin ("small company", "siege mentality", "more productive"), considering they produce computers, consumer devices, a major OS, several consumer apps, several pro-apps, as well as design their own hardware, operate a chain of retail shops (where most of the staff are), etc. etc.
Bottom line: Bill Gates said that Microsoft were one innovation away from being made irrelevant, and they work to protect their monopoly because of that. Apple's focus is more on the 'next big thing'. They take risks, and to do that you have to execute on new ideas. Apple is innovative, and its customers are people. Microsoft is protective, and its customers are corporations.
Simon.
It comes down to determination - the only authority on what some consumer gizmo is "supposed" to do are its creators. The uninformed preaching to the gullible are an inadequate replacement. I note that you still failed to provide a citation for your claim, even one as pathetic as "bloggers said so"...
As for my good self being a troll - I deny the accusation completely. I tend to be pro-Apple because of their products, which are generally (there are exceptions) well-designed (as in: well-thought-out, not as in 'pretty'). I tend to be anti-Microsoft because *their* products (with the exception of 'Office' perhaps) seem to me to be actively user-hostile. I could never see there being an 'Apple Genuine Advantage', for example. I still haven't forgiven MS for that one...
If the world spun in the opposite direction, if it was Microsoft that had a solid UNIX OS with a fantastic GUI front-end, and it was Apple who thought that corporations were their customer, not users, I'd probably reverse the sense of the pro/anti statement above. It's the products (the end-results) that I like, not the corporate entity that produces them. That's what I spend cash on, after all...
Trolls don't tend to admit their bias, or accept that not everything is perfect in their reality-replacing fantasy, I am happy to be corrected if anything I write is wrong. Just because I disagree with your statements doesn't make me a troll. Posting blatant untruths, hyping up one aspect of a story to bolster a preconceived opinion, that's what makes someone a troll. Oh, look, this is what you did - as you yourself admit...
The case for the prosecution rests, m'lud; in summary: "Whiney Mac Fanboy" is indeed whiney, but no mac fan-boy. Quite the opposite, in fact.
Simon
Show me a single claim from Apple that says that. Just one will do. Or are you talking about some know-nothing blogger trying to generate click-ads ? In any event, to make the claim, you have to cite your source, otherwise (given that this is slashdot, and you're a known anti-Apple troll) I call bullshit.
Simon
I guess I'm not really following what you're saying, unless it's "OSX has unix API's and other ones too". Well, duh. There are lots of API's in all operating systems that aren't anything to do with unix - GTK is hardly a unix requirement, nanosleep() probably isn't in the spec, device-driver api's are almost always specific to the OS in question, etc., etc., ad nauseum.
...) and realising that all the fancy GUI's just configure the same old text files is how to learn once and control anything.
The Finder creates aliases because aliases have more functionality than symlinks, and solve a different problem anyway. If I rename the file a symlink is pointing to, that symlink is misleading and broken. If I do the same to an alias, the alias still resolves the file correctly. Both behaviours are useful, under different circumstances, but for a UI-based desktop, the 'alias' behaviour seems superior for day-to-day use.
OSX is exactly a "unix with a pretty GUI". It's also other things, and certainly for me, it's the unix underpinnings that brought me to the platform a few years ago. It's the best damn unix workstation that I've ever used.
As for admin, again I guess I don't see your point. Administration tools on Solaris are different to HPUX, which are different to those in KDE, which are different to those in Gnome, which are... (another ad nauseum). There is no standard unix administration toolset. There are just many choices - learning the fundamentals of what is going on (how the networking/firewall works, how the system boots,
As for coding, well I guess all the gtkmm, gcc, glade, etc. (ad nauseum, ad nauseum) tools on my machine are an illusion then - strange that they seem "quite" similar to the versions on the linux box in the garage. Oh, and then there's XCode and ObjC/C++/C as well, with a nice IDE. So nice that I slave my iphone development stuff through xcode (xcode calls 'make') so I can get my nice IDE features (variable/argument/function expansion,...).
OSX is unix, and it's also other things. It's certainly not 5% unix like you seem to think - speaking as something of a unix expert (I've been using it for 20 years) *and* an OSX programmer.
Simon
- Go to developer.apple.com
Some points:- We moved away from 80-columns being the maximum length of a line a long long time ago.
- Any sensible IDE handles all the parameter expansion for you (including XCode). No typing...
- In the example I gave, it's very obvious which of xxx and yyy are the object and the index. Not so, when the parameters aren't named.
- Naming conventions (and they're rigorously followed in Cocoa/Foundation) give very useful information and context of what is supplied and taken as arguments.
I'm not sure I get your point here... Apple doesn't limit the language choices: there is C, ObjC, C++ (since there is ObjC++), Ruby & Python. Hardly limited. I guess I don't see MS providing a GTK interface to the windows forms library, but maybe they do, and I just missed it...I'm assuming you mean 'const' rather than 'cons', declaring either the pointer or the pointee to be constant. However, given that ObjC is a formal superset of C, I think you'd need to already know 'C' before trying to master ObjC in a month. Given the mastery of 'C' though, I think you could probably master ObjC in a month... There really aren't that many additions...
Simon
Not to mention that all the reference-counting is optional anyway in Leopard. Objective-C 2.0 has garbage collection...
Simon
*Tiger* uses reference-counting. *Leopard* uses garbage collection (or reference-counting, at the programmers whim). Objective C just got an upgrade...
Simon
I'd personally hate it if they gave up the beautiful elegance that is ObjC and forced Apple developers to move to Java or .NET.
.NET and ObjC/Cocoa. It frequently (despite the obvious potential bias given the name of the site) argues that the ObjC method for doing something is better thought out, more elegant, or simply more capable than the corresponding .NET approach.
I've said it before, and I'll say it again now: Objective C is exactly at the sweet spot for a computer language - it has all the power of C (it's a formal superset), the nice features of a true object-orientated language (OOP, garbage collection, protocols, etc.), adds in dynamic dispatch (thus removing the need for generics), and does it all by adding about a dozen commands to the C language. The only thing against it is the unfamiliar (to C/C++ programmers) syntax. Really, though, how hard is it to make the mental leap to [myObject insertObject:xxx atPosition:yyy] from myObject->insertObjectAtPosition(xxx,yyy) ? And which is the more readable ?
Plus, the class library is *very* well designed. It makes easy things easy, and hard things possible. A lot of hard things are pretty easy too... There's a site that often compares
Objective C is a classic example of how a simple clear approach can reap huge rewards in terms of usability and flexibility. It's not the over-designed bloat-fest that is C++ (template metaprogramming ? Really ?), and it's not the raw pedal-to-the-metal-hear-the-engine-scream-in-protest of plain old C. I've never yet met anyone give it a fair try (ie: write a real program in it) and not end up loving the language.
Simon
Um, given that if your boot drive goes on fire, you can still recover from a Time-Machine backup (on a different HD, obviously), I'd say you were wrong on that one. Sure sounds like a backup to me.
Simon.
PHP 5 and Apache 2 both come with Leopard, I'm not sure why MySQL wouldn't play nice, but in any case, install s/w on a mac from scratch is pretty simple: either use the standard ./configure && make && make install approach, or use the macports system...
1) download the macports installer from www.macports.com
2) install it by double-clicking on the friendly icon
3) open a terminal window
4) type 'sudo port install mysql5 apache2 php5'
5) make lots of coffee while gcc grinds away
Simon
As far as generalisation goes, with the stuff I do there is generally an abundance of training data - it's easy to get imagery, and it's easy to generate the input data from that imagery. As such, using some of the data as training data, and the remainder as generalisation-test data is a good (and pretty standard) approach. All you do is train on (say) 2/3 of the data while simultaneously checking the results against the remaining 1/3 of the data. You'll get two error-curves, which initially approximate each other, decreasing exponentially with time. After a while, however, the net will start to model the specifics of the training data (and thus continue to reduce the error for the training-data), but the generalisation-test data is different data, so *that* error curve will start to rise. To get the best generalisation from the network, all you need do is take the weights-state at the point of minimum error on the generalisation-test data.
:) All the above is automatic, I just have to review the results. My main decisions lie in making sure the system is still generic at the end of its development, and if the error-target wasn't reached, doing more research on input-data that is more-likely to give a good result.
I've used some linear discriminant techniques (primarily Principal Component Analysis and Canonical Discriminant Analysis) to get some information about the separability of the network input data, but not actually used an SVM as a classifier.
Generally I create networks using the centre-surround approach I detailed above. Each network is automatically trained with N runs over M configurations (for both hidden nodes and hidden layers), with the best result being selected. Networks are then trained to handle the fusion of these first-order networks into a new layer of networks - think of it as a multi-resolution approach. At the bottom level you have nodes, which combine to make networks, which combine to make networks of networks. I've also used network topologies where each classification-label has a single network representing that label rather than N outputs, one per classification, as well as hybrid systems.
Once the first-pass training has been completed, the confusion matrix (*) is determined, and is used to highlight typical misclassifications (where 'sky' and 'water' are being classified as the same thing, for example). This is where PCA and CDA come in, and I also have a derivation for the actual information content of any given input-data feature, expressed in terms of the output classification accuracy. These are used to split the conflicting categories and add network(s) that have a better chance of discriminating the problem categories, just prior to the fusion stage. All subsequent networks in the decision tree are retrained, and if the result is better, the next most-confusing pair is chosen and targeted. If the results are not better, the new network is discarded. This repeats until the desired error-rate is achieved on the generalisation-test data, or a set number of runs through the whole system are complete.
So, the answer to your last question is: both
Simon.
(*) A confusion matrix is simply a plot of "what the network classified as" vs "what the truth is". What you want to see is high numbers on the leading diagonal, and preferably zeros everywhere else.
Perhaps you didn't get much out of neural networks, but my PhD thesis was on the similarities between a kohonen network and relaxation-labelling equations. Part of it is up on my blog (I haven't actually got as far as that bit yet, but the groundwork is there).
A neural network (well, anything more complex than the single-layer perceptron anyway) is an arbitrary classifier. I'm curious as to why other methods are "much better". Unless you do an exhaustive search of the feature-space, all classifier methods are subject to the same limitations - local maxima/minima (depending on the algorithm), noise effects, and data dependencies. All of the various algorithms have strengths and weaknesses - in pattern recognition (my field) NN's are pretty darn good actually.
It's also a bit odd to just say 'neural networks' - there are many many variants of network, from Kohonen nets through multi-layer perceptrons, but focussing on the most common (MLP's), there's a huge amount of variation (Radial-basis function networks, real/imaginary space networks, hyperbolic tangent networks, bulk-synchronous parallel error correction networks, error-diffusion networks to name some off the top of my head), and many ways of training all these (back-prop, quick-prop, hyper-prop, batch-error-update, etc. etc.) I guess my point is that you're tarring a large branch of classification science with a very broad brush, at least IMHO.
Not to mention that this is all the single-network stuff. It gets especially interesting when you start modelling networks of networks, and using secondary feature-spaces rather than primary (direct from the image) features. Another part of my thesis was these "context" features - so you can extract a region of interest, determine the features to use to characterise that region, do the same thing for surrounding regions, and present a (primary) network with the primary region features while simultaneously(*) presenting other (secondary) networks with the features for these surrounding regions and feeding the secondary network results in at the same time as the primary network gets its raw feature data. This is a similar concept (if different implementation) to the eye's centre-surround pattern, and works very well.
If you work through the maths, there's no real difference between a large network and a network of networks, but the training-time is significantly less (and the fitness landscape is smoother), so in practice the results are better, even if in theory they ought to be the same. I was using techniques like these almost 20 years ago, and still (very successfully, I might add) use neural networks today. If it's a fad, it's a relatively long-running one.
Simon.
(*) In practice, you time-offset the secondary network processing from the primary network, so the results of the secondary networks are available when the primary network runs. Since we still run primarily-serial computers, the parallelism isn't there to run all of these simultaneously. This is just an implementation detail though...
I wasn't complaining. You were supposed to glean that from the bit where I said "I have no problem with this".
:), in some ways one could argue that a licence that enforces sharing while simultaneously delivering the source-code to the public view is an egregiously harmful thing. It forever opens up independent developers to false accusations that they copied and incorporated GPL-licenced code. There are only so many ways to write some of the more fundamental algorithms in computer science. What happens when all those ways for a given algorithm have GPL implementations ? What if two people independently write very similar code, and one of them is GPL ? What if the first implementation of 'test-and-set' or memory barriers had been GPL'd[*] ? Why should the closed-source developer be impacted by software (s)he may never even have heard of ?
With regard to your point about users - since (if I am solely a user) I am restricted to what developers do, I think the the knock-on effect of the developer-restrictions are very much restrictions on the users also. If a developer feels (s)he can't do something with GPL-licenced codebase X, the user doesn't get to enjoy that whizz-bang feature, or the software-project is simply discarded as not feasible.
In any event, (and to re-iterate, as I *said*) I don't have a problem with any licence that any software is released under - it's the owners privilege to assign the licence (s)he feels is most appropriate. What I was taking issue with was the assertion in the parent post to mine, vis: "The GPL only grants you rights that you wouldn't have had without it. It doesn't take any of your rights away.". This is quite clearly wrong - if no rights are taken away from you when you download and use GPL software, you'd be able to do anything with it that you could do with self-authored software.
To play the devil's advocate (since you *instructed* me to "discuss", you cheeky bugger
I happen to think the GPL is a good and useful licence, but like all good things, it can be abused. The moral of the story is simply to consider the ramifications of the licence you choose, for *any* code you release. I've released GPL code, and contributed to GPL projects. Likewise I've released BSD code and commercial (closed source) code. I've even released commercial (open source) projects. Choose the right vehicle for your code, and most people will be happy. Attempt to coerce them, or make a political statement with your code, and it will probably die a death, with some notable exceptions.
Simon.
-=-=-=-=-
* In this case, it would have been impossible to write a commercial operating system, "Windows" would not have happened, and the standardisation that the Microsoft Hegemony wrought would not have taken place. Without a standard OS, the software industry would probably have resembled the fractured state of the various un*x companies of the late 80's, and we probably wouldn't have seen the commoditisation of the PC, the resultant lower prices and exponential growth of the PC market. Without a single player driving the emerging marketplace, there wouldn't have been the enormous cash injections (and commensurate profits) needed to interest the large companies that fund the development of nascent markets. We may all still be using 80-character text displays (apart from the fortunate few using high-end workstations). All because of a licence.
Sure, this is a worst-case scenario, and it's just vaguely possible that the 30 or 40 open-source operating system communities could have come
Just look at the graph, and that was with the xbox 360 pretty much having the market to itself. I know the perceived wisdom is that the PS3 is a failure, but it doesn't seem that way if you look at the numbers...
Simon
If I download a project under the BSD licence, and I abide by the 'mention the copyright holders' clause, I can then use that software in a (closed source) commercial product and make money by combining it with my own ideas.
I cannot do this with any GPL software, it violates the terms of the licence. The GPL is therefore more restrictive than the BSD licence. This is an unassailable fact.
Now don't get me wrong... I don't have a problem with this - if someone makes the code, that person gets to say how the code can be used by others. Fine. Just don't pretend that the GPL doesn't impose limits and take away opportunities, because it very much does.
I've written and released software under the GPL, the LGPL and the BSD licence. I've written commercial software that includes BSD-licenced code (and complied with the terms of that licence, obviously). I don't care about the political agenda of either camp, for me it's just "what can I do with this code", and I get tired of hearing that the GPL doesn't take away anything when it quite clearly does.
Simon.
It's not stupid at all. Apple make a huge impact every time they release something major - far and away more than any of their rivals. There's a direct relationship between the secrecy of the company and the buzz for a release, which translates into a *lot* of cash in sales. One of the reasons the iPhone was themost successful consumer product launch in history is the control over information that Apple exerts.
When the benefits are measured in billions of dollars, it makes perfect sense to implement the policy that Apple does. Sure it's an easy shot to blame it on Steve's ego, but it looks like a cold blooded business decision to me.
Simon