Replying here to both your post and the one you replied to:
As I understand it, Xpra's cunning hack is to run a real X server (such as Xvfb, which just "displays" to some memory for debugging purposes - or even Xvnc (!)) somewhere. Then the Xpra server registers itself as a compositing manager (so the complete contents of windows get handed to it for compositing). The server uses XDamage (notification on bits of windows that changed, I think) to get told when some contents change, then reaches into the window content it's being asked to composite and squirts that over the network. The client side, speaking *very* loosely, just displays windows and fills them with the bitmapped content it's being sent by the server. Nice thing here is that it's windowing aware (unlike VNC) so can forward rootless apps but it doesn't need to screen scrape or proxy the X connections themselves. There's more cleverness in the implementation than I've described, in order to make interaction, etc work. But that's the basic trick.
Now, the thing I'm wondering - and I think there *is* a reason but I can't remember what it is... I'd like a normal compositing WM on my desktop to be able to take over this role. So it would act like a normal WM to me whilst I'm using my desktop but if I connect remotely it'll be able to send the bitmapped contents of windows to the remote system. One thing I can imagine being a problem is that when I resized windows at the "other end" they'd end up getting resize events locally too. But I could live with that, especially if the WM moved them back when I disconnect. I should ask on the Xpra mailing list, really.
If the thing could detect when an app is trying to accelerated video GL and switch to using some kind of lossy video codec to stream current content to the other end that would be even better.
The use of a layer such as Qwartz for Android and Chrome is somewhat independent from Google's working on an NX server though, isn't it? NX is a protocol and client / server code for implementing remote applications with good performance, even over low bandwidth and / or high latency links. It was developed by NoMachine, although others (such as FreeNX and 2X) have also built NX servers. So it really serves a very different (and somewhat orthogonal, though it *is* X11-based) purpose to Quartz.
When you mentioned Quartz, I assumed you meant the compositing layer but Wikipedia (http://en.wikipedia.org/wiki/Quartz_(graphics_layer)) helpfully mentions that both the 2D rendering engining and the Quartz Extreme compositor are sometimes just lumped together as "Quartz". Confusing! So I'm not really sure which you mean;-)
I'm not clear from the Wikipedia articles whether GL acceleration is yet used by default for Quartz 2D, the rendering engine. though of course the Quartz Extreme Compositor has been doing that for years.
Anyhow, I was going to note that - if you discount X+compiz or whatever as being too heavyweight to be equivalent - the Wayland display server (http://groups.google.com/group/wayland-display-server) is the nearest Linux-land thing I'm aware to Quartz Extreme and it's a pretty neat project at that. Cunningly, Wayland reuses a *lot* of existing X.org infrastructure, it looks like it should be able to support an accelerated X server efficiently as a client *and* they have ideas for what it could be used for even if the rest of the world don't start porting their toolkits to it. So it's a fairly exciting piece of work for the future of display systems on Unix-likes.
Nearest thing to Quartz 2D would seem to be things like Cairo and QT's Arthur. They've been around for a while; I know Cairo can render using GL and would be amazed if Arthur couldn't.
I've no idea what Android runs for its display stack but I'd think that Chrome OS, running on bigger hardware, will have the option of running desktop-class servers and libraries like this. I can't see a move to Wayland by anybody *just* yet but perhaps it's viable for a future revision.
In the meantime, if Google's NeatX makes more seamless, higher performing remote desktop available to more people - that's awesome. One day I might even run it on my server and access it from a netbook - running Chrome OS, perhaps.
Actually, replying to myself: what I'd *really* like to see is some funky modern window manager that leverages X11 extensions in a similar way to Xpra to enable forwarding of apps I started *locally* over some network protocol. Perhaps there's a reason this can't be done but I'm not really sure what it could be? I don't want to have to decide in advance which apps I might want to migrate - and I don't want to suffer performance penalties whilst I'm not remoting them.
Xpra, sadly, can only display apps you explicitly ran against the Xpra server. NX is the same. You can't just use it to access some random app you're running on your desktop at home. I've tried putting certain key apps into Xpra and then *always* "remoting" them, even when I'm on my home system. It works but it's a waste of resources and it's going to slow stuff down a bit (depending on what you're doing). I'd really like to get full Video / OpenGL performance from my apps when I'm at my machine but still be able to remote those apps in a performance-degraded way without restarting them.
This is excellent news, I've really enjoyed using NX but always found it slightly temperamental to use. Still, it gave me high performance rootless application access over a dodgy wifi link in Germany, back to my machine at uni in the UK - with the ability to resume every time the wifi dropped. I've known people have trouble resuming dropped sessions, though it worked when I needed it. Anything which is well-supported and makes NX nicer to work with is very welcome - I hope Google press on with making this better and better. It's be real nice if they'd make an open source client available too, preferably with a choice of front-end widget libraries;-)
Another project, which I actually head about on Slashdot and am very impressed by is Xpra: http://partiwm.org/wiki/xpra
Xpra = X Persistent Remote Applications, i.e. connect to your xpra server (tunnels through ssh by default) to get rootless applications delivered to your desktop, disconnect and reconnect somewhere else and get the same apps back. Like screen, for X. It's not meant for fast-changing displays, e.g. video. But it's a nice, compact approach that largely consists of a few thousand lines of Python. It uses modern X extensions cunningly to get the job done without having to understand most of the X protocol itself. And, somewhat like NX, it's better suited to high latency links than simple X11 protocol is. These days I think Xpra is starting to get more advanced features such as Windows client support, theme matching for remote and local apps, some clipboard sharing, etc. It's a nice little app that has its uses, particularly if you want something simpler than NX to set up and administer. The server can also be easily run by an unprivileged user whereas I'm not sure if that's the case for NX (?).
The, admittedly poor, opening joke wasn't really the point I wanted to make. I was commenting on the fact that only *real* competition is valuable to consumers and even then only if *both* companies make a genuine effort to compete on each other's turf. Anything short of genuine competition is of little use to the consumers, although it may be beneficial economically to the customers involved.
"a form of mutually assured destruction intended to keep each company in check"
And that's bad?;-)
Seriously though, the competition between the two is only good if it also increases choice in the sectors where each company is *already dominant*. If MS and Google both have healthy search solutions that we can choose between, that's good. If MS and Google both have healthy OS solutions we can choose from, that's good too. If the two of them merely retain their traditional dominant position whilst rattling sabres and reminding each other they could make a *real* push into one another's core market, that's not really good for anyone other than them. Even if one of those companies maintains their traditional dominant area whilst also creating competition in the others' core competency that has dubious benefits for the market, since it'll imply one big player getting *even bigger*.
One thing that history has shown us and that recent years have shown us again: the status quo will not continue forever. MS are not going to control the OS market *forever* as they have done in the past, ditto for Google in search provision. What's now up for play is how soon these changes happen and whether they empower consumers or take power away from them. Should be fun to watch!
Copyright law is trying to ensure control - and therefore income from - the production of things that are easily mechanically copied but require human effort to produce
Can you show me where that is the case? Let me help you -- it's not;) Again, at least in terms of US copyright law, there is no copyright protection even if you build a whole new car from scratch that is an exact replica of the original. Copyright law is about providing an incentive to create, not to reward hard work.
The way I read it, what you just said doesn't contradict what I said - but I think I underspecified my part a bit, which was misleading, sorry... When I said "human effort" I really should have said "human intelligence" and "mechanically" I probably should have said "without intelligence". I believe we're essentially saying the same thing, coming from different directions.
What I was trying to put across was this: In my view, a creative work requires a *uniquely human* effort to produce in the first place but is easily mechanically - or maybe I should say *procedurally* - copied. If you can write down unambiguously how to do it, then it's not a creative work. I think this actually dovetails well with the accepted definition in law that you quoted - this is what I wanted to highlight: what law calls an original or creative work is that which we cannot express procedurally.
So, going back to the previous example: although a human might choose to build or replicate a car, it *could* be done easily by robots and is thus not a creative process, regardless of whether a human is choosing to do it. You could easily write an unambiguous description of how to replicate a car, there's nothing subjective about it. So in my view that would be a "mechanical" reproduction even if a human was "running the program" by following the steps manually.
Whereas the car requires specifically human, i.e. non-procedural effort to *design* in the first place. And indeed car designs would be protected by copyright law as a creative work.
In short, having refined my viewpoint slightly, I agree it's not about the sheer amount of human effort, it's the amount of human intelligence that was necessary to produce a satisfactory (to other humans) output.
Coming back to the NPG's photographs of portraits, in my view whether they morally deserve copyright depends on whether the whole process was just a procedural "follow the rules and you'll get optimal output" process, or whether a real human is needed to make aesthetic decisions about what lighting would best reproduce the brushstrokes, the textures of the oil paints and highlight the key portions of the picture. I think if a human has had to do stuff like that, I believe it's creative.
The law's position would be different on this, since they have to simplify things to easy tests. As an example, I believe under US law, photos of 2D paintings aren't copyrightable, whereas photos of 3D sculptures are - the logic being that in a sculpture, there's some art in choosing a good angle. In practice I believe it's possible for reproductions of a painting to deserve copyright, if intelligence has gone into it (and vice versa, for sculptures!). But the law in the States has evidently decided that these cases are not sufficiently strong, or perhaps sufficiently numerous, to be worth catering for. I don't think that's a bad viewpoint to take.
And yeah I agree with your overall assumption that copyright law ought to be liberalized dramatically in either case.
Yep. Although we don't seem to be seeing enough of that:-( I'm putting some (perhaps over-optimistic hope) into open-source-alike stuff making this less of a problem for the meantime and praying for more sanity from our lawmakers one day in the future... a guy can dream!
Well, I'm thinking that the crucial question in determining what *deserves* copyright (as opposed to what the law requires, which is trickier as it has to be easily testible) is: is the process entirely mechanical or is a human intelligence required?
In your DVD ripping case, the whole process of producing the copy *can* be automated. The only bits that would actually require human input is the specification the output format. The process of producing the derivative work is entirely mechanical and it's a fairly simple mapping between input and output.
In the case of reproducing a painting, therefore, the question regarding copyrightability would become: can you automate the process mechanistically, or is a human intelligence necessary? If it's just a simple high quality scan, that's just mechanical. If the process benefits from a human's subjective judgement as to what lighting brings out the textures of the oil paints more attractively, what emphasises the more "interesting" portions of the picture, then I'd say that's creative.
What I would say is that it might be a closer analogy if somebody were to create an exact copy of the original car, since then something new had been produced and it's merely a question of whether it is an original work or not? But in the case of the car, the guy who is doing the work is either being paid for it or wants to do it for free. Copyright law is trying to ensure control - and therefore income from - the production of things that are easily mechanically copied but require human effort to produce.
To clarify somewhat, part of my assumption was that there is a degree of personal skill and therefore creativity in setting up the lighting and equipment settings to produce a *representation* which appears faithful to the spirit of the original. So more than just applying some mechanical process. But I don't really know, maybe that was an invalid assumption.
If it's a purely mechanical process that can be automated - put the portrait into the scanner, tell the computer to calibrate the lighting and colour settings and make the scan, the image is probably not original. If there's something in there that actually *can't* be automated in software and requires a human mind then surely some creative work *has* gone into it, even if it's just twiddling knobs on a machine?
But human effort is a difficult thing to measure and your analogy is pretty convincing to me, despite what I just said. I'm not a particular fan of the copyright law as it stands anyhow; I'd rather it was weakened in favour of a healthy public domain. So maybe I'm just being a pedant in debating it, sorry;-)
Oh yeah, I absolutely disagree with their stance that you can't take pictures yourself. I wouldn't mind that so much if they allowed reproductions of *their* photos. It's that they're forbidding both which really irritates me.
The works in the photo may not have copyright, but the fact is, the photos still have copyright. - only if the photograph of that public domain work has sufficient creative input from the creator to create a new copyright. The bar for 'creative input' is fairly low (deciding where to stand in order to take a picture of a sculpture is enough), but a flatbed scan is clearly not enough, as the court explicitly found in the Bridgeman case.
I think the letter from the NPG's lawyers mentions that case and points out that it is a precedent under US law, not UK law which is what they are using.
My real objection here isn't so much to the principle of their claiming copyright on their images - whilst I wish the law was more permissive I can sort-of see their point.
The problem, to my mind, is that they also have physical possession of the works and so can control other reproductions. I imagine they prohibit photography, along with a lot of galleries. Note that I haven't verified this, so it could be a baseless accusation.
But restricting competing reproductions whilst asserting copyright over their own definitely seems like a very old-fashioned view of art with it just being for collectors and custodians who might, optionally, let the public take a look. As far as I'm concerned, simply allowing the public to take their own photographs would substantially mitigate the situation.
True, a lot of sweat went into it, but does that make it an original work of art which should be afforded the same protections as a any other piece under the law? Apparently under UK law, yes; fairly dumb if ya ask me.
Which is an interesting question. As I said, I'm not a great fan of UK copyright law but it is the way things work and for now we're stuck with it. I don't really blame the NPG for feeling they need to operate under it - it'd be different if they were just using it as a hammer to crush opposition and maintain an absolute monopoly but they say they've been talking to the WMF about permitting lower resolution reproductions, which seems fairly progressive to me.
The question of originality is a bit confusing to me though: on the one hand, it's just a photo. If it's a labour-intensive process where they did more than just hold a camera up to it and take a snap I would say that creative work has gone into the task of producing a representative and faithful reproduction, even accepted that the reproduction is of another work. In which case I don't really begrudge them some rights over it.
At the same time I think the really annoying issue here is that the combination of physical possession of the pictures permits them to restrict other parties photography rights whilst they simultaneously maintain copyright controls over the images themselves. Which is much more unpleasant as it means they're controlling a part of our cultural heritage, rather than their (rightly or wrongly) copyrighted materials.
So they're working under UK law. It kinda sucks that our copyright laws and, in some ways, less friendly than the US. Even stuff the government itself produces is not public domain over here. But that's the law here, that's how it works.
Making a high resolution reproduction of a work of art requires special equipment and skills, so I really think it's fair enough if that's copyright - somebody has invested money, skills and effort in making the reproduction be as good as possible. The situation is different in the US but the NPG ain't in the US. If the UK taxpayer funded it and UK law says that it's copyrightable, you can understand the NPG feeling the need to protect the UK taxpayer's investment by maintaining control of the images.
Given they control their own reproductions of the pictures, would it be acceptable for them to deny visitors the right to take their own photographs? I think not. But that's a separate debate because this guy didn't go there and invest the time to make photographs that he would then have had copyright on under UK law, he downloaded them from the National Gallery's website. I agree with the many posters before me that whilst it somewhat sucks that these creative works aren't available digitally in the public domain, the NPG are really being pretty reasonable about this - they've offered to work out terms for lower resolution imagery to be made available to Wikipedia, which is a lot more constructive than you'd expect from a corporate entity. It really looks like they're trying to defend their legal position sensibly whilst still facilitating the transfer of information - good for them.
But, please, Wikipedia users and everyone else - feel free to increase pressure on our government and institutions (and those in other countries) to have a strong public domain and sensible, fair copyright laws. We still have further to go, it's just a question of how we choose to represent ourselves.
Thanks so much for your clear summary of the benefits of C#. Most discussion I've seen on other websites has been sadly lacking in technical specifics of the language and hence not very illuminating.
I'll take a look at the stuff you posted. I'm particularly intrigued by the mention of first class functions / lambdas since I had no idea C# supported that; it's something I used to wish for back when I programmed Java. I'm not a huge fan of functional programming but I really miss certain functional-inspired features when they're not there! The ability to cleanly interface with raw pointers etc also sounds like it could be useful for systems-type programming, e.g. doing ioctls! - though I have no idea how good Java is at this these days.
The reason I like Python particularly is that it has generally provided me with a good balance of non-verbose syntax, functional features and nice libraries - C# sounds like it offers similar benefits the same, only probably a bit more strict and with better performance given a decent JIT. That makes it sound like a much more attractive language than I'd ever realised before! Obviously not being fully dynamic is going to lose you some power but that also happens to be the kind of power that I'm generally happier for other programmers not to have in case I have to understand it later;-)
I can see much more clearly why developers are positive about Mono if it brings these avantages.
Thanks for your reply! It's really nice to see a summary of why C# users are so enthusiastic!
Simply put, C# is Java with true generics, RAII, full-featured lambdas with short syntax and ability to mutate captured variables, operator overloading, and opt-in low-level operations complete with pointer arithmetic and unions. (This is still a simplification, but it's close enough).
If you are a Java coder who understands what the above means, and it makes you go "wow gimme!", then welcome to the club (though you may also want to consider Scala in this case).
OK, I'm not a Java programmer these days but have worked with it in the past. Most of that *still* makes me go "wow, gimme!". Combined with the ability to run alongside other languages sanely on the CLI that is actually pretty awesome.
Sounds closer to the power I get with Python whilst still offering me the potential for efficient JIT and arguably better structuring / type-checking at development-time (though I have used tools that help with this issue in Python).
I'd be a bit skeptical when coding my own stuff over using parts that aren't ECMA / Community Promise protected but I can see that using GTK or QT bindings to such a language must be awesome. I might give it a go...
I would be surprised if a Microsoft-developed technology for improving Windows development experience wasn't popular on Windows, since it really seems to me to be the obvious choice and ought to have first class support.
Support from Microsoft is incidental to the success of C#/.net. If Sun had released a package with similar capabilities, they'd have had similar success.
I still think that a recommendation from the world's most successful software company might have something to do with it but OK... It's obviously made a major impression on at least one person (you) so it must be pretty good in its own right.
Then stop typing long, pointless, Slashdot posts and go make some Mono software. I have no idea what it would take to satisfy you, so you might just have to move your ass and find your own answers at some point.
I think this thread is probably reaching the limits of what we can achieve, so I may as well go do that. It'd be quite nice to know concretely what it offers to me, developing for Linux, over other languages / platforms I could use instead but maybe, as you say, I should just try it and see if I like it. It'd be good to have the experience, I guess...
Java + QT might help with the GUI side? I've heard lots of people say that Java's GUI programming is rubbish, but QT generally seems to be well-regarded. Usually when I need to knock up a GUI I use Python + QT, which works remarkably well though I've never done (or needed to do) a really big program in it.
Yes, I've heard of a million tools and tool-combinations to give Java a native look-and-feel, and still I've yet to see a single actual Java application with native look-and-feel.
Very true! Only case where it is otherwise is on MacOS, which AFAIK used to have a very strong Java implementation but is now falling behind the times. The Mac Java implementation got rid of all those nasty non-native widgets that AWT and Swing tended to give and displayed pretty Aqua widgets instead. It always looked like Java Done Right to me (plus they had a native Cocoa API available for java apps) but I'm not sure it's quite as good as it was back then.
When you say CLI and Java aren't mutually exclusive - is there a means of running Java on CLI yet? That sounds doable and would be cool. CLI really could be a unified backend, then.
I can't speak to Linux. But there's nothing preventing it except putting the man-hours in.
Splendid, thanks for the link! That's good to know about and not something I would have known about otherwise. It'd be good to have this available on Linux but presumably Mono will be able to run the resulting binaries anyhow - I do really like that CLI is quite language agnostic like that.
I guess I'll have to go investigate and see for me self whether Mono is worth the time / effort for Linux work.
Interesting question. I don't think it's to do with the existence of a few desirable apps. I've had plenty of experience with C# /.NET through work, and it's really very nice to work with. The language, the libraries, the platform and even the development environment all add up to a whole which (to my disappointment) I find much easier to work with than any free alternative I have yet discovered.
Just to clarify, are you talking about the MS implementation of C#, or the Mono implementation? Or are they equivalent in terms of this stuff.
I'm wondering to what extent.NET would give inherently nicer development features and to what extent MS have just made better development tools for their language than the other language folks have managed to make for theirs.
I still try to stay away from proprietary technologies in my personal projects, but I can see why people are excited by the prospect of a truly free version of this toolset. I'd switch to it in an instant if it happened. I don't think this announcement means we're there yet, however. Neither do I hold out much hope, with Microsoft being the way they are, that we will ever truly get there.
It's hard to imagine MS giving up a potential hammer they could use to hit a rival. OTOH, I suppose it is actually promising that they're allowing open implementations of anything at all under any circumstances - not long ago, even that would have seemed a bit surprising. Also, if they believe it gives them a more favourable playing field to compete on, it'll just make good business sense to support Free implementations...
My wager is that most of the people "pushing" Mono are people who have experienced C# development on Windows, and know how well it works. It's basically a war between the people who want to make great software in a great environment, and the people who only care about "Freedom." (Not that Mono is necessarily "anti-Freedom", but that's the way the "Freedom" advocates talk about it.)
Yep, understood. I have some sympathy with the pro-Freedom (with capital "F"!) crowd but also with the pragmatic folks who just want to get stuff done.
There are thousands of applications in Windows written in C#, or other.net languages. You need to broaden your experiences.
Ah, now this is a place where our viewpoints are different: I'm really wondering about desirable software implemented on Mono that was facilitated by the use of C# / the CLI. Not what applications use.NET, I'm sure there are plenty of those and I'm not disputing.NET as a platform in general.
I would be surprised if a Microsoft-developed technology for improving Windows development experience wasn't popular on Windows, since it really seems to me to be the obvious choice and ought to have first class support. Mono is clearly valuable for running good software that was developed for Windows, but that is not what I'm confused about.
On Linux the APIs for writing software are much more varied (or murky depending on your point of view); there's not an upstream OS vendor saying "We'll give this programming framework excellent support, you should try using it" as there is with.NET, so the choice of using Mono is less obvious to me since you don't get the benefit of guaranteed ongoing support "the mothership".
If Mono as good or better than the other options for Linux development, then I think it's worth considering. So what I'm wondering is whether Mono itself is desirable for implementing software on non-Windows platforms. The apps I mentioned were not chosen for a lack of experience but because they are all apps that were developed for Linux specifically using Mono. AIUI they're all nicely done, desirable apps that provide fairly compelling features - this is what I mean by their being "killer apps" for Mono. But I've not heard of (m)any other major Linux apps developed using it, which is why I'm curious about the benefits of Mono as a development platform when your primary target is not Windows.
The noise is all coming from people who spend more time arguing about the intricacies of the GPL version 2 vs. version 3 and legal this and allowed uses that and blah blah blah licensing shit real coders shouldn't care about.
The people wanting to use Mono *just want to make good software* without wasting time wading through licensing shit.
Fair enough. I guess I've just not seen much evidence of Linux developers in general using Mono; it'd be nice to find some and get some feedback on the tradeoffs of Mono vs other things they could have used for Linux development. I would like to know in what ways it's good and what projects it would be most suitable for.
I don't trust Microsoft in general but there's quite clearly a large group of people who are, independently, just saying that Mono is good.
That's because it is. Your trust of Microsoft has absolutely nothing to do with whether Mono is good or not.
My point exactly;-)
The real deal-breaker with Java is that after decades of work, it's still impossible to make a GUI application with native look-and-feel using Java. C#/CLI could do it from day one, and still can on every platform it runs on. Bam, that settles it for me. I don't know enough about Java to address your other concerns, except that Java and CLI aren't mutually-exclusive.
Considering your entire "question" is basically slamming it, I doubt you'll care what people answer.
But for the record, yes, it is *that* good.
The controversy is all over political crap, not the quality of the language or runtime. If you want to write software, and don't care about political crap, there's virtually nothing out there better than C# and the CLI right now.
Sorry if it sounded like a "slam". I imagine it would seem that way, given some of the crazy opposition Mono advocates sometimes get. But, seriously... My point is that with Mono advocacy being pushed quite hard in the face of so many kinds of public opposition it must bring pretty amazing technical benefits to inspire such devotion against so much political opposition. Some folks, on both sides, seem to just be digging their heels in for the sake of "being write" which is obscuring the real technical merits of the debate and making the whole thing look pretty murky.
I've not heard of many majorly popular new applications being written in it beyond the original headliners of Banshee / F-Spot / Tomboy / Beagle. Moonlight, I guess, but I'd say that's essentially "just" a (useful) compatibility layer as it's a reimplementation of Silverlight. This, along with all the noise, is what led me to wonder how much developer demand for Mono there really is, vs "merely" a demand for the existing applications vs an innate desire to propagate a major new project. Note that unlike some I'm not really pushing any kind of conspiracy theory here;-) I don't trust Microsoft in general but there's quite clearly a large group of people who are, independently, just saying that Mono is good.
So: I'm aware it's got a more civilised runtime than C or C++ (admittedly not hard!), platform independence (in principle), it's a nice language (is it still nicer than Java? It was when it was new but I was under the impression they'd closed the gap somewhat - modulo some icky technical restrictions on stuff like generics - in recent revisions of Java). I've also understood that the CLI is more language-neutral than the JVM, which is an excellent move and a deficiency Sun should have corrected years ago (though they appear to now be seriously considering doing so). Has the advantage of stricter type checking and, in principle, better performance than more dynamic and interpreted languages like Python and Ruby. It has, presumably, pretty nice bindings to GTK+, etc? I imagine the structure of the runtime helps with debugging, etc, which should make developer's lives easier (though I'd be surprised / impressed if these tools were already as highly developed as Java's - are they?).
These all sound "nice to have", so I'm curious how well they add up in practice. Do you have an opinion on any killer features the use of C# / CLI or is it just better overall with all the advantages over other platforms adding up and any technical drawbacks not being significant?
C# / Mono have pretty little effect on me as a developer as I actually do have a legitimate need to work mostly in plain old C (though when programming for fun I use Python because it's quick and flexible for the stuff I want to do). All the same, it's an interesting topic.
OK, first off it's excellent news if MS are doing this. It would be nice if they did the same for the parts of Mono /.NET that are outside ECMA.
As far as motivation for this goes, they're a business for whom pure co-operation seems to have dubious benefits. I assume that they believe that in this case more people using.NET is good for them and that they can compete well on the quality of the implementation and debugging tools (probably true if only because they'll have a head start on new features).
But the question I'm really curious about: CLI / C# / Mono seems to have generated a massive amount of controversy and therefore a lot of noise. Some fairly popular new apps have been written using it. The whole situation seems to suggest that, whilst using the technology was generally considered to have many downsides, it must have pretty large benefits too: it's not just being suggested as a compatibility library but as a foundation for some pretty cool new stuff. So... is this really the case? Is it that good that you'd want to write your note taking app in it (Tomboy) even though it's possible to write it in another language (i.e. Gnote)? Are the development tools that much better?
Or is it the case that a few "killer apps" happened to be written in C# as demonstrations of its abilities - even though another language would have done the job - and those apps are sufficiently desirable that Mono is getting pushed hard so that everyone can have these killer apps by default?
Personally, although I've not programmed in C#, I'm familiar with a variety of languages and implementation strategies. Different languages are certainly good for different things and more modern languages are typically less painful to work with. C# sounds quite nice. But what I'm wondering is: is the noise and push over Mono as a popular platform a result of it being particularly strong, or a result of a few particularly desirable apps depending on it? Obviously some (much!) of the noise generated is simply due to concerns over leveraging MS technology. But I do wonder how good the technology must be to justify this much noise and controversy!
To be pedantic, it's the Mozilla SeaMonkey suite. Puppy's a great distro though, especially for older machines.
Hrmmm, OK! I imagine using a combined suite makes sense, space-wise, perhaps? I always liked using SeaMonkey, before the days of Firefox, so that's cool.
I *think* the version I actually used did have Firefox but that was a very long time ago now. When I used it I'm not sure if they had a package manager, even!
I should really burn a new Puppy CD so that I'm prepared when this computer dies;-) Or, given the speed of the device isn't an issue if running from a ramdisk, I could buy a dirt cheap 512MB USB stick and have several hundred megs free for my own files!
Obviously, the problem with running Puppy in a ramdisk and not having it write back until shutdown is that if it crashes you'll lose your data. You can maybe do a full install to avoid that, I'm not sure... it'd be nice if it could persist data to storage on request but I don't know if it can.
Guess it might be faster for some stuff but I'm guessing it'd probably be slower overall. USB flash sticks are quite different animals to the SSDs you get as hard drive replacements. Although they're both based on flash memory tech, AFAIK SSDs typically provide much higher performance (and because they're not running over USB you may also find they have lower CPU usage in operation and may reach higher bandwidths in practice).
If you want to make your existing machine fast you could install something like Puppy Linux, which IIRC runs itself entirely out of a ramdisk. You can boot that off CD-R / CD-RW or a USB stick and it'll run straight out of RAM the whole time, then save any configuration changes back to the CD-R / CD-RW / Flash stick when you shut down. It's small, wicked fast, includes Firefox. When my main PC's hard drive died I simply stuck a Puppy CD in the drive and used that for browsing, e-mail, etc until the replacement arrived.
Replying here to both your post and the one you replied to:
As I understand it, Xpra's cunning hack is to run a real X server (such as Xvfb, which just "displays" to some memory for debugging purposes - or even Xvnc (!)) somewhere. Then the Xpra server registers itself as a compositing manager (so the complete contents of windows get handed to it for compositing). The server uses XDamage (notification on bits of windows that changed, I think) to get told when some contents change, then reaches into the window content it's being asked to composite and squirts that over the network. The client side, speaking *very* loosely, just displays windows and fills them with the bitmapped content it's being sent by the server. Nice thing here is that it's windowing aware (unlike VNC) so can forward rootless apps but it doesn't need to screen scrape or proxy the X connections themselves. There's more cleverness in the implementation than I've described, in order to make interaction, etc work. But that's the basic trick.
Now, the thing I'm wondering - and I think there *is* a reason but I can't remember what it is... I'd like a normal compositing WM on my desktop to be able to take over this role. So it would act like a normal WM to me whilst I'm using my desktop but if I connect remotely it'll be able to send the bitmapped contents of windows to the remote system. One thing I can imagine being a problem is that when I resized windows at the "other end" they'd end up getting resize events locally too. But I could live with that, especially if the WM moved them back when I disconnect. I should ask on the Xpra mailing list, really.
If the thing could detect when an app is trying to accelerated video GL and switch to using some kind of lossy video codec to stream current content to the other end that would be even better.
The use of a layer such as Qwartz for Android and Chrome is somewhat independent from Google's working on an NX server though, isn't it? NX is a protocol and client / server code for implementing remote applications with good performance, even over low bandwidth and / or high latency links. It was developed by NoMachine, although others (such as FreeNX and 2X) have also built NX servers. So it really serves a very different (and somewhat orthogonal, though it *is* X11-based) purpose to Quartz.
When you mentioned Quartz, I assumed you meant the compositing layer but Wikipedia (http://en.wikipedia.org/wiki/Quartz_(graphics_layer)) helpfully mentions that both the 2D rendering engining and the Quartz Extreme compositor are sometimes just lumped together as "Quartz". Confusing! So I'm not really sure which you mean ;-)
I'm not clear from the Wikipedia articles whether GL acceleration is yet used by default for Quartz 2D, the rendering engine. though of course the Quartz Extreme Compositor has been doing that for years.
Anyhow, I was going to note that - if you discount X+compiz or whatever as being too heavyweight to be equivalent - the Wayland display server (http://groups.google.com/group/wayland-display-server) is the nearest Linux-land thing I'm aware to Quartz Extreme and it's a pretty neat project at that. Cunningly, Wayland reuses a *lot* of existing X.org infrastructure, it looks like it should be able to support an accelerated X server efficiently as a client *and* they have ideas for what it could be used for even if the rest of the world don't start porting their toolkits to it. So it's a fairly exciting piece of work for the future of display systems on Unix-likes.
Nearest thing to Quartz 2D would seem to be things like Cairo and QT's Arthur. They've been around for a while; I know Cairo can render using GL and would be amazed if Arthur couldn't.
I've no idea what Android runs for its display stack but I'd think that Chrome OS, running on bigger hardware, will have the option of running desktop-class servers and libraries like this. I can't see a move to Wayland by anybody *just* yet but perhaps it's viable for a future revision.
In the meantime, if Google's NeatX makes more seamless, higher performing remote desktop available to more people - that's awesome. One day I might even run it on my server and access it from a netbook - running Chrome OS, perhaps.
Actually, replying to myself: what I'd *really* like to see is some funky modern window manager that leverages X11 extensions in a similar way to Xpra to enable forwarding of apps I started *locally* over some network protocol. Perhaps there's a reason this can't be done but I'm not really sure what it could be? I don't want to have to decide in advance which apps I might want to migrate - and I don't want to suffer performance penalties whilst I'm not remoting them.
Xpra, sadly, can only display apps you explicitly ran against the Xpra server. NX is the same. You can't just use it to access some random app you're running on your desktop at home. I've tried putting certain key apps into Xpra and then *always* "remoting" them, even when I'm on my home system. It works but it's a waste of resources and it's going to slow stuff down a bit (depending on what you're doing). I'd really like to get full Video / OpenGL performance from my apps when I'm at my machine but still be able to remote those apps in a performance-degraded way without restarting them.
This is excellent news, I've really enjoyed using NX but always found it slightly temperamental to use. Still, it gave me high performance rootless application access over a dodgy wifi link in Germany, back to my machine at uni in the UK - with the ability to resume every time the wifi dropped. I've known people have trouble resuming dropped sessions, though it worked when I needed it. Anything which is well-supported and makes NX nicer to work with is very welcome - I hope Google press on with making this better and better. It's be real nice if they'd make an open source client available too, preferably with a choice of front-end widget libraries ;-)
Another project, which I actually head about on Slashdot and am very impressed by is Xpra: http://partiwm.org/wiki/xpra
Xpra = X Persistent Remote Applications, i.e. connect to your xpra server (tunnels through ssh by default) to get rootless applications delivered to your desktop, disconnect and reconnect somewhere else and get the same apps back. Like screen, for X. It's not meant for fast-changing displays, e.g. video. But it's a nice, compact approach that largely consists of a few thousand lines of Python. It uses modern X extensions cunningly to get the job done without having to understand most of the X protocol itself. And, somewhat like NX, it's better suited to high latency links than simple X11 protocol is. These days I think Xpra is starting to get more advanced features such as Windows client support, theme matching for remote and local apps, some clipboard sharing, etc. It's a nice little app that has its uses, particularly if you want something simpler than NX to set up and administer. The server can also be easily run by an unprivileged user whereas I'm not sure if that's the case for NX (?).
The, admittedly poor, opening joke wasn't really the point I wanted to make. I was commenting on the fact that only *real* competition is valuable to consumers and even then only if *both* companies make a genuine effort to compete on each other's turf. Anything short of genuine competition is of little use to the consumers, although it may be beneficial economically to the customers involved.
"a form of mutually assured destruction intended to keep each company in check"
And that's bad? ;-)
Seriously though, the competition between the two is only good if it also increases choice in the sectors where each company is *already dominant*. If MS and Google both have healthy search solutions that we can choose between, that's good. If MS and Google both have healthy OS solutions we can choose from, that's good too. If the two of them merely retain their traditional dominant position whilst rattling sabres and reminding each other they could make a *real* push into one another's core market, that's not really good for anyone other than them. Even if one of those companies maintains their traditional dominant area whilst also creating competition in the others' core competency that has dubious benefits for the market, since it'll imply one big player getting *even bigger*.
One thing that history has shown us and that recent years have shown us again: the status quo will not continue forever. MS are not going to control the OS market *forever* as they have done in the past, ditto for Google in search provision. What's now up for play is how soon these changes happen and whether they empower consumers or take power away from them. Should be fun to watch!
Copyright law is trying to ensure control - and therefore income from - the production of things that are easily mechanically copied but require human effort to produce
Can you show me where that is the case? Let me help you -- it's not ;) Again, at least in terms of US copyright law, there is no copyright protection even if you build a whole new car from scratch that is an exact replica of the original. Copyright law is about providing an incentive to create, not to reward hard work.
The way I read it, what you just said doesn't contradict what I said - but I think I underspecified my part a bit, which was misleading, sorry... When I said "human effort" I really should have said "human intelligence" and "mechanically" I probably should have said "without intelligence". I believe we're essentially saying the same thing, coming from different directions.
What I was trying to put across was this: In my view, a creative work requires a *uniquely human* effort to produce in the first place but is easily mechanically - or maybe I should say *procedurally* - copied. If you can write down unambiguously how to do it, then it's not a creative work. I think this actually dovetails well with the accepted definition in law that you quoted - this is what I wanted to highlight: what law calls an original or creative work is that which we cannot express procedurally.
So, going back to the previous example: although a human might choose to build or replicate a car, it *could* be done easily by robots and is thus not a creative process, regardless of whether a human is choosing to do it. You could easily write an unambiguous description of how to replicate a car, there's nothing subjective about it. So in my view that would be a "mechanical" reproduction even if a human was "running the program" by following the steps manually.
Whereas the car requires specifically human, i.e. non-procedural effort to *design* in the first place. And indeed car designs would be protected by copyright law as a creative work.
In short, having refined my viewpoint slightly, I agree it's not about the sheer amount of human effort, it's the amount of human intelligence that was necessary to produce a satisfactory (to other humans) output.
Coming back to the NPG's photographs of portraits, in my view whether they morally deserve copyright depends on whether the whole process was just a procedural "follow the rules and you'll get optimal output" process, or whether a real human is needed to make aesthetic decisions about what lighting would best reproduce the brushstrokes, the textures of the oil paints and highlight the key portions of the picture. I think if a human has had to do stuff like that, I believe it's creative.
The law's position would be different on this, since they have to simplify things to easy tests. As an example, I believe under US law, photos of 2D paintings aren't copyrightable, whereas photos of 3D sculptures are - the logic being that in a sculpture, there's some art in choosing a good angle. In practice I believe it's possible for reproductions of a painting to deserve copyright, if intelligence has gone into it (and vice versa, for sculptures!). But the law in the States has evidently decided that these cases are not sufficiently strong, or perhaps sufficiently numerous, to be worth catering for. I don't think that's a bad viewpoint to take.
And yeah I agree with your overall assumption that copyright law ought to be liberalized dramatically in either case.
Yep. Although we don't seem to be seeing enough of that :-( I'm putting some (perhaps over-optimistic hope) into open-source-alike stuff making this less of a problem for the meantime and praying for more sanity from our lawmakers one day in the future ... a guy can dream!
Well, I'm thinking that the crucial question in determining what *deserves* copyright (as opposed to what the law requires, which is trickier as it has to be easily testible) is: is the process entirely mechanical or is a human intelligence required?
In your DVD ripping case, the whole process of producing the copy *can* be automated. The only bits that would actually require human input is the specification the output format. The process of producing the derivative work is entirely mechanical and it's a fairly simple mapping between input and output.
In the case of reproducing a painting, therefore, the question regarding copyrightability would become: can you automate the process mechanistically, or is a human intelligence necessary? If it's just a simple high quality scan, that's just mechanical. If the process benefits from a human's subjective judgement as to what lighting brings out the textures of the oil paints more attractively, what emphasises the more "interesting" portions of the picture, then I'd say that's creative.
What I would say is that it might be a closer analogy if somebody were to create an exact copy of the original car, since then something new had been produced and it's merely a question of whether it is an original work or not? But in the case of the car, the guy who is doing the work is either being paid for it or wants to do it for free. Copyright law is trying to ensure control - and therefore income from - the production of things that are easily mechanically copied but require human effort to produce.
To clarify somewhat, part of my assumption was that there is a degree of personal skill and therefore creativity in setting up the lighting and equipment settings to produce a *representation* which appears faithful to the spirit of the original. So more than just applying some mechanical process. But I don't really know, maybe that was an invalid assumption.
If it's a purely mechanical process that can be automated - put the portrait into the scanner, tell the computer to calibrate the lighting and colour settings and make the scan, the image is probably not original. If there's something in there that actually *can't* be automated in software and requires a human mind then surely some creative work *has* gone into it, even if it's just twiddling knobs on a machine?
But human effort is a difficult thing to measure and your analogy is pretty convincing to me, despite what I just said. I'm not a particular fan of the copyright law as it stands anyhow; I'd rather it was weakened in favour of a healthy public domain. So maybe I'm just being a pedant in debating it, sorry ;-)
Oh yeah, I absolutely disagree with their stance that you can't take pictures yourself. I wouldn't mind that so much if they allowed reproductions of *their* photos. It's that they're forbidding both which really irritates me.
The works in the photo may not have copyright, but the fact is, the photos still have copyright. - only if the photograph of that public domain work has sufficient creative input from the creator to create a new copyright. The bar for 'creative input' is fairly low (deciding where to stand in order to take a picture of a sculpture is enough), but a flatbed scan is clearly not enough, as the court explicitly found in the Bridgeman case.
I think the letter from the NPG's lawyers mentions that case and points out that it is a precedent under US law, not UK law which is what they are using.
Thanks for the links, I will take a look.
My real objection here isn't so much to the principle of their claiming copyright on their images - whilst I wish the law was more permissive I can sort-of see their point.
The problem, to my mind, is that they also have physical possession of the works and so can control other reproductions. I imagine they prohibit photography, along with a lot of galleries. Note that I haven't verified this, so it could be a baseless accusation.
But restricting competing reproductions whilst asserting copyright over their own definitely seems like a very old-fashioned view of art with it just being for collectors and custodians who might, optionally, let the public take a look. As far as I'm concerned, simply allowing the public to take their own photographs would substantially mitigate the situation.
True, a lot of sweat went into it, but does that make it an original work of art which should be afforded the same protections as a any other piece under the law? Apparently under UK law, yes; fairly dumb if ya ask me.
Which is an interesting question. As I said, I'm not a great fan of UK copyright law but it is the way things work and for now we're stuck with it. I don't really blame the NPG for feeling they need to operate under it - it'd be different if they were just using it as a hammer to crush opposition and maintain an absolute monopoly but they say they've been talking to the WMF about permitting lower resolution reproductions, which seems fairly progressive to me.
The question of originality is a bit confusing to me though: on the one hand, it's just a photo. If it's a labour-intensive process where they did more than just hold a camera up to it and take a snap I would say that creative work has gone into the task of producing a representative and faithful reproduction, even accepted that the reproduction is of another work. In which case I don't really begrudge them some rights over it.
At the same time I think the really annoying issue here is that the combination of physical possession of the pictures permits them to restrict other parties photography rights whilst they simultaneously maintain copyright controls over the images themselves. Which is much more unpleasant as it means they're controlling a part of our cultural heritage, rather than their (rightly or wrongly) copyrighted materials.
The NPG's UK taxpayer-funded mission.
So they're working under UK law. It kinda sucks that our copyright laws and, in some ways, less friendly than the US. Even stuff the government itself produces is not public domain over here. But that's the law here, that's how it works.
Making a high resolution reproduction of a work of art requires special equipment and skills, so I really think it's fair enough if that's copyright - somebody has invested money, skills and effort in making the reproduction be as good as possible. The situation is different in the US but the NPG ain't in the US. If the UK taxpayer funded it and UK law says that it's copyrightable, you can understand the NPG feeling the need to protect the UK taxpayer's investment by maintaining control of the images.
Given they control their own reproductions of the pictures, would it be acceptable for them to deny visitors the right to take their own photographs? I think not. But that's a separate debate because this guy didn't go there and invest the time to make photographs that he would then have had copyright on under UK law, he downloaded them from the National Gallery's website. I agree with the many posters before me that whilst it somewhat sucks that these creative works aren't available digitally in the public domain, the NPG are really being pretty reasonable about this - they've offered to work out terms for lower resolution imagery to be made available to Wikipedia, which is a lot more constructive than you'd expect from a corporate entity. It really looks like they're trying to defend their legal position sensibly whilst still facilitating the transfer of information - good for them.
But, please, Wikipedia users and everyone else - feel free to increase pressure on our government and institutions (and those in other countries) to have a strong public domain and sensible, fair copyright laws. We still have further to go, it's just a question of how we choose to represent ourselves.
Thanks so much for your clear summary of the benefits of C#. Most discussion I've seen on other websites has been sadly lacking in technical specifics of the language and hence not very illuminating.
I'll take a look at the stuff you posted. I'm particularly intrigued by the mention of first class functions / lambdas since I had no idea C# supported that; it's something I used to wish for back when I programmed Java. I'm not a huge fan of functional programming but I really miss certain functional-inspired features when they're not there! The ability to cleanly interface with raw pointers etc also sounds like it could be useful for systems-type programming, e.g. doing ioctls! - though I have no idea how good Java is at this these days.
The reason I like Python particularly is that it has generally provided me with a good balance of non-verbose syntax, functional features and nice libraries - C# sounds like it offers similar benefits the same, only probably a bit more strict and with better performance given a decent JIT. That makes it sound like a much more attractive language than I'd ever realised before! Obviously not being fully dynamic is going to lose you some power but that also happens to be the kind of power that I'm generally happier for other programmers not to have in case I have to understand it later ;-)
I can see much more clearly why developers are positive about Mono if it brings these avantages.
Thanks for your reply! It's really nice to see a summary of why C# users are so enthusiastic!
Simply put, C# is Java with true generics, RAII, full-featured lambdas with short syntax and ability to mutate captured variables, operator overloading, and opt-in low-level operations complete with pointer arithmetic and unions. (This is still a simplification, but it's close enough).
If you are a Java coder who understands what the above means, and it makes you go "wow gimme!", then welcome to the club (though you may also want to consider Scala in this case).
OK, I'm not a Java programmer these days but have worked with it in the past. Most of that *still* makes me go "wow, gimme!". Combined with the ability to run alongside other languages sanely on the CLI that is actually pretty awesome.
Sounds closer to the power I get with Python whilst still offering me the potential for efficient JIT and arguably better structuring / type-checking at development-time (though I have used tools that help with this issue in Python).
I'd be a bit skeptical when coding my own stuff over using parts that aren't ECMA / Community Promise protected but I can see that using GTK or QT bindings to such a language must be awesome. I might give it a go ...
I would be surprised if a Microsoft-developed technology for improving Windows development experience wasn't popular on Windows, since it really seems to me to be the obvious choice and ought to have first class support.
Support from Microsoft is incidental to the success of C#/.net. If Sun had released a package with similar capabilities, they'd have had similar success.
I still think that a recommendation from the world's most successful software company might have something to do with it but OK... It's obviously made a major impression on at least one person (you) so it must be pretty good in its own right.
Then stop typing long, pointless, Slashdot posts and go make some Mono software. I have no idea what it would take to satisfy you, so you might just have to move your ass and find your own answers at some point.
I think this thread is probably reaching the limits of what we can achieve, so I may as well go do that. It'd be quite nice to know concretely what it offers to me, developing for Linux, over other languages / platforms I could use instead but maybe, as you say, I should just try it and see if I like it. It'd be good to have the experience, I guess...
Java + QT might help with the GUI side? I've heard lots of people say that Java's GUI programming is rubbish, but QT generally seems to be well-regarded. Usually when I need to knock up a GUI I use Python + QT, which works remarkably well though I've never done (or needed to do) a really big program in it.
Yes, I've heard of a million tools and tool-combinations to give Java a native look-and-feel, and still I've yet to see a single actual Java application with native look-and-feel.
Very true! Only case where it is otherwise is on MacOS, which AFAIK used to have a very strong Java implementation but is now falling behind the times. The Mac Java implementation got rid of all those nasty non-native widgets that AWT and Swing tended to give and displayed pretty Aqua widgets instead. It always looked like Java Done Right to me (plus they had a native Cocoa API available for java apps) but I'm not sure it's quite as good as it was back then.
When you say CLI and Java aren't mutually exclusive - is there a means of running Java on CLI yet? That sounds doable and would be cool. CLI really could be a unified backend, then.
There is in Windows: http://www.microsoft.com/downloads/details.aspx?familyid=E3CF70A9-84CA-4FEA-9E7D-7D674D2C7CA1&displaylang=en
I can't speak to Linux. But there's nothing preventing it except putting the man-hours in.
Splendid, thanks for the link! That's good to know about and not something I would have known about otherwise. It'd be good to have this available on Linux but presumably Mono will be able to run the resulting binaries anyhow - I do really like that CLI is quite language agnostic like that.
I guess I'll have to go investigate and see for me self whether Mono is worth the time / effort for Linux work.
Thanks for your time.
Interesting question. I don't think it's to do with the existence of a few desirable apps. I've had plenty of experience with C# / .NET through work, and it's really very nice to work with. The language, the libraries, the platform and even the development environment all add up to a whole which (to my disappointment) I find much easier to work with than any free alternative I have yet discovered.
Just to clarify, are you talking about the MS implementation of C#, or the Mono implementation? Or are they equivalent in terms of this stuff.
I'm wondering to what extent .NET would give inherently nicer development features and to what extent MS have just made better development tools for their language than the other language folks have managed to make for theirs.
I still try to stay away from proprietary technologies in my personal projects, but I can see why people are excited by the prospect of a truly free version of this toolset. I'd switch to it in an instant if it happened. I don't think this announcement means we're there yet, however. Neither do I hold out much hope, with Microsoft being the way they are, that we will ever truly get there.
It's hard to imagine MS giving up a potential hammer they could use to hit a rival. OTOH, I suppose it is actually promising that they're allowing open implementations of anything at all under any circumstances - not long ago, even that would have seemed a bit surprising. Also, if they believe it gives them a more favourable playing field to compete on, it'll just make good business sense to support Free implementations...
My wager is that most of the people "pushing" Mono are people who have experienced C# development on Windows, and know how well it works. It's basically a war between the people who want to make great software in a great environment, and the people who only care about "Freedom." (Not that Mono is necessarily "anti-Freedom", but that's the way the "Freedom" advocates talk about it.)
Yep, understood. I have some sympathy with the pro-Freedom (with capital "F"!) crowd but also with the pragmatic folks who just want to get stuff done.
There are thousands of applications in Windows written in C#, or other .net languages. You need to broaden your experiences.
Ah, now this is a place where our viewpoints are different: I'm really wondering about desirable software implemented on Mono that was facilitated by the use of C# / the CLI. Not what applications use .NET, I'm sure there are plenty of those and I'm not disputing .NET as a platform in general.
I would be surprised if a Microsoft-developed technology for improving Windows development experience wasn't popular on Windows, since it really seems to me to be the obvious choice and ought to have first class support. Mono is clearly valuable for running good software that was developed for Windows, but that is not what I'm confused about.
On Linux the APIs for writing software are much more varied (or murky depending on your point of view); there's not an upstream OS vendor saying "We'll give this programming framework excellent support, you should try using it" as there is with .NET, so the choice of using Mono is less obvious to me since you don't get the benefit of guaranteed ongoing support "the mothership".
If Mono as good or better than the other options for Linux development, then I think it's worth considering. So what I'm wondering is whether Mono itself is desirable for implementing software on non-Windows platforms. The apps I mentioned were not chosen for a lack of experience but because they are all apps that were developed for Linux specifically using Mono. AIUI they're all nicely done, desirable apps that provide fairly compelling features - this is what I mean by their being "killer apps" for Mono. But I've not heard of (m)any other major Linux apps developed using it, which is why I'm curious about the benefits of Mono as a development platform when your primary target is not Windows.
The noise is all coming from people who spend more time arguing about the intricacies of the GPL version 2 vs. version 3 and legal this and allowed uses that and blah blah blah licensing shit real coders shouldn't care about.
The people wanting to use Mono *just want to make good software* without wasting time wading through licensing shit.
Fair enough. I guess I've just not seen much evidence of Linux developers in general using Mono; it'd be nice to find some and get some feedback on the tradeoffs of Mono vs other things they could have used for Linux development. I would like to know in what ways it's good and what projects it would be most suitable for.
I don't trust Microsoft in general but there's quite clearly a large group of people who are, independently, just saying that Mono is good.
That's because it is. Your trust of Microsoft has absolutely nothing to do with whether Mono is good or not.
My point exactly ;-)
The real deal-breaker with Java is that after decades of work, it's still impossible to make a GUI application with native look-and-feel using Java. C#/CLI could do it from day one, and still can on every platform it runs on. Bam, that settles it for me. I don't know enough about Java to address your other concerns, except that Java and CLI aren't mutually-exclusive.
Java + QT might help with the GUI side? I've he
Considering your entire "question" is basically slamming it, I doubt you'll care what people answer.
But for the record, yes, it is *that* good.
The controversy is all over political crap, not the quality of the language or runtime. If you want to write software, and don't care about political crap, there's virtually nothing out there better than C# and the CLI right now.
Sorry if it sounded like a "slam". I imagine it would seem that way, given some of the crazy opposition Mono advocates sometimes get. But, seriously ... My point is that with Mono advocacy being pushed quite hard in the face of so many kinds of public opposition it must bring pretty amazing technical benefits to inspire such devotion against so much political opposition. Some folks, on both sides, seem to just be digging their heels in for the sake of "being write" which is obscuring the real technical merits of the debate and making the whole thing look pretty murky.
I've not heard of many majorly popular new applications being written in it beyond the original headliners of Banshee / F-Spot / Tomboy / Beagle. Moonlight, I guess, but I'd say that's essentially "just" a (useful) compatibility layer as it's a reimplementation of Silverlight. This, along with all the noise, is what led me to wonder how much developer demand for Mono there really is, vs "merely" a demand for the existing applications vs an innate desire to propagate a major new project. Note that unlike some I'm not really pushing any kind of conspiracy theory here ;-) I don't trust Microsoft in general but there's quite clearly a large group of people who are, independently, just saying that Mono is good.
So: I'm aware it's got a more civilised runtime than C or C++ (admittedly not hard!), platform independence (in principle), it's a nice language (is it still nicer than Java? It was when it was new but I was under the impression they'd closed the gap somewhat - modulo some icky technical restrictions on stuff like generics - in recent revisions of Java). I've also understood that the CLI is more language-neutral than the JVM, which is an excellent move and a deficiency Sun should have corrected years ago (though they appear to now be seriously considering doing so). Has the advantage of stricter type checking and, in principle, better performance than more dynamic and interpreted languages like Python and Ruby. It has, presumably, pretty nice bindings to GTK+, etc? I imagine the structure of the runtime helps with debugging, etc, which should make developer's lives easier (though I'd be surprised / impressed if these tools were already as highly developed as Java's - are they?).
These all sound "nice to have", so I'm curious how well they add up in practice. Do you have an opinion on any killer features the use of C# / CLI or is it just better overall with all the advantages over other platforms adding up and any technical drawbacks not being significant?
C# / Mono have pretty little effect on me as a developer as I actually do have a legitimate need to work mostly in plain old C (though when programming for fun I use Python because it's quick and flexible for the stuff I want to do). All the same, it's an interesting topic.
OK, first off it's excellent news if MS are doing this. It would be nice if they did the same for the parts of Mono / .NET that are outside ECMA.
As far as motivation for this goes, they're a business for whom pure co-operation seems to have dubious benefits. I assume that they believe that in this case more people using .NET is good for them and that they can compete well on the quality of the implementation and debugging tools (probably true if only because they'll have a head start on new features).
But the question I'm really curious about: CLI / C# / Mono seems to have generated a massive amount of controversy and therefore a lot of noise. Some fairly popular new apps have been written using it. The whole situation seems to suggest that, whilst using the technology was generally considered to have many downsides, it must have pretty large benefits too: it's not just being suggested as a compatibility library but as a foundation for some pretty cool new stuff. So ... is this really the case? Is it that good that you'd want to write your note taking app in it (Tomboy) even though it's possible to write it in another language (i.e. Gnote)? Are the development tools that much better?
Or is it the case that a few "killer apps" happened to be written in C# as demonstrations of its abilities - even though another language would have done the job - and those apps are sufficiently desirable that Mono is getting pushed hard so that everyone can have these killer apps by default?
Personally, although I've not programmed in C#, I'm familiar with a variety of languages and implementation strategies. Different languages are certainly good for different things and more modern languages are typically less painful to work with. C# sounds quite nice. But what I'm wondering is: is the noise and push over Mono as a popular platform a result of it being particularly strong, or a result of a few particularly desirable apps depending on it? Obviously some (much!) of the noise generated is simply due to concerns over leveraging MS technology. But I do wonder how good the technology must be to justify this much noise and controversy!
You mean like the Warthog?
*ouch, ouch* why do I post these things!?
It's small, wicked fast, includes Firefox.
To be pedantic, it's the Mozilla SeaMonkey suite. Puppy's a great distro though, especially for older machines.
Hrmmm, OK! I imagine using a combined suite makes sense, space-wise, perhaps? I always liked using SeaMonkey, before the days of Firefox, so that's cool.
I *think* the version I actually used did have Firefox but that was a very long time ago now. When I used it I'm not sure if they had a package manager, even!
I should really burn a new Puppy CD so that I'm prepared when this computer dies ;-) Or, given the speed of the device isn't an issue if running from a ramdisk, I could buy a dirt cheap 512MB USB stick and have several hundred megs free for my own files!
Obviously, the problem with running Puppy in a ramdisk and not having it write back until shutdown is that if it crashes you'll lose your data. You can maybe do a full install to avoid that, I'm not sure ... it'd be nice if it could persist data to storage on request but I don't know if it can.
Guess it might be faster for some stuff but I'm guessing it'd probably be slower overall. USB flash sticks are quite different animals to the SSDs you get as hard drive replacements. Although they're both based on flash memory tech, AFAIK SSDs typically provide much higher performance (and because they're not running over USB you may also find they have lower CPU usage in operation and may reach higher bandwidths in practice).
If you want to make your existing machine fast you could install something like Puppy Linux, which IIRC runs itself entirely out of a ramdisk. You can boot that off CD-R / CD-RW or a USB stick and it'll run straight out of RAM the whole time, then save any configuration changes back to the CD-R / CD-RW / Flash stick when you shut down. It's small, wicked fast, includes Firefox. When my main PC's hard drive died I simply stuck a Puppy CD in the drive and used that for browsing, e-mail, etc until the replacement arrived.