Slashdot Mirror


Portable.NET Now 100% Free Software

rhysweatherley writes "Finally after months of hard work and bucket loads of caffeine, the DotGNU community has finally got Portable.NET to the point of building our C# libraries on many Free Software platforms with our own C# compiler. This is a big deal! Portable.NET is now 100% pure Free Software, with no dependencies on third party C# tools. The compiler, which is written in C, bootstraps off gcc, so there are no icky 'how to compile the compiler' problems. And it's fast! The DotGNU team consists of lots of contributors, many of whom are coincidentially named 'Rhys Weatherley,' but this wouldn't have been possible without the support of the DotGNU community, especially the Weekend Warriors. .NET is not the only thing we are doing. We're playing around with JVM and Parrot (of perl6 fame) backends to the compiler. And we have a C compiler front-end that generates pure bytecode apps that can run on any decent CIL implementation (Portable.NET, Mono, etc). We are about 95% of the way towards our first milestone of an ECMA-compatible C# implementation. There are lots of things still to be done in the low-level C# libraries, runtime engine, and the compiler. So, if you have some time on your hands, and like messing with languages and stuff, like yours truly ... have look and maybe have some fun!"

26 of 422 comments (clear)

  1. Re:Cool by JonWan · · Score: 3, Insightful

    How long before Microsoft changes or adds something for "security" reasons and prevents you fron using open-source .NET? Maybe we need to start a betting pool.

  2. Re:Cool by 0x0d0a · · Score: 4, Insightful

    I doubt that will happen. They'll add something and make the open-source engine work mostly, but as a less-reliable system with fewer features.

    And they aren't going to get MS sorts using it (even ignoring the pre-installed issue that beat even Netscape's best efforts), because MS put lots of money, time, and talent into their own VM, and the GNU one just ain't gonna be significantly better any time soon.

    The .NET move was a pretty good move for MS.

  3. Never thought this day would come by ekrout · · Score: 3, Insightful

    The C programming language does everything I need it to do.

    Writing a new operating system? I choose C.

    Coding up your own desktop environment? I choose C.

    Desire to write the next award-winning PC game? I choose C.

    I'm not sure why so many man months were spent trying to hook into .NET. Couldn't we have spent more time refining the applications, utilities, and system code that we already have rather than wasting time extending the Microsoft monopoly?

    Sorry, but you people really confuse me sometimes. I write a few sentences of praise for Microsoft's latest operating systems just a few hours ago and I get marked as a troll. Now I see an article praising those who work hard to let Microsoft's .NET succeed.

    People: Make up your mind, or find a new hobby. people.

    --

    If you celebrate Xmas, befriend me (538
    1. Re:Never thought this day would come by J.+J.+Ramsey · · Score: 5, Insightful

      "I'm not sure why so many man months were spent trying to hook into .NET. Couldn't we have spent more time refining the applications, utilities, and system code that we already have rather than wasting time extending the Microsoft monopoly?"

      Alternative C# compilers have the potential to undermine rather than extend the MS monopoly, simply because they are an alternative source for a C# platform.

      The real trick would be getting C# programmers in the habit of targeting just the ECMA standard rather than the standard + MS lock-in extensions.

    2. Re:Never thought this day would come by redfiche · · Score: 2, Insightful

      Yeah, you can do it all with C, but if you're building enterprise applications you can build them much faster with C#. I'm no M$ fan, but you can be very productive with this language. Being able to easily port the stuff to linux would be a major bonus.

      --

      Brevity is the soul of wit

      -- Polonius

    3. Re:Never thought this day would come by psxndc · · Score: 4, Insightful
      Actually most games are written in C++.

      One thing you didn't mention though is Web Applications which, though you may argue are no big deal, I would argue at least a 10-15% of the development going on centers around. A super set of that is B2B applications which probably account for 25-33% of the development going on. C # and Java are way better suited for web development and B2B development and have established frameworks to springboard from.

      I understand about your frustrations with the fickleness of the /. crowd, but the excitement here is the choice to _not_ extend the monopoly. By creating a C# compiler, libraries, etc Portable.NET and Mono are allowing developers to not use Microsoft tools or Microsoft OS's to generate useful code. Yes MS created C#, but you don't have to use anything MS owned or controlled to use it. If it doesn't exist already, I wouldn't be surprised if there is an apache mod_aspx/C# in the works. People assume that because MS created it, it has to be bad and unusable by the OSS crowd. It's really not the case...

      now to quote a reply I've seen to a comment like yours before:

      Why do I need C, I can use assembly.
      Why do I need assembly, I can just type in 1's and 0's.
      etc :-)

      psxndc

      --

      The emacs religion: to be saved, control excess.

    4. Re:Never thought this day would come by daveball · · Score: 2, Insightful

      I think the point being made is that by supporting C# and the .net development environment, you give credability to those "products".

      I won't try to argue whether they would suceed or not without this extra help, but might it not be better to convince people to use java over c#?

      C# succeding means MS still has oportunities to extend beyond the published specs. Sun has already shown that they won't tolerate that with Java.

      Surely the future accesibility of the dev environment is safer under suns controll than evul M$????

    5. Re:Never thought this day would come by Temporal · · Score: 4, Insightful

      I have a very hard time coding in C. It's not that I don't know the language. I can write anything in C, and write it well. But it takes so much work! Writing C code which is clean, modular, reusable, robust, and maintainable is a pain, if not a flat out contradiction in terms. If forced to use C, I would basically end up emulating all of the features of C++ using macros and redundant code.

      As a matter of fact, one of my favorite programming techniques is impossible in C. I like to use reference counted smart pointers to handle memory management automatically. However, in C, there is no way to automate that -- you would have to manually call some sort of functions which increment and decrement the reference count, which defeats most of the purpose.

      If I were writing an operating system, I would probably choose C. But a desktop environment? A game? I've worked on my own game engine (see my homepage), and the thought of trying to do it all in C makes me cringe. You might not agree, but I think you just don't know what you are missing.

      I am actually now designing my own programming language. In my language, I have been able to write an IRC-like client/server chat program in 161 lines of code, and it would perform better than any but the most thoughfully designed C programs. Sure, you could write it in C, but why? Why spend days writing and debugging something that would take hours in another language?

      Woohoo, I'm all psyched up to work on my compiler now. Time for a coding binge! Thanks! :)

  4. As a new c# programmer... by bnavarro · · Score: 5, Insightful
    ...(and old-time programmer):

    This is an interesing development. However: I wonder how useful this language is on non-windows platforms. Let me explain.

    You see, I have just started a new job that is heavily leveraging the .NET framework to bring an enterprise-level solution to fruition as quickly as possible. I evaluated c#, and decided that the greatest advantage c# brings to the table is rapid development through dynamic ActiveX/COM objects. That is: even though this is a compiled language, you code in it as though it was an interpreted language with ActiveX hooks. You would load any ActiveX object with a statement like
    X = new Object(params);
    and then you can immediately reference it with statements like
    Z = X.func(param);

    If you haven't written JScript, VBScript, or WSHScript, you have no idea just how amazingly powerful this is. A database connection & query takes around 4 lines of code. I was able to master in-code LDAP (Lightweight Directory Access Protocol, aka Active Directory on Windoze boxes) queries in less than one day, having never touched an LDAP server in my life prior to that.

    Sadly, *NIX has never really implimented anything like COM. Each programming language still has to be manually extended in some form or another to recognise new APIs -- headers for compiled languages (and remembering to link to the libraries), or worse, "extension agent" coding for dynamic languages like Perl and Python (assuming the API code is a binary shared library). And APIs are almost never identical accross multiple languages.

    So, really: what is the need for C# on *NIX? None of my c# code that I am writing will port, because it is heavily dependent on the COM/ActiveX objects to get the real work done. Unless the .GNU project aims to bring ActiveX functionality over to *NIX, and port all of the cool ActiveX objects like ADO (Database), DOM (XML), System.DirectoryServices (LDAP), FSO (Files), etc.

    Is thes even feasible to do?

  5. Re:Cool by Anonymous Coward · · Score: 1, Insightful

    See the thing is you can,

    A) Develop for the propriety C# dependent on a company which might decide tommorow that the language is a dead end and drop it leaving developers in limbo.

    B) Develop for the subset of C# implemented by an open source system and have a far longer lifetime guarentee for your system.

    Sure for your average webmonkey it won't make much difference, but the people who are spending the big money in developing systems that will still be around in 2020 they'll go for option B.

  6. Re:objective analysis by Ed+Avis · · Score: 5, Insightful

    Sure, C# is a good language compared to C and all that. But then that's true of a whole bunch of languages out there. You could easily enthuse just as much about OCaml or Scheme or Ruby or Smalltalk. It doesn't seem that C# is the best language out there, just that it is 'better than C most of the time' (which isn't difficult, now that CPUs are so fast) and 'what other people seem to be using', in other words herd mentality. Which is fine - and the reason why I use Perl - but it's a mistake to think that technical merit and expressivity are something magically invented with C#, any more than the graphical user interface suddenly came along when Windows was released. Although some journalists do seem to have that idea.

    --
    -- Ed Avis ed@membled.com
  7. Re:.NET for Linux by cant_get_a_good_nick · · Score: 3, Insightful

    C# is not a Microsoft idea. It was actually created by a University (I searched hard for the link, I couldn't find it). The CLR idea and stuff was from them. MS did polish it up some, surely, but the core innovation came outside.

    MS is kind of like the anti-PARC. Where Xerox PARC came up with revolutionary things but could never put them to market, MS stares so much at the market it can't come up with any revolutionary things. Thing is, they have anough money to buy the revolutionary things, and do what they do best, polish them and market and sell them.

  8. Re:Another Look by rastopop · · Score: 2, Insightful

    Microsoft isn't going to do anything - This is just peachy for them. When you have the universe breathing down your neck because you're financially abusing everybody else in the universe, having somebody else implement your system on another platform is really a *good* thing. Makes MS look pretty good where anti-trust is concerned.

    I'm guessing that the angry one here is probably Scott McNealy.

    Sorry, Scott.

  9. Re:.NET for Linux by drinkypoo · · Score: 3, Insightful
    Microsoft has has plenty of good ideas, or at least been the first to implement plenty of good ideas. The one-button way to do everything (the start-button) makes good sense, now everyone is copying this interface. Microsoft even moved still more things into it. Of course the taskbar (who made that up, anyway? arguably you could say it was xsm, assuming xsm predated the first version of CDE (or openview) which featured a toolbar. I can't think of a window manager older than that that does things any way but by pop-up menus. Longhorn will feature a taskbar (as we have seen in recent screenshots) so a lot of the Mac types who don't know any better will think that Windows is copying mac; Let them know better.

    Anyway we don't like MS any time but when your "enemy" (I don't know that too many of us could call M$ our nemesis beyond RMS and other GNU/Zealots) has a good idea, you don't just disregard it. You use it for your own ends. This is what "we" (the free/open software movement members; users are members by extension as well) are working towards by implementing such things as Mono. There's no reason we can't implement heavily cross-platform OO software using C# and .NET on Unix. It doesn't even have to run on Windows!

    --
    "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  10. why .net for linux? by eonblueye · · Score: 2, Insightful

    I use to strongly think/believe that Linux was THE alternative for Microsoft Windows. But all we have become is another emulation of it? I guess it's safe to say we are the no-fault stunt double and they never get fame or truly nobody knows they are. Shouldn't it be time for gnu, linux, et at; to produce and come up with their own standards? I just don't want to be a follower, I want the leadership position.

    --
    +++ David Watts 5495 0.0 0.5 1888 884
  11. Re:.NET for Linux by Zeinfeld · · Score: 5, Insightful
    Microsoft hasn't been all that good at innovating. [vcnet.com]

    And Linux would be what? a trully innovative implementation of a 30 year old operating system using the same coding techniques.

    The whole industry is the same. Lotus didn't invent the spreadsheet, Oracle didn't invent SQL, Apple didn't invent the windows and mouse GUI, Linus didn't invent UNIX. Most of the ideas in UNIX are taken from Multics.

    --
    Looking for an Information Security student project suggestion?
    Try http://dotcrimeManifesto.com/
  12. Maslow, hammers and nails. by rjh · · Score: 3, Insightful

    "When all you have is a hammer, everything looks like a nail." -- Abraham Maslow

    If you think C is the talismanic ne plus ultra of programming, I really think you need to get out more. Learn C++ and the STL; see what processor-intensive stuff you can do trivially with it. Learn LISP and grok the lambda calculus and the beauty of functional programming. Learn Python and Perl and see the coolness of executable pseudocode.

    If the only language you let yourself use is C, then you're limiting yourself in ways which aren't good for either your mind or your career. C is a good tool and one that ought to be in every hacker's toolbox--but just like you can't be an effective carpenter if all you have is a hammer, you aren't going to be an effective hacker if you keep on swinging C at problems which call for LISP, Smalltalk or SPARK solutions.

  13. Re:Cool by The+Original+Yama · · Score: 3, Insightful

    Then the community has an excuse to fork the standard. The FOSS community has an impressive degree of leverage -- just look at how Bruce Perens' threats to fork Web standards made the W3C reject RAND licensing.

    Besides, the .NET framework is a very useful tool in itself, without MS compatibility. It suits the FSF's need for a flexible, secure, fast, language- (as long as the app is somewhat C-like, anyway) and platform-independent infrastructure for the development of network aware applications and services.

  14. Re:Cool by Synn · · Score: 3, Insightful

    The MS reps I've heard have stated multiple times .NET is a Windows-only system, only that it would "play nice" with other standards.

    They're quite frank about keeping .NET on windows and windows only.

    In fact that's what Sun is selling in every debate about .NET vs Java: Java gives you multiple vendors while .NET traps you into one.

    MS may let .NET run on other platforms, but you can bet the bank they'll do everything in their power to keep it a "windows preferred" platform.

  15. Bill and his buffoons must be laughing hard.... by zruty · · Score: 5, Insightful

    This place is really getting full of M$ trolls.

    Dont you all see the pattern here? Oh geez, let's all begin developping using this so neat C$ language and let's contribute to this so great .NET$ "innovation". Bill and his buffoons must be smoking a big fat one with a smile now.... And we are even lighting it for them...

    The trap is set, and we are happily jumping on the trigger using both feet. Of course, Bill will help us out by releasing his .NET vital infrastructure source code real soon now, since we are so nice in contributing to the hype and fud ourselves. And of course, there is no way in hell Bill will pollute his own spec just for our own good and for the sake of his own pocket... Noooooo, of course not!

    During this time, Java continues to die slowly, getting fewer and fewer developpers. Don't you realize that we are contributing in digging our own grave?

    Java might be not so great, but it is still the only true alternative to this M$ obscenity.

    Please people, read the J2EE spec, the Java language spec., and go play with JBoss for a while... Then, come back, and take another look at this .NET$ aberration and you will be the one laughing, not Bill and his monkeys.

    Wake up people!

    Zruty

    --
    Zruty -- Ruler of Zrutland
    1. Re:Bill and his buffoons must be laughing hard.... by elflord · · Score: 2, Insightful
      Dont you all see the pattern here? Oh geez, let's all begin developping using this so neat C$ language and let's contribute to this so great .NET$ "innovation". Bill and his buffoons must be smoking a big fat one with a smile now.... And we are even lighting it for them...
      ... And of course, there is no way in hell Bill will pollute his own spec just for our own good and for the sake of his own pocket

      You're completely missing the point. What Bill chooses to do or not to do with Microsofts implementation of the C# language has little relevance to its usefulness as a development tool for writing Linux/UNIX applications. Unlike Java, C# has been turned over to standardisation committees. Basically, it's got a life of its own outside of Microsoft HQ now. Bill can't unilaterally "pollute" something that is controlled by a standards body. Of course, Microsoft can make a non-compliant version of their own language. But then again, so what ? Microsoft have been making non-compliant implementations of other languages for years. C, C++, Java ... you name it, they've butchered it. But it didn't prevent those technologies from being useful.

  16. Re:objective analysis by firewrought · · Score: 3, Insightful
    c# is a damn good language

    It's a strongly-type, object-oriented, Java/C++ descendent. It breaks no new ground, but it does have some nice incremental improvements over Java:

    • xml-based documentation format (similar to javadoc, but more intuitive).
    • richer collection of primitive data types
    • conditional compilation macros
    • properties (intead of get/set methods)
    • automatic boxing/unboxing of primitive types [e.g., an int can be cast to an object]
    • foreach() construct
    • proper enumerations
    • delegates (reduces verbosity when making one-method interfaces)
    • attributes mechanism for annotating assemblies/classes/members with meta-data (instead of using javadoc tags as a kludge)
    Some off the above features have their dubious aspects. The really bad features (IMO) are:
    • fewer constraints on how things in your code (namespaces, classes) must be arranged with things in your filesystem (directories, files)
    • wierd behavior of virtual/override/new virtual (I would provide you an example, but the lameness filter wouldn't let me post C# code).
    The bad points of C# are:
    • less disciplined than Java
    • no dynamic inner classes (but Java didn't have them at first either, IIRC)
    • no anonymous inner classes (maybe wrong on this one)
    • less open source code, existing support, and tools than Java
    But all in all, some of these things will improve with time. It should also be noted that the predominant IDE for C# (VisualStudio.NET), the documentation, and the core API's all suck. Especially the documentation... I opened up some Javadoc web pages after working with .NET for a month and almost cried at how easy it is to navigate and read compared to VisualStudio's crappy help browser (yes, even when run externally).

    Ultimately, C# may be the better language, but not by much. I can't help but look at Smalltalk and Scheme and think that these C-derivative language designers just don't get it. What I really want to see is a new generation of meta-languages that allow complex relationships and design patterns to be expressed at a high level in a compact fashion.

    --
    -1, Too Many Layers Of Abstraction
  17. The Microsoft Upgrade Treadmill by mrsam · · Score: 5, Insightful
    First of all, cOM is on it's way out. It is being replaced by the new remoting and web services architecture.

    I've yet to see anyone address this point, which must be made. I'm not sure what that "remoting and web service architecture" is. I don't know. But I damn know one thing: in three or four years Microsoft will obsolete that technology, and it will be replaced with something else.

    Microsoft receives significant revenue from training armies of MCSE, using endless arrays of certifications and development programs. And, as such, they have a vested interest in keeping the revenue alive with what I call a "steady technology churn." They can't just pick an API, and go with it for the long term future. They need to force all the MCSEs back into the training camps, in order to make sure that their paper certifications do not expire.


    I dabbled with some Windows programming, many years ago. You wanna know one thing? Nothing that I've learned back then is worth today any more than a hair on my ass. VBX controls, DAOs, all of that has long been made obsolete. I've done _nix programming for quite sometime before trying the Windows waters, but I quickly figured out what was going on: that the primary occupation of a Windows developer is to provide revenue to Microsoft, in terms of continuing MSDN subscriptions, fees for an endless stream of documentation for Application Interface Of The Year.

    "Developers, developers, developers", indeed...

    So I quickly ended that short term experiment, and went back to hacking _nix. The thing about _nix -- which is 180 degrees opposite of Windows programming -- is that the skills and the knowledge that you've learned ten or fifteen years ago is still used, and is as valid today as it was back then. If you go and learn today's crop of Windows APIs, in just a couple of years all the time you've spent today would be a complete and a total waste of time, because nothing that you've learned now is relevant any more, it's been obsoleted.

    On the other hand, things like file descriptors, pipes, sockets, and other basic POSIX APIs will still be just as useful ten years from now as they are today, and as they were ten years ago. That is not to say that you won't learn anything new in the mean time. On the contrary, I have learned many great _nix technologies over the years, and I'm sure that I'll keep learning more exciting stuff in the years to come.

    The key difference is that everything that I will learn will only complement, enrich, and add to my existing, growing base of knowledge. Unlike with Windows, where its only purpose would be to replace stuff that's been obsoleted by Microsoft. As a Windows programmer, I'm in for a lifetime's worth of a struggle to keep churning through one API after another, one Microsoft language, or library, or interface API after another, all while being milked by Microsoft for the training and development fees in the mean time. As a _nix programmer, I'm in for a lifetime of enrichment and expansion of my technical skills and knowledge.

    1. Re:The Microsoft Upgrade Treadmill by The+Bungi · · Score: 1, Insightful
      You have got to be kidding me. "DAO and VBX"?? Is that what you consider to be the full spectrum of Windows-based development?

      What in Unix are you comparing your experience in Windows to? Bash scripts? Perl/CGI? Or kernel hacking?

      In any case, if you are confusing the *technologies* you use while developing software with your analysis and design skills (which are the same regardless of the language, technology or OS you happen to use), I'd say you have other, more pressing problems than being disillusioned with any given platform.

  18. Re:.NET for Linux by Malcontent · · Score: 3, Insightful

    Linux does not pretend to be something it's not. MS does.

    --

    War is necrophilia.

  19. I don't get it. by Otis_INF · · Score: 3, Insightful

    Ok, that some people don't understand the big importance of a good, solid, 100% compatible .NET framework on Linux, fine.

    But... why 2 frameworks? (Mono and DotGNU). Why is it so damn hard to just focus on the importance of a solid .NET framework on linux so ALL the developers who understand the importance of .NET on Linux join forces and work on 1 platform only (I prefer Mono for this, since it's intentions are better: 100% compatability with MS' .NET api).

    Now, Mono can use more developers but these developers are working on their own port of .NET: DotGNU!

    I know this has something to do with politics, something to do with licensing. It DOESN'T have anything to do with different technical views on the matter.

    I simply can't understand why people are so far fetched focussed on politics instead of the art of software development. Now Linux will probably end up with Mono being finished way too late (if it's not finished in 2003, MS will release generics in .NET first so Mono will be behind that release for another year) and another platform, DotGNU with functionality that only complies on the ECMA standard, and thus is pretty useless in everyday applications, since System.Data, System.Web.* and System.Windows.* are pretty useful. (understatement).

    As a .NET developer on Windows I'd like to see a solid .NET platform on f.e. Linux which is compatible with .NET from MS so my customers won't have to use Win2k or Win.net server to run my ASP.NET applications, but have more of a choice. When there is no .NET platform on Linux, Linux is not interesting for me or for my customers, and believe me (looking at what power is inside ASP.NET f.e.) in the future also not interesting anymore for a LOT of developers.

    --
    Never underestimate the relief of true separation of Religion and State.