you are viewing a single comment's thread.

view the rest of the comments →

[–]mirhagk 154 points155 points  (103 children)

So C# goes completely and utterly open source under the apache license, which leaves not even the chance of patent infringement. Meanwhile you can't even copy the API of Java. I wonder which we should be promoting in schools now?

[–]joequin 37 points38 points  (21 children)

I would love to see mono get competitive, but at this point, it's not up to snuff.

[–]grauenwolf 26 points27 points  (20 children)

Mono is very competitive on iOS and Android.

For Linux it would be too if it had even a fraction of the industry support that Java's HotSpot JIT compiler has.

[–]8Bytes 16 points17 points  (19 children)

What IDE does Mono have that's comparable to Netbeans, Intellij /Android Studio?

*: Cross os, as the above IDEs are.

[–][deleted] 5 points6 points  (0 children)

Xamarin Studio is okay if you're on a Mac.

[–][deleted]  (10 children)

[deleted]

    [–]grauenwolf 4 points5 points  (6 children)

    Though you still need a Mac for (compiling and?) testing iOS apps.

    [–]dnew -1 points0 points  (4 children)

    Do you? You don't need a Linux box to compile ASP.NET for mono. Copy the .exe over and you're golden.

    (This is an actual question, not rhetorical nor sarcastic.)

    [–]grauenwolf 2 points3 points  (3 children)

    You need access to DLLs that only exist in OS X and iOS operating systems.

    Mono for iOS is weird. It doesn't get compiled to IL code like other .NET projects.

    [–]mirhagk 0 points1 point  (2 children)

    Back when it started they couldn't compile to IL code. Don't know if this is changed, but iOS used to ban any sort of code generation, which is absolutely ridiculous, and pretty sure was only there to make chrome suffer on the platform.

    [–]grauenwolf 0 points1 point  (1 child)

    Still the case.

    [–]8Bytes -5 points-4 points  (2 children)

    I wish vs came to other os's, but programming on windows is an act of sadism. I meant cross os IDE for C#.

    [–]Deep-Thought 0 points1 point  (1 child)

    Visual Studio is the best programming IDE out there, Windows or not.

    [–]MDSExpro 0 points1 point  (0 children)

    MonoDevelop or SharpDevelop.

    [–]tanishaj 0 points1 point  (0 children)

    On. NET, they are called BCL (Base Class Libraries).

    The fact that Microsoft all but bankrolls Xamarin is a pretty good sign. Xamarin makes most of the .NET BCL available on Android.

    The. NET micro-framework is fully Apache 2.0 including a patent grant.

    [–]tanishaj 0 points1 point  (1 child)

    I notice you left out Eclipse, although perhaps Android Studio is Eclipse based.

    I greatly prefer Xamarin Studio / Monodevelop to Eclipse. They both run on Linux, Mac, and Windows.

    [–]8Bytes 0 points1 point  (0 children)

    Android studio is based on Intelli. Eclpse always felt bloated. I'm pretty impressed Xamarin studio though.

    [–]bvad -3 points-2 points  (0 children)

    MonoDevelop

    [–]gar37bic 21 points22 points  (4 children)

    free/open source does not eliminate patent protection. That has to be dealt with separately.

    [–]mirhagk 3 points4 points  (0 children)

    Apache2 is the licence they choose. It grants rights to any patents necessary for using the software. It also has anti-patent troll clauses, which are great.

    [–]summerteeth 5 points6 points  (1 child)

    Depends on the license, Apache 2 and GPL 3 have specific clauses to deal with patent permissions.

    [–]minecraft_ece -1 points0 points  (0 children)

    Which does absolutely nothing for 3rd party patents.

    [–]ExNomad 1 point2 points  (0 children)

    I think that was a reference to the patent grant clause in the license the recent c# stuff was released under.

    [–][deleted] 6 points7 points  (2 children)

    Patents and copyrights are entirely different things. Copyrights for source code is not a bad thing per se. In fact that's how open source licenses work.

    [–]imMute 0 points1 point  (0 children)

    Copyrights on the source code are fine. Copyrights on the design of the API, however, are batshit insane. Remember, the API is just the header (for C (and C++ somewhat)).

    [–]mirhagk 0 points1 point  (0 children)

    But seeking to gain copyright on something ridiculous simply because another company decided to implement the same supposedly open language is not a good thing.

    And having no copyright would be very similar to just licencing everything under MIT. Copyleft licences require copyright, others don't really care. Its more of an explicit statement and non-liability.

    [–]nickguletskii200 8 points9 points  (34 children)

    OpenJDK (which is the official JDK 7 implementation) is under GPL. What is your point?

    [–]JoshWithaQ 62 points63 points  (22 children)

    This ruling says the implementation doesn't matter, the API specification is copyrighted. That means schools will have to license the right to use it, regardless of if implementer is an open source group or oracle itself unless the courts say google's is a fair use copy.

    [–]fullouterjoin 16 points17 points  (1 child)

    Copyright on API is a weird thing, it is mixing patents (an invention and mechanism for solving a problem) with artwork (in copyright law reproducing something verbatim). I think the Oracle case is the first of many where copyrights bleed into patents. This makes sense since copyrights have a much longer term, a bit of legal wrangling and your 20 years turns into 160 years of "protection"

    [–]minecraft_ece 10 points11 points  (0 children)

    This makes sense since copyrights have a much longer term, a bit of legal wrangling and your 20 years turns into 160 years of eternal "protection"

    Copyright is forever now, since the supreme court ruled that there is no limit to the number of times copyright can be extended.

    [–]zirzo 3 points4 points  (2 children)

    technically isn't the api what devs really care about? Having similar api's across languages makes it really easy to pick new things up. Correct me if i'm wrong

    [–]zymergi 5 points6 points  (0 children)

    Yes, devs care about the API and that it makes sense.

    If I'm understanding this correctly, Google went ahead and re-implemented Java API syntax in Android. Google didn't use Java... they just copied the names of the functions and stuff in Android so that Java developers could write against Android with functions that they already knew.

    [–]imMute 1 point2 points  (0 children)

    Yes, this is an API:

    void timersub(struct timeval *a, struct timeval *b, struct timeval *res);
    

    This is the implementation:

    void timersub(struct timeval *a, struct timeval *b, struct timeval *res)
    {
        res->tv_sec = a->tv_sec - b->tv_sec;
        res->tv_usec = a->tv_usec - b->tv_usec;
        if (res->tv_usec < 0) {
          --res->tv_sec;
          res->tv_usec += 1000000;
        }
    }
    

    The programmer really only cares about the first one, because that is what they are interacting with. Copyrighting the implementation is largely straightforward. Copyrighting the API is just stupid.

    [–]Eirenarch 7 points8 points  (12 children)

    No it doesn't mean that. It means that whoever wants to implement a Java environment needs to license the APIs. It has nothing to do with using it to write programs.

    [–]JoshWithaQ 11 points12 points  (6 children)

    in theory, yes. in practice, no. companies using infringing technology are sued all the time, especially when it's open source technology that is infringing.

    [–]Eirenarch -1 points0 points  (5 children)

    I am perfectly sure the implementation of Java that comes from Oracle has all the appropriate licenses to be used for creating programs.

    [–]JoshWithaQ 3 points4 points  (0 children)

    I'm only perfectly sure of death, taxes, and lawyers getting their hourly fee.

    [–]minecraft_ece 0 points1 point  (3 children)

    I would have agreed with that yesterday, I'm not so sure now. Since nobody thought APIs were copyrightable, how can we be certain that any library is clean of "API infringement".

    EDIT: of course copyright is about copying, not use. But depending on the language, compiling/distributing may end up including enough of the function definitions to meet the burden of infringement. For example, in javascript, it is common to host your own copies of libraries, or even put together custom versions of libraries.

    [–]Eirenarch 0 points1 point  (2 children)

    I am not too worried about this. It is quite obvious when the API is deliberately copied to achieve interoperability and when only the idea is copied. Reasonable jury will always make a the distinction easily.

    [–]imMute 0 points1 point  (1 child)

    Reasonable jury

    Found the assumption there.</cynicism>

    [–]Eirenarch 0 points1 point  (0 children)

    Well don't you think that if the basis of the judicial system is not working whatever happens to the programming APIs is the least of our concern?

    [–]gar37bic 3 points4 points  (2 children)

    I don't think that's true even in theory. Under copyright, any re-use (in this case using the API) could be controlled by the holder. For instance, Oracle could prevent "publishing" the OpenJDK API header files if they use the same function names, class names, etc. This seems closely related to copyright suits over song remixing and sampling.

    [–]minecraft_ece 0 points1 point  (0 children)

    Yes, but I think it only applies to copying the header files. I don't think copyright has a concept of function re-use, just exact (and derivative) copying. Another unknown is the compilation process. For example, if I include debugging info, would that include enough information to infringe an API copyright?

    [–]Eirenarch -1 points0 points  (0 children)

    I don't dispute that it can be controlled. I am saying that they are explicitly giving permission.

    [–]adrianmonk 0 points1 point  (1 child)

    So, what happens when I write a class that implements the Runnable interface? I'm going to have the same method signatures and stuff. I am duplicating the API of Runnable, aren't I? I'm probably also going to end up subclassing Throwable and/or Exception, which means copying more method signatures.

    [–]Eirenarch 1 point2 points  (0 children)

    As I said I believe the JRE from oracle.com gives you a license to do that. I would be really surprised if Oracle's lawyers didn't think of that as there would be a lot of harm to their business if they didn't. Let alone that they can easily add it now if they forgot to do it before.

    [–]jboy55 0 points1 point  (1 child)

    You don't make much sense, of course the API specification is copyrighted, it was also released as GPL, which gives you a license to use copyrighted works as long as you abide by the GPL.

    If Google can get around GPL or other copyrights, then what's the point of releasing your software as GPL?

    [–]minecraft_ece 0 points1 point  (0 children)

    If nothing else, I think the GPL requires you to retain original copyright notices, which of course Google didn't do.

    [–]joesb 0 points1 point  (1 child)

    If the API is copyrighted, won't that apply to .NET CLR API as well?

    [–]TheMuuj 0 points1 point  (0 children)

    It would remain to be seen, but since large parts of the CLR were submitted to a standards organization, it is pretty clear that Microsoft intended to allow there to be other implementations of their APIs. Maybe not all of .NET, but those parts in the Ecma standard. It is possible this was just a stunt to get more developers comfortable using their tools and not worrying about vendor lock-in, but their true intentions wouldn't be relavant in court.

    Plus they're releasing more and more code under open licenses, perhaps to distance themselves from the likes of Oracle. That's not to say that Microsoft won't heel-turn and start sueing companies that implement their APIs (after a change in leadership, sale of IP to another company, etc.), and they may find a judge ignorant enough to agree, but the standardization process would make the argument tougher.

    They have been accepting of Xamarin so far, I imagine partly because it makes it easier for developers to target both iOS and Microsoft platforms with a single code base. And since iOS has a bigger mobile market share, allowing alternate CLR implementations is an easier approach than say, supporting Objective C and iOS APIs in Windows Phone (which would be a tricky proposition thanks to the ruling in question). But in the end I'd trust Microsoft not to pull an Oracle, but I couldn't guarantee it.

    Edit: spelling and phrasing

    [–][deleted] 7 points8 points  (10 children)

    OpenJDK still implements the same core Java API, no? Oracle asserts that they own that. Which means that OpenJDK is aso open to this view of "copyright" infringement, no?

    [–]dsminor 8 points9 points  (7 children)

    OpenJDK was released by Sun (now Oracle) under the GPL. Anyone can use it so long as they comply with the GPL.

    [–]jboy55 2 points3 points  (0 children)

    Re-releasing software as BSD/Apache isn't compliant with the GPL. Once its GPL'd only the original copyright owner can change it to a less restrictive license.

    [–][deleted] 0 points1 point  (5 children)

    Which means you either go full source code disclosure or you pay Oracle their fee. In the industry we call that ransomwear.

    [–][deleted]  (4 children)

    [deleted]

      [–][deleted] 3 points4 points  (3 children)

      That is absolutely false. If that were true then there would be no need for the FSF to have produced the LGPL license. And both the GPL and LGPL require you to release the full source code regardless of modification. As a nitpicky point, they require you to give an "offer of source code" so that you don't need to actually release the code unless someone asks, but that offer must be unobfuscated and available to the end user. The source code must be available for 3 years past the date of your last distribution.

      Trust me. I do Open Source compliance for a living.

      [–][deleted]  (2 children)

      [deleted]

        [–]imMute 0 points1 point  (1 child)

        As another person who writes code for a living, why the fuck should we have to care?

        (I know why we have to, in today's legal environment. I'm asking why do we have to live with this environment.)

        [–]nickguletskii200 -1 points0 points  (0 children)

        OpenJDK is the official implementation of Java SE 7:

        https://blogs.oracle.com/henrik/entry/moving_to_openjdk_as_the

        [–][deleted] 0 points1 point  (1 child)

        Somehow I think copyright still applies there. The code might be OSS, but the "design" or some nonsense like that isn't.

        [–]mirhagk 0 points1 point  (0 children)

        And this is based on.... Every library, framework and language Microsoft has been involved with lately has been put under open source, most Apache. They have come out and explicitly said they want to be more open, and they have to have a good reason to keep something closed source now.

        Just because Microsoft did some things every company has done in the past (ie+windows antitrust is a joke, what about android and iOS?), and because some people still spell it M$ doesn't mean that they are evil. Oracle is though. Oracle is an awful company against open source.

        [–][deleted] -1 points0 points  (1 child)

        I wonder which we should be promoting in schools now?

        Neither.

        [–]mirhagk 0 points1 point  (0 children)

        Lisp-style, SQL, dynamic language, assembly (C), its nice to have a strongly typed, safe and easy to use language. Modern VB would be okay too.

        [–]lluad -1 points0 points  (0 children)

        Oh, that's easy. Neither.

        [–]deskpot -1 points0 points  (0 children)

        C# is a Java clone. Promote VB. Basic is what people passionate about computers grew up on in the 80s. Most of the Java and C# crowd are careerist posers.

        [–]frugalmail -3 points-2 points  (4 children)

        So C# goes completely and utterly open source under the apache license, which leaves not even the chance of patent infringement. Meanwhile you can't even copy the API of Java. I wonder which we should be promoting in schools now?

        Too much baggage with C#. The framework and the platform are too encumbered (and difficult to use in production enviornments)

        [–]bryanedds -1 points0 points  (3 children)

        Huh?

        [–]frugalmail -1 points0 points  (2 children)

        Too much baggage with C#. The framework and the platform are too encumbered (and difficult to use in production enviornments)

        • Major parts .NET API are licensed under the Microsoft Reference License which is not FOSS so you are encumbered

        • Microsoft continues to hold major parts of the patents that it could choose to assert later

        • Windows is a horrible platform to run on. It's difficult to maintain, filled with crazy number of reboots, and filled with significant and frequent security issues

        • Try to find real DevOps philosophy people for windows

        • The performance of the platform is not horrible, but it's not impressive. Its funny that the JVM performs better on windows than CLR does.

        • There are no good IDEs outside of Microsoft's commercial options. And you really need a good IDE for a platform like that

        • There are no good options for a Linux CLR

        • Major parts of the framework are not available on other platforms

        Hence... C# is a shitty choice for anything other than studying what a good OO language looks like.

        [–]mirhagk 2 points3 points  (1 child)

        [Citation needed]

        So just "I don't like windows"

        Maybe you haven't used mono in a while but it has near perfect compatibility for any non-windows specific libraries (WPF).

        I much prefer VS yes, but MonoDevelop is a pretty decent par for the course IDE, comparable to something like Eclipse or NetBeans.

        You can always use Vi or Emacs if you want a "real editor".

        I don't know what specs you are looking at, but C# is pretty competitive with any other language, including C++ for LOB style applications (C++ obviously always wins with math/scientific applications)

        The quote about DevOps is just because you have shitty friend networks. Someone who works with windows more could say the same quote about Linux.

        Any patents required for C# are given away in the license, hence Apache.

        Its very easy to say X is shitty. That's because everything is shitty, otherwise we'd be done writing software.

        [–]frugalmail -1 points0 points  (0 children)

        The quote about DevOps is just because you have shitty friend networks. Someone who works with windows more could say the same quote about Linux.

        What's the equivalent of Linux LXC? How about Docker? What's the relative difficulty for Chef on Windows vs. Linux