Slashdot Mirror


Mono's Cocoa# Underway, GTK# Takes on Windows.Forms

Gentu writes "OSNews posted some exclusive screenshots of a new project in the Mono community: Cocoa#. Apparently there are a couple of Apple engineers helping out the project that allows developers to create graphical Cocoa applications under Mac OS X using the C#, Python or Basic language. Mono seems to be doing well in the Windows land too, allowing developers to use GTK# instead of Windows.Forms to create multi-platform apps."

84 of 378 comments (clear)

  1. Yikes! by Anonymous Coward · · Score: 5, Funny

    I got a headache just reading the headline. Give us old fogies a break, we're used to seeing the hash mark at the beginning of the line...

    1. Re:Yikes! by NanoGator · · Score: 2, Funny

      "I got a headache just reading the headline. Give us old fogies a break, we're used to seeing the hash mark at the beginning of the line..."

      Confused me too!

      "Cocoa# No such channel"

      --
      "Derp de derp."
    2. Re:Yikes! by meringuoid · · Score: 3, Funny
      Personally, I just thought:

      Avert your eyes, children! He may take on other.Forms!

      --
      Real Daleks don't climb stairs - they level the building.
  2. Windows.Forms in Mono by miguel · · Score: 5, Informative

    I wanted to mention that our path to indepedence
    clearly goes through Gtk#, but we realize the
    importance of giving users binary compatibility
    so we are actively developing Windows.Forms and
    Visual Basic.NET (gasp) for Mono.

    A new from scratch implementation has started with
    four of the top Mono developers that are now
    locked up in Provo Utah working around the clock
    to delivery the new implementation of Windows.Forms
    (our previous Wine-based approach having too many
    Mono/Wine problems to solve).

    Miguel.

    1. Re:Windows.Forms in Mono by Anonymous Coward · · Score: 3, Interesting

      while you are at it, feel free to improve Windows.Forms. Microsoft's version of it has some odd limitations, and considering they are planning to replace Windows.Forms with a complete re-write, they are not spending any time fixing these things.

      For example, it is supposedly impossible to have a context menu on a treeview that responds properly to both the mouse right-click and the context menu keyboard key (without resorting to Win32). If anyone has got this to work, please tell how..

    2. Re:Windows.Forms in Mono by prockcore · · Score: 4, Interesting

      A new from scratch implementation has started with four of the top Mono developers that are now
      locked up in Provo Utah working around the clock
      to delivery the new implementation of Windows.Forms


      What are they doing then? I thought using wine was going to solve the p/invoke issue. Are you just going to ignore the p/invoke and just implement the exposed API?

    3. Re:Windows.Forms in Mono by killjoe · · Score: 2, Insightful

      I call it as I see it. This is a collasal waste of time. Those hackers should be working on cloning avalon not windows.forms.

      I am especially appalled by the idea that they are going to throw away all that they have written already and starting from scratch.

      It's their time, it's their money, they have a right to do anything they want but that does not mean I have to agree.

      --
      evil is as evil does
    4. Re:Windows.Forms in Mono by Matt+-+Duke+'05 · · Score: 4, Informative

      Perhaps actually trying to accomplish what you claim is impossible might help you out a bit. This took me about 30 seconds to do:

      using System;
      using System.Drawing;
      using System.Windows.Forms;

      namespace TreeTest {
      public class TreeTest : Form {
      [STAThread]
      public static int Main(string[] args) {
      Application.Run(new TreeTest());
      return 0;
      }

      public TreeTest() {
      tree = new Tree();
      tree.Dock = DockStyle.Fill;
      Controls.Add(tree);
      Text = "TreeTest";
      }

      private Tree tree;
      }

      public class Tree : TreeView {
      public Tree() {
      menuItem = new MenuItem("Menu Item");
      contextMenu = new ContextMenu();
      contextMenu.MenuItems.Add(menuItem);
      }

      protected override void OnKeyDown(KeyEventArgs e) {
      base.OnKeyDown(e);

      if (e.KeyCode == Keys.Apps) {
      ShowMenu(new Point(0, 0));
      }
      }

      protected override void OnMouseUp(MouseEventArgs e) {
      base.OnMouseUp(e);

      if (e.Button != MouseButtons.Right) {
      return;
      }

      ShowMenu(new Point(e.X, e.Y));
      }

      protected void ShowMenu(Point pos) {
      contextMenu.Show(this, pos);
      }

      protected ContextMenu contextMenu;
      protected MenuItem menuItem;
      }
      }

      --
      -Matt
      Duke '05
    5. Re:Windows.Forms in Mono by ambrosine10 · · Score: 5, Insightful

      Those people criticizing Miguel really need to shut up. Here is a man who has contributed much code to open-source projects, is a great leader in the movement, and works for what he believes in. Yet these zealots are constantly yelling at him just because he happens to see MS technology in an impartial light. Just because it's by MS doesn't automatically make it bad. In fact if it wasn't for people like Miguel who try to merge practicality with idealism, the open-source movement would be as irrevelant as ever.

    6. Re:Windows.Forms in Mono by KAMiKAZOW · · Score: 4, Interesting
      our path to indepedence clearly goes through Gtk#


      Why GTK#? Honestly, GTK is probably one of the worst toolkit for real cross platform development.
      The Windows port of GTK sucks. This WiMP thing (Or whatever it's called - it makes GTK app to some degree look like native Windows apps) is not that great. The performance of the GTK(WIMP) apps' GUI is noticeable lower than a native GUI.

      Under Mac OS X it's even worse. GTK only works under X11. This means no Aqua look & feel. No copy and paste or drag'n'drop between native OSX apps and GTK apps. Even keyboard shortcuts are different.

      Why didn't you chose something like wxWidgets? At least wxWidgets offers native GUIs under any platforms it runs. wxWidgets or any other toolkit that offers real platform independence.
      Or: With all these XML GUIs under .NET (like XAML) Ximian could've used Mozilla's XUL toolkit and have better multi platform integration than GTK.

      Also - from what I've read on the mailing list archives - Mono only works sometimes on BSD systems.

      What kind of independence is this? You are only focused on x86-Linux running GNOME.

      Ximian does not seem really interested in real platform CocoaSharp. Stuff like Qt# (for KDE users), CocoaSharp, and other cross platform develpment is not done by any Ximian guy, but from contributors.
    7. Re:Windows.Forms in Mono by IamTheRealMike · · Score: 4, Informative
      It was, but there were communications issues. So now they're going to not only try to implement the entirely of S.W.F in C# (that's an entire widget toolkit!) but also a fake WndProc/Handle property for apps that rely on the underlying Win32ness of it.

      For *really* hard core apps (read: most .NET apps) that actually mix native and .NET code, they were talking about having a special "winelib" mode where it's somehow used, but I've not seen any credible technical details on this.

      Basically it looks like in order to run .NET code that is mixed with native Win32 code the Wine team will have to do their own S.W.F implementation one day. Currently there are no killer .NET apps that I know of (by killer I mean public/retail software sufficiently unique that it's a "blocks my migration to Linux" app, rather than custom corp apps) so it's not a big deal. But I expect they'll come eventually.

    8. Re:Windows.Forms in Mono by rhysweatherley · · Score: 4, Informative
      wtf? where is the windows.forms implementation under Linux? They are writing it from scratch because the previous version was using Wine and didnt work properly, so now they are doing it 'natively'.

      Microsoft hasnt written a windows.forms implementation under Linux - they are not playing 'catch up', they are implementing something that doesnt yet exist.

      Actually, it does. DotGNU Portable.NET has had a native implementation of SWF for over a year now. We discarded Wine as a viable option from day one.

      DotGNU Web Site.

    9. Re:Windows.Forms in Mono by IamTheRealMike · · Score: 4, Insightful
      First of all, there is no magic bullet to write quality desktop software and have it run anywhere. These days, if you want to write a program once and have it feel native on each platform, you need to be either using native widgets on each platform, or to have a big investment in custom code and tweaks in your toolkit for each platform.

      GTK# runs on multiple platforms. Unsurprisingly it works best on the platform most people use it on. It does not run well on Windows or MacOS X, but that's simply because few people have worked on it/been interested in it. That can be fixed, with time.

      When Miguel said "GTK# is the path to independence" he was talking about API independence not platform independence. They are different.

      wxWidgets does not give platform independence. Sorry, but it just doesn't cut it for quality software. Abstractions work best when the things they abstract are semantically very similar (or identical) - widget toolkits are not similar, they often work in very different ways and have radically different capabilities. I've yet to run a wxWidgets app which didn't feel piss poor on every platform : much like Swing apps not feeling native everywhere, wxWidgets apps never fit in. This doesn't cut it for writing good software for the free desktop.

      Or: With all these XML GUIs under .NET (like XAML) Ximian could've used Mozilla's XUL toolkit and have better multi platform integration than GTK.

      GTK is a proven platform used by many, many applications. XUL is really only used by the Mozilla suite of apps: it lacks such basic things as the still theoretically xulrunner. That's why it was chosen.

      Also - from what I've read on the mailing list archives - Mono only works sometimes on BSD systems. What kind of independence is this? You are only focused on x86-Linux running GNOME.

      So what? Wine doesn't work on BSD systems currently either, but this is the fault of BSD not Wine (and I believe the same is true of Mono). Both Wine and Mono do very complex things with threading, address space management and low level OS calls that BSD either doesn't support or nobody with the relevant expertise has shown up to write the support. The vast majority of people use Linux, so this gets the best support. This is the open source meritocracy : write the code and the support will come, yes?

    10. Re:Windows.Forms in Mono by squiggleslash · · Score: 3, Interesting
      The major argument isn't against Miguel as what he's doing and the mindset commonly associated with Miguel.

      What most of us want is something better than what Microsoft does, more than that, we want something exciting, radical, and different. The mindset that Miguel and others seem to share is that as long as "our" stuff is Free, it is better, and there's no point in creating a better technology, we might just as well copy Microsoft, fix a few bugs, extend here and there, and, voila, you have something better. The technology isn't better, but the implementation is, and that's enough, right?

      It's more than that though, it's an unwinnable contest. As long as Microsoft's "competitors" are merely trying to catch up with Microsoft, implementing the same technologies, there's no way, in practice, those competitors can actually be better except on purely political grounds.

      Now don't get me wrong, I consider myself an enthusiast of free software. But if you're going to write an operating system from the ground up, then you're wasting a lot of opportunities by relentlessly copying someone else, especially copying the technologies - from the user interfaces to the APIs - of a company whose reputation in the industry is of being first, not best. It's a waste of talent.

      The issue becomes worse when you consider that these competitors are trying to build Microsoft's environment upon an operating system that has a fundementally different philosophy at its heart, meaning any competitor designed this way is going to be fundamentally flawed. Linux, arguably, should be abandoned in favour of ReactOS if this development path continues.

      A substantial section of the free software and open source communities lacks the talent and imagination to build something new, and unfortunately that section is leading development at the moment. Miguel is merely the figurehead for that movement. I don't blame people for feeling that way, I know a lot of people would like a Free clone of Microsoft's operating systems and environments, I just feel that this is a bandwagon the GNU/Linux distributions are unwise in hopping on to and pouring so much development time into.

      The question really is do you want a Free Windows, or do you want a choice of platforms? Right now, GNU/Linux is Window's most powerful competitor, yet all the excitement, the innovation, the "We want to create something better" attitude, is coming from elsewhere.

      --
      You are not alone. This is not normal. None of this is normal.
    11. Re:Windows.Forms in Mono by squiggleslash · · Score: 2, Interesting
      The thing is, the Unix world had many many years to develop something better than Microsoft. What you got was Motif, a gazillion emacs modules, key-command window managers, and various scripting components.
      And you got OpenStep, NEWS, and other environments that were technically excellent. Until the mid-nineties though, most of the development was closed. And, unfortunately, pretty much the moment the F/OSS communities started up, it was clear they wanted to clone Windows. I recall the first version of RedHat I installed was set up with FVWM95 as the default WM.

      The Unix world has had its good GUIs, I even linked to a pioneer in the field, it's the F/OSS communities that have insisted on ignoring work relevent to Unix and instead tried to graft on to an OS fundamentally unlike Windows an environment that was as Windows-like as possible.

      --
      You are not alone. This is not normal. None of this is normal.
    12. Re:Windows.Forms in Mono by Archibald+Buttle · · Score: 2, Insightful

      Now this raises an interesting question.

      Why do we have both Mono and DotGNU implementations of Windows.Forms?

      Why dedicate four senior Mono developers to solving something that the GNU project has already tackled? Won't the DotGNU version work with Mono? If that's the case why not just take the DotGNU version as a starting point and work from there?

      Or is this some kind of licensing issue? It would not surprise me if the DotGNU implementation was lumbered with a full GPL, rather than an LGPL, thus making it unusable for anything appart from "free" software.

  3. What exactly are you looking for? by junkymailbox · · Score: 4, Funny

    You know there are panther and aqua themes out there that look and behave quite similarly to the mac theme. find them at Themes at freshmeat

    1. Re:What exactly are you looking for? by theantix · · Score: 4, Insightful

      uh, dude.

      An interface is *so* much more than widgets and icons.

      And I'm a Gnome zealot, for crying out loud.

      dude.

      --
      501 Not Implemented
  4. Patents? by Anonymous Coward · · Score: 5, Informative

    From the mono FAQ:

    Question 131: Could patents be used to completely disable Mono (either submarine patents filed now, or changes made by Microsoft specifically to create patent problems)?

    ... The controversial elements are the ASP.NET, ADO.NET and Windows.Forms subsets. Those are convenient for people who need full compatibility with the Windows platform, but are not required for the open source Mono platform, nor integration with today's Mono's rich support of Linux.

  5. Why doesn't mono get it (winforms)?? by Anonymous Coward · · Score: 2, Insightful
    I don't see Windows developers switching to Gtk# just coz "It works in Linux" ... They will rather go elsewhere like Wx.NET for example (it runs on native OSX) or run Winforms using Portable.net's Swing based Winforms (that sounds like a LOT of volunteer work ?). They will NOT use Gtk# or Cocoa# until they have a VS.NET designer built-in .

    I have this distinct feeling that supporting Windows.Forms out of the box would have affected Miguel's stated reasons for Mono ie Gtk# and using it for Gnome apps..... That's why probably Mono didn't implement Windows.Forms for Mono 1.0 (talk about MAJOR feature missing). But this is totally off that map ?.

    If Apple does run .NET finally , it'll probably be licensed off Microsoft to prevent Microsoft from screwing them later. I have a feeling Miguel and Ximian-Novell is just doing "Free" development for Apple if they release this under LGPL. I care more about running my winforms apps on Linux and BSD , not about how "cool" embedding a browser control in C# is.

    Nothing to see here folks ... move on
    1. Re:Why doesn't mono get it (winforms)?? by cujo_1111 · · Score: 3, Informative

      C# != .NET CLR

      The C# language may be a standard but the .NET runtime is a MS proprietary object.

      --
      If I point out that you are incorrect, making me a foe does not make you any more correct.
  6. Mono vs. Java (again) by fupeg · · Score: 5, Interesting

    There are some decent arguments for using Mono over Java on Linux. Those arguments don't hold up as well on OSX, though. Java support on the Mac is in many ways superior to Java on any other platform, especially for Swing apps (the counterpart to most Cocoa# apps.) Still it could be attractice to have a framework that made it as easy as Java is for developing cross-platform (Windows/Linux/OSX) apps that would have significant performance advantages over Java on 2 out of 3 of those platforms.

    1. Re:Mono vs. Java (again) by Anonymous Coward · · Score: 3, Informative

      Huh? Pardon me, but how much Swing development have you done on OSX? I've done plenty as OSX was to be my primary development environment, targetting windows users. After about a month of that, I now do most of my development on an XP laptop.

      There are NUMEROUS outstanding issues with Apple's JVM. First off, the perfomance is significantly slower than on Windows ( this is comparing my Dual G5 w/1GB RAM to a 2.2GHz Celeron w/512M laptop ).

      Secondly, the setFont() function is completely ignored for JTextArea and defaults to monospaced serif fonts and white backgrounds.

      There are too many problems to list here, but honestly, Swing/Java for OSX is nowhere near the quality of the Windows or Linux implementation ( even as much as I wish it was ).

  7. wxWidgets, another _perfect_ alternative with Mono by after · · Score: 4, Informative

    I've been using wxWidgets for some corperate develpment and I don't think I can be more happy with it. Integrating Cocoa into Mono is nice with GTK and all (didn't read article- sorry,) but is it going to use native UI faculties that the operating system provides? wxWidgets even has .NET interpolabilito under development called wx.NET and you can use that with Mono too.

  8. Apple could really benefit... by callipygian-showsyst · · Score: 4, Interesting

    ..from embracing (and extending!) C# and .NET. Programmers generally like C# and .NET for application development, and Objective-C has some serious flaws.

    1. Re:Apple could really benefit... by jcr · · Score: 4, Insightful

      Objective-C has some serious flaws. ..and also some compelling advantages. Take a look at how NSUndoManager was implemented, and please tell me how to do the same thing in Java, C#, C++ or whatever your favorite language may be.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    2. Re:Apple could really benefit... by cablepokerface · · Score: 2, Funny

      Take a look at how NSUndoManager was implemented

      In VB it's implemented like this:

      SendKeys{"CONTROL+Z"}.

  9. Mono has come very far in a short period of time by Ars-Fartsica · · Score: 4, Insightful
    Congrats to the Mono crew - from announcement to 1.0, they have covered a lot of ground in a short period of time and if they are perceived to be encumbered by patent issues (note I say perceived), they are not encumbered by bad-source-practices that is still keeping Java locked out of some domains.

    You can use real apps right now with Gtk# - the Muine music player and the Blam RSS reader are functional and mostly stable...there are many other examples.

  10. Re:For Linux? by Amiga+Lover · · Score: 4, Insightful

    I want Mac OS's interface on Linux! I've done what I consider to be as good of a job as I can, but it's not the best knock-off in the world.

    They should be concentrating on making quick & efficient UIs like the Amiga had, or the early Macs, not bloat upon bloat upon bloat.

    Both the original mac and Amiga UI systems fit inside 512k RAM or less, leaving everything else for the App's functionality. When some of those early machines were expanded from 68000 CPUs to 68040s and 32MB of ram or more they flew faster than any 2 or 3GHz cpu in GUI feel. Nothing could outclass them

    So why do we need this bloat?

  11. Windows forms sucks by Anonymous Coward · · Score: 2, Informative

    Really. You'd think Microsoft could come up with something better than the grid-based layout they have been since forever. Once you start using a constraint based layout kit like Gtk, you never want to go back to the stone age and have to manually write window resize code and manually adjust the sizes of controls individually. I'm hoping to try out Gtk# soon for projects now that we are starting to use .Net as a development platform.

    1. Re:Windows forms sucks by IamTheRealMike · · Score: 2, Informative

      Dude, I can't agree. Dialog units are an awful hack Microsoft added to cover up for the lack of design they put into the dialog manager originally. Anchoring is not superior to constraint-based layout once you take into account things like translations which can radically modify the size of strings at runtime. I think you equate anchoring with "flexible" because you are used to dropping controls at arbitrary points. This sort of flexibility just shoots you in the foot later though. Taking the time to learn constraint-based layout - wierd though it is at first - will not be wasted.

  12. Gtk# Rocks by pherthyl · · Score: 5, Interesting

    Even back in the 0.8 days, I had very few problems making a medium sized app (~4000 lines), developed entirely under linux with Mono. Everything worked on the first try when I ran it on windows with .NET.

    Now that's true cross platform ability. Even with Java I've never had it work that flawlessly. Thanks Miguel and Mike Kerster and the rest of the Mono team. You guys rock.

  13. I think the world has finally left me behind by Brandybuck · · Score: 3, Interesting

    I think the world has finally left me behind. I just don't get this obsession with .NET. Even the Java ecstacies back in the mid 90's weren't this enthusiastic. There are fifty stories on related topics on OSNews, and .NET evangelists are work are sprouting up everywhere like dandelions. Hell, Miguel can't take a dump these days without Slashdot reporting it.

    Why the obsession with Microsoft technology? What's it going to give me, an embedded systems developer? Why are vice presidents at work mandating its use in a hard realtime product? Frankly it appears to me that the world has gone stark raving mad.

    Has there EVER been any language or framework that generated so much unbridled enthusiasm before? Did they lace the spec with speed or something? I'm not doubting that these various Microsoft cloning projects have some merit, but some of you guys are going way over the top.

    I guess I'm just an old fashioned fuddy duddy who should stick with old fashioned languages, frameworks and music.

    --
    Don't blame me, I didn't vote for either of them!
    1. Re:I think the world has finally left me behind by jcr · · Score: 2, Funny
      Why are vice presidents at work mandating its use in a hard realtime product?

      Funny, I was just reading a very good essay on this subject earlier today.

      My favorite paragraph:

      Why does he think this? Let's take a look inside the brain of the pointy-haired boss. What he's thinking is something like this. Java is a standard. I know it must be, because I read about it in the press all the time. Since it is a standard, I won't get in trouble for using it. And that also means there will always be lots of Java programmers, so if the programmers working for me now quit, as programmers working for me mysteriously always do, I can easily replace them.


      Replace "java" with "COBOL" if you're talking about thirty years ago, "C++" if you're talking about 15 years ago, or ".NET" if you're talking about this year.

      -jcr
      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    2. Re:I think the world has finally left me behind by Osty · · Score: 5, Insightful

      Why the obsession with Microsoft technology?

      .NET is pretty damned good, and people recognize that. The few who don't are the normal "Anything but Microsoft" zealots. It's not perfect, but very good and getting better.


      What's it going to give me, an embedded systems developer?

      Absolutely nothing, but you're not the target demographic.


      Why are vice presidents at work mandating its use in a hard realtime product?

      .NET is the hot new buzzword, and your VPs aren't smart enough to realize that it's not suitable for embedded realtime applications.


      Frankly it appears to me that the world has gone stark raving mad.

      From your perspective, that may be true, but then you're looking at the world from the eyes of a real-time, embedded systems developer where you work with a limited set of known hardware under strict time and resource constraints. .NET isn't for you. That doesn't mean the world has actually gone mad, just that there's more to the world than that which applies to you.


    3. Re:I think the world has finally left me behind by Anonymous Coward · · Score: 5, Insightful

      Think about it this way.

      For years, developers targetting the windows platform had two (real) choices VB or C/C++.

      With C/C++ you had two choices. Use the win32 API directly and/or use MFC. With VB, creation of GUI apps was made as simple as possible, at the expense of a cumbersome language.

      Throw COM into the mix, complex threading models and API interface du-jour and the bottom line is that Windows developers have been guinea pigs feeding on inconsistent standards for 15 years.

      -----Enter Java

      Finally, a language that brings OOP to the masses without having to learn complex semantics regarding memory allocation. It also eliminates the cumbersome and overly complex nature of STL in C++.

      The drawbacks were twofold: Early java adopters didn't have the rich GUI IDE's present in VB5/6 and VC++/DevStudio. Like it or not, it hurt producitivty, at least in the short term. Translation: corporate america didn't warm up to the idea immediately.

      Another drawback to java was the rampant verbosity of the language. There are those that do believe that enum's and value types are GOOD things.

      Then you had the immaturity of Java GUI toolkits that made 'rich client' apps look like they were written by high school script kiddies.

      ---- Enter .NET/C#

      Goodbye VB6. Goodbye VC++. Hello managed code. Goodbye MFC. Hello (working) garbage collection. Goodbye complex threading models. Hello full-featured clone of Java.* renamed as System.*.

      C# as a language is a dream. It contains most of the language features that I had been dying for. It is readable, quick to code in and is put together in a consistent manner.

      There is very little about C# that is better than java. But for windows-based shops, Java can't hold a candle to c#/.net.

      It isn't a religous war. You may not like microsoft's policies or busines practices. And they certainly didn't invent the concept of a managed environment or one-up Java.

      While the typical slashdotter is foaming at the mouth about MS, .NET and how we are all bunch of idiots, I am busy writing code for a good company that just happens to base their operations on windows.

      Imagine the ability to take an ASP.NET app that you RAD-developed using MS VS.NET tools and cross-compiling it in Mono, running the whole thing under apache using mod_mono.

      You would have the benefit of a killer IDE (VS.NET), a rock-solid back end (Apache) and an application framework that works without headache!

      That is why **I** use MS.NET and MONO. I don't particularly care for MS, but I am smart enough to know what side of the bread is buttered.

      Bottom line: Sometimes you have to get past the religious zealotry of the pro-linux/anti-ms crowd (ie. slashdot) and see something for it's good.

      This isn't a perfect world, and MS usually sucks, but .NET is cool. Linux is cool. Mono is cool.

      Lets marry them together and reap the benefits.

      Standing at the back of room pouting isn't helping advance your cause.

    4. Re:I think the world has finally left me behind by dekeji · · Score: 4, Interesting

      The key differences between C# and Java are philosophy and licenses.

      Java's philosophy is built around WORA and enforced standardization, courtesy of Sun Microsystems.

      C# is just a language, like C or C++--it comes with a small standard library, but what you do with it beyond that is up to you. C# has a language standard, and an open one at that, but the degree to which you follow that is up to you.

      Whether that is good or bad is a matter of needs and preferences. I think the level of enthusiasm C# and Mono have generated should tell you which way the wind is blowing.

      Note that Mono is not just about cloning Microsoft. Mono is building an entire platform; part of that platform is Microsoft compatibility libraries, but most of it is actually based on open source APIs and libraries.

    5. Re:I think the world has finally left me behind by WaltFrench · · Score: 2, Interesting

      The fact that Microsoft initiated this project is a significant negative to me (risk of having the rug pulled out) but the only negative against the opportunity to have a multi-language (I'm a sucker for the strong type- and functionality assertion checking that Pascal first brought, and Eiffel now offers), multi-platform environment.

      That means that when the NAG releases their intricate math routines in .Net, I could use them without worrying about FORTRAN vs. C vs VB etc... develop anywhere (?) for implementation many years into the future on unknown platforms. Mix'n'match developer familiarity with 3rd party libraries.

      This is just my perspective as a business person who doesn't code nearly as much as I used to, but wants to leave a legacy that others can build on (and wants to freeload on the best & brightest of what came before). .Net is a slam-dunk only-way-to-do-it choice if the Mono guys are only half as good as they seem to be, and if MS is only twice as evil as it seems to be.

      --
      "Inquiring Minds Want to Know!"
    6. Re:I think the world has finally left me behind by groomed · · Score: 4, Insightful
      Well, as the anonymous poster above already mentioned, you need to consider what came out of Microsoft before .NET; a confused jumble of acronyms and paradigms with the combined lifespan of a Coke bottle.

      .NET really is Microsoft's first serious contribution to the computing culture (as opposed to industry) at large. It synthesises many of the ideas of the past decade in a very clean and logical way. And it's remarkably open: not in the sense that it's endorsed by some standards body, but in the sense that it actually makes an effort to integrate with other technologies -- through the pervasive use of XML, the Common Language Runtime and the numerous hooks in the class library, all the way down to the fact that the C# compiler will actually not explode when encountering a file with \n line termination rather than \r\n.

      .NET is a heavy-duty framework that will be around in some form for decades to come, and it's pretty good. It's like Java but less insular, it's like C but less tedious.

      What generates all the hubbub, of course, is that something like this is coming from Microsoft. Think of it as a celebration party. What's being celebrated is that Microsoft is finally coming of age.

    7. Re:I think the world has finally left me behind by Jord · · Score: 2, Insightful

      Anyone who thinks it is a good idea to code a mission critical application using Mono needs to find another job. No large company out there is going to trust a mission critical application to an untest language implementation like Mono. Perhaps in a few years but not yet.

    8. Re:I think the world has finally left me behind by Osty · · Score: 5, Insightful

      I understand that this is a rather novel concept under Windows, and if I were a Windows application developer I might just go along with it. It's certainly less painful than MFC/COM+. But that doesn't explain the massive exodus away from traditional languages and frameworks by Unix developers.

      All I can offer is that C# and .NET are the current "cool" things, and thus Unix (read: Linux) developers don't want to be left out in the cold. That may change in the future. It may not. Mono may mature to the point where cross-platform .NET applications Just Work (tm) without ugly GTK# stuff (GTK# is fine for Linux, but GTK on Windows sucks, and I can't imagine GTK# would be any better -- besides, the look & feel is all off, and themes can only do so much to correct that).


      Okay, imagine I also write end user applications for Linux/Unix users. What does Mono give me that C++/Qt/KDE does not? What does it give me that non-Ximian C/GTK/GNOME does not? What does it give me that RubyQT and wxPython do not?

      Basically, ask yourself why you would use Java rather than C/C++/Qt/KDE/GTK/GNOME or a scripting language like Ruby or Python, and then realize that C# fixes many annoyances from Java (int is both Object-derived and a value type in C#, unlike int vs. Integer in Java; You can create user-defined value types in C#; C#'s generics implementation is much more robust than Java's syntactical sugar hack that translates everything to Object during compilation; etc) and adds new language features (attributes, properties, events, etc). Java and C# are garbage-collected, which makes them more secure by default than C/C++ (with respect to memory management issues, anyway -- you can certainly still write insecure code in Java or C#). They're also compiled to an intermediate language, so they're faster than scripting languages (yes, Python and Ruby have various different compilers to build C code, java bytecode, .NET IL code, etc, but in their vanilla forms they're interpreted scripting languages).


      Or to put it another way, why should I jump on the .NET bandwagon when Java is here today and Parrot is just around the corner?

      .NET fixes a number of shortcomings of Java. Also, the C# language and common runtime are truly open (ECMA standardization), unlike Java. Parrot has been "just around the corner" for years, and nothing I've seen has indicated that it will actually "come around the corner" any time soon. If you want to wait, or build your software on top of ever-changing beta code, go ahead and use Parrot.

    9. Re:I think the world has finally left me behind by richardfish · · Score: 2, Informative

      Because .NET is the only platform that exists today that allows you to re-use code written in other languages *without* writing a single interface function. Although Mono only has a C# compiler today, I believe others will follow with compilers/interpreters for (managed)C++, Obj C, Ruby, Python, Java, etc. So write your assembly in C# today, and re-use it tomorrow in Java, or give it to your co-working using C++.

    10. Re:I think the world has finally left me behind by namekuseijin · · Score: 2, Informative
      They're also compiled to an intermediate language, so they're faster than scripting languages (yes, Python and Ruby have various different compilers to build C code, java bytecode, .NET IL code, etc, but in their vanilla forms they're interpreted scripting languages).

      This is incorrect.

      Perl, Python and Ruby standard implementations don't work by sluggishly interpreting each line of code everytime, like the old, putrid Basic interpreters from the 80's. They *do* compile the text source code to an internal, more convenient form: Python to bytecode and Ruby and Perl to an internal graph structure.

      What do make Java and C# faster to execute is that type-checking is done at compile time, while in dynamically typed languages like those above the checking is done at runtime.

      However, you get faster execution by having the developer of statically-compiled languages to explicitly declare every and all variables and parameters with the correct types, and this clearly is overkill for many application software.

      Dynamically-typed languages get this burden off the developer by providing an execution environment which does exactly that at the cost of some execution overhead. The developer is then freed from the boresome and mechanical type declarations to worry about more important matters, such as actually making the code do something useful.

      One would reply: "But you lost all benefits from getting correctly compiled code.", like as if the compilation stage doesn't report lots of errors in dynamically-typed languages or if the compilation itself was proof that the software is free of bugs and doesn't need to be thoroughly tested for runtime errors.

      I ask, if you still need to go through the pain of testing thoroughly, what real benefits come from statically-compiled languages other than execution speed and perhaps some subtle runtime bugs difficult to discover? Is it worth to lose conciseness or development time just for it?

      Here's a lovely trivial example in C#, using the standard .Net framework. This is how i declare a RadioButtonList webcontrol in ASP.NET:

      using wctl = System.Web.UI.WebControls;
      .
      .
      .
      protected wctl.RadioButtonList lstACTY_CD_ID;

      Well, that wasn't so bad, and then there's semantic autocompletion of symbols (something M$ marketing dept calls "Intellisense") -- if you're using a featurefull IDE, that is -- which automatically provide you with a quick selection and online documentation of all available completions or operations for the symbol just left of the cursor. Yes, writing type declarations with such tool is trivially easy, though reading through them afterwards and mantaining the code-base is not. Don't understand yet? Here's a very nasty, and yet very common taste of stupid statically typed syntax, following the same example above:

      this.lstACTY_CD_ID.SelectedIndex = lstACTY_CD_ID.Items.IndexOf(lstACTY_CD_ID.Items.Fi ndByValue(accident.Type.ACTY_CD_ID.ToString()));

      No, i'm not kidding: this is how you preselect some item in a radiobutton list given a particular value from the same datasource. That is real production code from an app i'm working on here at work. Well, at least, in the end it could be worse: like most other people doing .Net development, i could be writing .Net code in VB! Ouch!

      So, in the end, it's all a matter of what you value most: development time versus execution time; verbosity vs. conciseness. Noting that execution time should, for most purposes, be made irrelevant in about 6 months and faster and cheaper hardware.

      --
      I don't feel like it...
    11. Re:I think the world has finally left me behind by aztracker1 · · Score: 2, Insightful

      Componentization(sp) is supposed to be "black-box" you give it an input, and should get an appropriate output (or one of a list of possible exceptions/errors) ...

      I realize that in real life that this isn't always the case, but the fact is, where a huge amount of development is today, this is the case anyhow...

      Web application is built in language X under framework Y, communicating with datasource SQL, webservice SOAP, and file access (framework Y) ... now you have to output to browser HTML, and interact with JavaScript...

      ASP.Net does a bit of a better job (imho) than anything before it.. and you can use VB.Net, C#, or a few other languages within the framework, not all is fully available in mono, but compiled libraries should work fine under mono, because of the CLI. I've worked with a lot of different web development platforms, and prefer asp.net.. JSP, and PHP are okay, but imo asp.net is simply nicer to use.

      Extend this with GTK# and there is more to offer, though, I've been toying with using asp.net (good html/xml handling base) with server-based XUL ... seems like a good marraige.. the fact is, that it does offer a fair amount of choice, which isn't bad.. and good compatability with MS isn't a bad thing either... Give you a foothold into companies deploying on MS, and giving them options to migrate away without nearly as much hardship in the future.

      Mono gives a good point of migration.. and if you've had to even try to migrate a ton of windows based code to work on other systems, it isn't fun.. just migrating from one rdbms to another is a painfull experience.. the toolset that mono offers is a nice thing to have.

      --
      Michael J. Ryan - tracker1.info
  14. Question about GTK# by EvanED · · Score: 4, Interesting

    I've been looking high and low for a cross platform GUI tool, and the only one I particularily like is Qt. Which, of course, you have to pay lots of money for to get the Windows version (or deal with the "freeware" bit stuck in the title bars of windows). I'm gonna look into Wx.NET; just found out about that in this discussion.

    Anyway, I'm reading over the FAQ for GTK#, and it says you need to have cygwin. So, my question is, does only the developer of the software need to have cygwin, and then it builds it using libraries provided with it and outputs a nice standalone application, or does everyone who wants to use it need to install cygwin? I can't seem to figure this out from the site...

    1. Re:Question about GTK# by DAldredge · · Score: 5, Informative

      That is only to build the software, you do not need to have Cygwin installed to run GTK# apps.

    2. Re:Question about GTK# by krumms · · Score: 2, Informative

      Getting Gtk# running on Windows can be a bitch.

      So try this :)

    3. Re:Question about GTK# by miguel · · Score: 2, Informative

      Mono 1.0.1 has a new Windows installer that gets
      you Gtk# working by default, it is no longer a
      separate compilation.

      Thanks to Paco and Gonzalo for making this
      happen.

  15. Re:For Linux? by jcr · · Score: 4, Funny

    I want Mac OS's interface on Linux!

    Request denied.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  16. Re:Mono has come very far in a short period of tim by andreyw · · Score: 2, Insightful

    C# is, but .NET isn't.

  17. Ahem, The CLI is just as much of a standard as C# by ePIsOdEOnline · · Score: 3, Insightful
  18. Re:Cocoa on top of Mono? by jcr · · Score: 2, Informative

    Even better would be finishing up the GNUStep project.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  19. I bid C# welcome by haxor.dk · · Score: 2, Insightful

    C# may be a Microsoft invention, but now that Mono has opened it for the Linux and Mac people, I bid it welcome. As far as I can see, it is a very powerful language, which offers a number of functions and features of ex. Objective C.

    1. Re:I bid C# welcome by dasmegabyte · · Score: 2, Informative

      C# is kind of like Java, but it's also kind of like VB, kind of like C++ and kind of like a dozen other languages. New languages are almost always an assembly of the most popular languages at the time of their development with a slightly different syntax. Personally, I like some of the C# advantages over Java a lot (e.g. modifiers that allow you to expose methods either by namespace/package or by assembly, delegate messaging, true properties, compiler directives and the fact that you aren't forced to declare exceptions). But I am the first to admit they're incremental.

      --
      Hey freaks: now you're ju
  20. Re:you have got to be joking by The+Infamous+Grimace · · Score: 4, Insightful

    Yeah, I used to use a MS Intellipoint Optical Wheelmouse with my 2 macs, still use it on one. However, for my old laptop I've gone back to the ol' one-button. Why? I've decided that the original paradigm is better; the keyboard has far more functionality than any mouse, with the exception of the scroll wheel.

    In Safari, if you want to open a link in another tab, just command-click. In another window? Alt-command-click. Want a menu? Ctrl-click.

    For dealing with files, open 2 finder windows in column view, and stack them on the screen. Want to cut-n-paste? Drag-n-drop. Want to copy? Alt drag-n-drop. Want a shortcut? Alt-command drag-n-drop.

    The more I use a one-button mouse, the more I like it. YMMV.

    (tig)

    --
    Ignorance and prejudice and fear
    Walk hand in hand
  21. Re:Cocoa on top of Mono? by ArbitraryConstant · · Score: 3, Informative

    It would be nice to have a consistent multi-platform Objective C library period.

    Forget about GUI bindings, all the different implementations don't even share the same root object.

    --
    I rarely criticize things I don't care about.
  22. Re:you have got to be joking by azav · · Score: 4, Informative

    The reason behind the 1 button mouse was that it was painfully clear what the 1 button was to be used for. If you wanted "right button style functionality," hold down the option key and click.

    Studies done at the time indicated that people made more mistakes with multi button mice and mice with multi button interfaces took longer for the user to accomplish what they want to do (because of the mistakes and confusion about what the other button was for).

    For me, it is pretty damn obvious that the mouse button is used to provide the "primary operations" for the item clicked on. Holding down the option key when clicking to extend into "options" for the item makes perfect sense to me.

    What really is the big deal with people's obsession on multi button mice? Honestly, I don't get it.

    --
    - Zav - Imagine a Beowulf cluster of insensitive clods...
  23. native GUIs with C# on Windows, Linux, OS X by dekeji · · Score: 4, Interesting

    There is another choice for native GUIs using C# on Windows, Linux, and OS X: wx.NET, bindings of the wxWindows library to Mono and Microsoft's .NET implementation.

    wxWindows is great because it gives you a uniform API across different platforms and toolkits, while at the same time using native widgets and giving you access to platform-specific features if you like.

  24. Re:Miguel, please leave this planet! by OmegaBlac · · Score: 5, Insightful

    What is it with the hatred for this man? I swear some you act like he is the anti-christ for what he is attempting to accomplish with the Mono project.

    1. No one is forcing anyone to use Mono or run .Net apps on other operating systems.

    2. Try to look at the advantages that the OSS and Linux communities can utilize here if we can convince more developers to develop apps for Linux due to the existance of Mono.

    3. Mono and Miguel are not going anywhere so all the folks in the anti-mono crowd might as well get use to it.

  25. Re:Cocoa on top of Mono? by jcr · · Score: 4, Informative

    The number of people still using the original root class, Object, is vanishingly small. GNUStep has a perfectly good implementation of NSObject, which tracks the Apple implementation quite well.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  26. Re:Ahem, The CLI is just as much of a standard as by killjoe · · Score: 2, Insightful

    ECMA standards are bullshit. Companies like to submit things to ECMA because it puts the patina of standard on some technology and they still get to charge licencing fees. It's the whole RAND thing.

    It's all bullshit business as usual "you must pay us to use your intellectual property" crap.

    --
    evil is as evil does
  27. Re:you have got to be joking by Anonymous Coward · · Score: 2, Insightful

    Studies done at the time indicated that people made more mistakes with multi button mice

    I might buy this, for total newbies who haven't learned which button is which.

    and mice with multi button interfaces took longer for the user to accomplish what they want to do

    Maybe true for total newbies. As a general statement, I don't buy it.

    I use all three of my mouse buttons, and the one that's actually a scroll wheel, I also use a lot as a scroll wheel. You can't persuade me that I'll be faster using one hand to bang a particular key on the keyboard while the other hand clicks is faster than just hitting a single mouse button with a finger that is resting on that button. I don't buy it.

  28. Also: Mono Project 1.0.1 Released by DAldredge · · Score: 5, Informative

    http://www.mono-project.com/downloads/

    Mono 1.0.1 has been released and fixes a number of bugs.

  29. Slow? by TheInternet · · Score: 4, Interesting
    "it's S-L-O-W"

    Is this based on anything? It's slower than raw C or assembly of course, but quite fast overall.

    Everything below this sentence is from http://www.alastairs-place.net/cocoa/faq.txt:

    * 2.7 How fast are Objective-C messages?

    The name "message" might make you think that they are slow; however, they are
    actually quite fast. Here are some figures from a 1GHz PowerPC G4 (courtesy
    of Marcel Weiher):
    Operation | Time (ns)

    Increment (memory) variable | 2
    Call through an IMP | 12
    Local function call | 18
    Cross-module function call | 37
    Objective-C message | 54
    atoi("1") | 182
    Local function call refers to a call to a function in the same executable or
    dynamic object module. Cross-module function call is a call from one
    executable or dynamic object module into another.

    On current Apple versions of GCC, an Objective-C message results in a call to
    objc_msgSend(), which is itself a cross-module function call. That means that
    the actual method dispatch only takes 17ns (on average), which is pretty
    quick.
    --
    Scott Stevenson
    Tree House Ideas
    1. Re:Slow? by droleary · · Score: 3, Informative

      Is this based on anything? It's slower than raw C or assembly of course, but quite fast overall.

      More importantly, no language is faster than a programmer who doesn't know algorithms. Looking at the "S-L-O-W" code through the link provided, it's some of the shittiest toy benchmarking I've ever seen. It compares static strings through an inner method call and nested inside two loops! Even a freshman seeing that code would have had the sense to move the compares outside all that. So in 10 seconds, I was able to take code that was claimed 6x slower than Java and make it 2x faster than Java. Of course, it is still a toy benchmark that accomplishes nothing of value.

    2. Re:Slow? by IamTheRealMike · · Score: 2, Informative
      Well, the problem is that you have all these messages which are internal to an app being passed back and forth and each one requires a cross module call which in the Mach-O ABI is very inefficient. In standard compiled code an internal function call is 1 instruction - for crossing DSO boundaries you have to dereference the GOT so it's maybe 2 instructions. It's not much. Crossing into the ObjC runtime on Mach-O is very slow due to the way it wasn't designed for PowerPC, then you have to transition *back* again, and objc_msgSend() isn't exactly a 5 opcode call, so you have all the overhead of this: remember this is taking place for *all* internal method calls.

      Basically it stacks up. But that's not the primary disadvantage of Objective-C. The primary disadvantage is that it's not kept pace with the times and nobody knows it. Why would you go for a C variant with wierd syntax that isn't fully garbage collected, when you can go for something very familiar, that is fully garbage collected?

      Obj-C went nowhere for the same reason that Lisp and SmallTalk didn't : familiarity was more important to people than theoretical elegance. Next to that the badly designed ABI is peanuts.

  30. Re:Guide for newbies by OmegaBlac · · Score: 4, Informative

    You can look through the ECMA document for a Hello World example. Also check out last months Ars Technica Linux.Ars article on Mono as it provides a couple of examples too.

  31. Re:Guide for newbies by OmegaBlac · · Score: 2, Informative

    Quick little "Hello World" in C#:

    using System;

    class Hello
    {
    static void Main() {
    Console.WriteLine("hello world");
    }
    }

  32. Re:For Linux? by diamondsw · · Score: 2, Insightful

    I have no experience on the Amiga, so I can't comment there.

    Ultimately, if you tighten your code that much something will suffer - either maintainability/expandability, or feature-set. Sure, I can code amazing features into a tiny space using assembly, and be obsolesced very quickly (e.g. WriteNow), or I can scale back my features extensively (e.g. Mac System 5).

    Please recall that in the days of the OS cramming into under 1MB of memory, the feature set was very different. On the Mac (using System 6 as a baseline), we had no virtual memory, no aliases, no networking other than Appletalk, no drag and drop, primitive Multifinder, no multiple user support, and by today's standards, really crappy functionality (I have a Mac Plus sitting on my desk).

    Also, in those days you'd have 1MB of memory, of which say 300K would be used by the system. That's 30% or so. Today you have 256MB at least, which the system may use 64MB of or so - similar usage. Of course, today's systems have much more advanced memory management than the ones of yesteryear.

    Not all progress is "bloat". Remember a variant on the 80/20 rule - people by and large only want 20% of the features in an app, but can never agree on what 20% (not like we ever see arguments about that here on Slashdot, no, never).

    --
    I don't know what kind of crack I was on, but I suspect it was decaf.
  33. Re:For Linux? by richardfish · · Score: 2

    Yeah, the Amiga was fast, but rememeber that one lame app would crash the entire system. The Guru was not very helpful in debugging memory pointer corruption either... I prefer the stability of Linux, OS X, and even XP, thanks.

  34. GTK# is NOT ready by ralinx · · Score: 5, Interesting

    i'm developing a C# application which has a System.Windows.Forms (SWF) frontend for the Windows version, and a GTK# frontend for the Linux version. I was hoping to get rid of the SWF frontend and deploy my application on Windows and Linux using the GTK# frontend. Despite all of the hype surrounding Mono/GTK# (thanks miguel) i have not been able to get this working because GTK# simply doesn't work correctly with MS.NET. There are parts of GTK# that actually rely on an incompatibilty between Mono and MS.NET to work correctly. So when this code is executed with MS.NET, you'll get runtime exceptions. The same code will function correctly on Windows when you use Mono on Windows, but then i get memory leaks everytime i use Regex.Match which my application needs quite often. So after leaking about 395MB of RAM, the garbage collector will crash with an error ("too many heap sections"). The same code runs perfectly on Linux in Mono.

    I would really like to see Mono and GTK# completely ready to be used on Windows for _serious_ stuff (as in: not the average Hello World GTK# app) but rigth now, it just isn't up to the task yet. On Linux, it's pretty good alraedy, but on Windows it's just unusable for my application. I've had to go back to using my old SWF frontend for my windows users.

    1. Re:GTK# is NOT ready by ralinx · · Score: 3, Interesting

      as a matter of fact i did.

      i filed a bug for the gtk# errors: http://bugzilla.ximian.com/show_bug.cgi?id=61348
      Mike Kestner responded to this, his comments don't mention if it's actually been fixed yet though

      and as for the memory leak with regular expressions on windows: http://bugzilla.ximian.com/show_bug.cgi?id=62293
      nobody has even bothered to respond though.

      Filing bug reports on Slashdot (without the
      information needed, mind you) wont get them
      fixed.

      Filing them on Bugzilla will.

      i used to think the same... i had to get ignored on Bugzilla to even want to post on Slashdot.

      Just don't claim Mono is ready for something when it clearly isn't.

    2. Re:GTK# is NOT ready by Nurgled · · Score: 2, Informative

      It sounds to me like your current approach is how it should be done. Make sure none of your other code depends on the UI and then just write several UI layers. That way it'll look native wherever you run it.

      In my opinion, GTk# on Windows should just be used to run software that was never intended to run on Windows, as a compatibility layer in similar ven to Cygwin. If you are actually indending your application to be cross-platform, having several switchable GUI layers is the way to go. Later on, if it seems worthwhile, you can put a Cocoa# GUI layer on it too and you have a Mac version with no change to the guts of your application. You could even make a terminal-based user interface to parts of your core application as appropriate without changing the "interesting" parts at all. If your app is open source, other people might even contribute alternative interfaces for you!

    3. Re:GTK# is NOT ready by ralinx · · Score: 2, Interesting

      you're right about all those things... but it gets tedious to implement the same logic (eventhough it's just presentation logic) more than once. I don't like UI code, to me it's the most boring part of application development. It would be very nice if i'd only have to write that code once and have it work on both Windows and Linux. Now i have to do this boring work twice, once in SWF, and once in GTK#

      i can definitely understand that Mono/GTK# isn't ready for that yet... i know they could definitely use more developers, and that's not always easy for an open source project. But what bothers me is that the Mono developers are always claiming that Mono/GTK# is the answer to the cross platform problem and that it's ready for it when pretty basic GTK# code doesn't even run on on Windows without crashing.

      Instead of doing so many interviews and posting on Slashdot, perhaps they should actually try to fix those things and make their software do what they claim it does.

    4. Re:GTK# is NOT ready by Nurgled · · Score: 2, Interesting

      The solution to the cross-platform problem won't be a bunch of class wrappers around native widgets. Instead, that problem will be solved with higher-level conceptual classes which don't have a one-to-one relationship with the underlying widgets. It would be another layer between the business logic and the UI code which takes the high-level interface ideas and makes the right calls to make it happen in a sensible way for each system.

      Of course, making a completely general concept-based class library isn't easy. However, I'm sure someone could achieve a compromise which manages to encapsulate many of the common ideas present in today's GUIs. For example, rather than having a Window class which can contain Controls, you could (for suitable classes of application) have a DocumentCollection class which can contain Documents. On Windows this could be rendered as an MDI interface with a child for each document (I know MDI is deprecated, but this is just an example) while on MacOS this would presumably just be a bunch of top-level windows which "stick together" in the window order. This is a pretty poor example, but I'm sure you can think of some of your own -- the higher-level they are the better.

      For the purposes of your application, though, you could make your own abstractions which are totally specific to whatever you're writing. The only bit that has to differ between platforms is a a small set of API calls in response to methods from the higher-level API above. Most of the "presentation logic" which actually makes the interface do something would be in the high-level interface layer shared between them all.

      I do admit, though, that designing a high-level GUI abstraction layer for many programs would be tedious and unrewarding. For larger projects, though, it'd be a useful approach. I have a small attachment to the methods I've outlined here because my degree dissertation project was in part based around these ideas, although not applied exactly as I'm describing here. I won't claim it's the best approach for everything, though; toolkits like SWT for Java or wxWidgets which abstract at the widget/component level can be very useful in many cases.

  35. Re:wxWidgets, another _perfect_ alternative with M by p3l · · Score: 2, Funny
    What the fuck is _your_ problem? You're trying to change my mind?
    Now there's a frightful concept.
  36. Re:you have got to be joking by slittle · · Score: 2, Insightful

    Multibutton rodents are as close as we're likely to get to a practical "cyber glove" anytime soon.

    You need to think in 3D. Instead of text, icons and a mouse, think of objects and the mouse as an extension of your hand. You have multiple fingers and a wrist - the buttons and wheel(s) are the multiple ways to can hold and fiddle with objects.

    Seriously.. single button mice and classic MacOS are why everyone hates Mac users. They suck - everyone knows this, and Maclots violently insist(ed) they don't. Mac people finally admitted as much even back in the OSX beta days, vowing to never go back. Soon as Apple comes out with a multibutton 'elegant' mouse, you watch them all disown their previous '1 button forevah!!!!' ways.

    --
    Opportunity knocks. Karma hunts you down.
  37. Question... by johannesg · · Score: 2, Funny

    You appear to be reading slashdot, and yet be a productive individual. How?

  38. Re:Patents?-A paradigm divided. by Ollierose · · Score: 2, Insightful

    I think their intention is to use GTK# as an alternative which works on Linux and Windows as well. I'd guess that this means Photoshop.net for Linux is a possibliity using that toolkit instead

  39. Re:you have got to be joking by Trurl's+Machine · · Score: 2, Interesting

    Er.. So how do you open the pic of that cute girl to a new tab while browsing one-handed?

    Personally, I don't think that tabs fit well to the one-button paradigm... and I don't use them. Expose makes them just redundant. "Pr0n aside", there are websites with javascript purposedly blocking out the right mouse button, to make it more difficult to save the image of the cute girl to your local collection of, ummmm, images. On a Mac it's simple - just drag'n'drop the image onto the icon of your "~/Pictures/pr0n" folder, and their silly javascript can just kiss the round backside of your iMac.

  40. Re:you have got to be joking by dan+the+person · · Score: 2, Informative

    The studies done for the orignal macintosh that came to those conclusions was for first time computer users.

    Which is quite understandable. But most people these days aren't first time computer users, hence the popularity of multi button mice

  41. Re:answer by bnenning · · Score: 4, Informative

    C# and Java provide "reflection" APIs for implementing things like this. It would be quite easy to create a class entirely analagous to NSUndoManager in either language

    No it wouldn't. Check the documentation; NSUndoManager intercepts *any* message sent to it, and stores it for later invocation on a different target. You can't do that with reflection, which only allows you to call one of a fixed number of methods.

    Another example: there are third party libraries that add higher order messaging to Cocoa collection classes. They allow you to write code like "[[array select] isFroody]", which will return all objects in array for which the method -isFroody returns true. Again, the initial "isFroody" message is intercepted, then forwarded to each object in the array.

    --
    How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
  42. Re:Miguel, please leave this planet! by omicronish · · Score: 2, Interesting

    I wonder about the hatred too. I code heavily on Microsoft platforms, and looking at the documentation for the new Longhorn APIs, I am quite sure Mono will become even more important when Longhorn rolls out. Why? Just look at the docs; all the new APIs are managed .NET APIs.

    I commend Miguel for his awesome work, and the rest of the people behind Mono. When Microsoft is working on a new version of Windows, which is undeniably the most used desktop OS in the world, and heavily uses .NET, you simply don't ignore the thing.

  43. Miguel, please keep up the good work! by beanlover · · Score: 2, Interesting

    I work for a company that writes it's product in a language called Databus...it used to be hardware specific but now it is a complied yet interpreted language that runs on a LOT of platforms...that is it's strength and pretty much the reason why we don't use "more modern" languages.

    I have been watching the Mono project ever since I have heard of it and I am truly amazed at all they have accomplished. I know they have a long way to go...but YOU GUYS RAWK!

    I can only hope that one day Mono will allow for our apps to be as portable as they are now so we can switch to another language that has more robust OO abilities not to mention other things I hate about db/c.

    So, please, keep up the good work on Mono...many folks out here are rooting for you.

    B