Distributing executable JARs depending on LGPL code license compilantly [closed] - java

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I got a Java project I don't want to publish under a Gnu license. (MIT, but nevermind.)
As build management tool I use Maven, that generates a “jar-with-dependencies”.
The project depends on gnu.getopt, licensed under the LGPL 2.
So my questions are:
Am I allowed to publish that “jar-with-dependencies” under another license than the LGPL? (Say, MIT, shareware …)
If not: How can I distribute executable JARs depending on LGPL code?
I do not
look for a replacement for gnu.getopt.
seek for answers like “consult your lawyer”.
want to be converted to the Gnu way of life …

Haha, you don't have to be converted to the GNU way of life although I would highly recommend it :). You are in luck, the difference between the GPL and the LGPL (Lesser GPL) is that the LGPL basically allows you to do just what you are asking wheras the GPL does not. From the GNU rationale for not using the LGPL:
The GNU Project has two principal licenses to use for libraries. One is the GNU Lesser GPL; the other is the ordinary GNU GPL. The choice of license makes a big difference: using the Lesser GPL permits use of the library in proprietary programs; using the ordinary GPL for a library makes it available only for free programs.
GNU want to change all of their libraries to GPL eventually but, for now, if it says it uses the LGPL, you're good to go. If it had used the GNU licence, you would have to licence your software under a GNU-compliant licence. In fact, a quick search of this list reveals:
Expat License
This is a simple, permissive non-copyleft free software license, compatible with the GNU GPL. It is sometimes ambiguously referred to as the MIT License.
EDIT: Remember that IANAL! I have since found that you may not be able to licence under a compatible licence when including a GPL library: What does it mean to say a license is “compatible with the GPL?”

I do not [...] seek for answers like “consult your lawyer”
You shouldn't rely on non-qualified people for legal advice.
If you don't want to talk to a lawyer, do your own research and take your own risks. In this case, the language of the license is fairly clear and FSF provide extensive explanatory information. But you need to bear in mind that legal language does not always mean what a layman thinks it means ...
But if you are happy to ignore that advice...
My understanding is that LGPL means that you can use it with non-GPL code, provided that 1) you distribute source for any changes that you make to the library, and 2) keep the JAR file separate so that people can upgrade the library independently of your code.
I like GNU and everything the FSF did for the software engineering community. But enterprises like the Apache License better.
That may be so, but if they (enterprises) are willing to use Linux, etc then they can live with your code being GPL as well. And if they can't, they can afford to pay you some money for the privilege of embedding your code in their closed-source application.
On the other hand, you may have no problem with people using your code in that fashion.

Related

Licence models for frameworks/libraries/apis [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I'm a programmer who is starting to build small commercial apps (for mobile phones (java,android), web pages and c++ apps built in visual studio).
Now the problem is that i don't understand how licencing works. From what I've seen I am not allowed to use any library, not even java's basic one because they are either under GPL or something else.
For example, am I obliged to pay Sun to use their java libraries to build my app ? or how can I write a mobile app when it is necessary to release my code. How do big companies get around that ?
Another thing I don't understand, what libraries and apis am I allowed to use for free that are windows specific (like MFC, .NET, COM). How do this licences work? if I just bought the visual studio suit will it be enough to allow me to use this api's ? I'm in a situation that I learned to use this libraries/apis/frameworks and now when it's time to actually use them for something I must pay for them.
If that's true than that means it's impossible to build commercial apps without spending thousands of dollars on other things ?
Here are some cases and how to deal with them:
copying source code into your own code
This is where you should be very aware where you're copying from and under which license(s) the code was released. Most of the cases you will NOT be allowed to copy it. In almost all other cases you will need to put the original copyright notice in the code. In some cases (GPL) you're obliged to release the source code along with any public distribution of your product. In some cases you can purchase a license for redistribution rights in binary form. In all cases it's good practice to put a comment, marking the origin of the code.
Using libraries but not shipping
If you compile an application for Android or for Windows, you'll inevitably use their API's and libraries. As long as these belong to the platform, you do not need to ship the libraries with your app. So you only need to care if you're allowed to use them (link to them) from within your app. For OS and Language libs, this is usually the case.
Shipping 3rd party libraries with your app
Here again, you will need to know exactly what you're doing because there are big differences. This field is quite complex... Some development environments and frameworks include "redistributable" packages, which are meant for inclusion in your app. But they come with license terms, too, and it's worthwhile to read and understand the implications.
Rule of thumb: BSD style licenses are fine if you give proper credit in your documentation. GPL is almost always a no-go for commercial applications unless you're willing to release your entire source code with your product.
Disclaimer: IANAL
Your question is extremely broad, covering a wide range of libraries and associated licenses. IANAL but the short answer is that most of the library code that you mention can be used for commercial purposes without paying anything; particularly the Java and .Net code. The respective platform holders WANT people to use them. It's only when you get into more specialised situations that they start extracting revenue, usually through support contracts or special VM versions (like the old JRockit VM).
There is a big difference between copying code and use it as your own, versus linking to it.
The semantics can get complicated very fast, as there are many types of licences, so as a warm recommendation, hire the services of a good lawyer that is familiar with the field. That can save you a lot of trouble in the future!!
Big companies are careful in examining the license for every tool/sdk/library that they incorporate in their solutions.
In what's concerning the obligation of releasing your source code, you don't have to if you are using either Microsoft sdks or the Java base libraries.
But in order to be 100% sure, you always have to read the licenses. A good start to understanding how licensing works would be to read the following Wikipedia articles:
CopyLeft - if a license is copyleft then all the restrictions of that license will also apply to your code, but you will not be able to impose further restrictions to the code or product. That means that if you use an open source sdk that has a License which is Copyleft you will have to distribute your source code as open source.
CopyFree - if a license is copyfree, you may impose further restrictions on it like adding a fee for the end product and refuse to distribute the code.
GNU public license - the copyleft standard applies if you included or linked to copyleft based license
Lesser GNU public license - the copyleft standard applies only if you directly included copyleft licensed code into your source base. But it does not apply if you merely linked to a copyleft type licensed product
Try to spend some time and go trough a few articles on the licensing subject and then you will start to understand licenses a bit better.
HTH,
JP

Double-entry accounting libraries for Java? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
What double-entry accounting libraries are available for Java?
I did write a library for myself, but since it was for a really trivial application, I don't know if it would suit a general purpose accounting need.
It has an interface like:
ledger.newPosting(new Date(), "Received $10 from Anne")
.debit("Cash:Anne", 1000)
.credit("Dues Received", 1000)
.post();
int cashBalance = ledger.getAccount("Cash").getTrialBalance();
assertEquals(-1000, cashBalance);
int anneBalance = ledger.getAccount("Cash:Anne").getTrialBalance();
assertEquals(-1000, anneBalance);
int duesBalance = ledger.getAccount("Dues Received").getTrialBalance();
assertEquals(1000, duesBalance);
Is this the kind of thing you're looking for? Anyone else actually INTERESTED in this code? I wrote it generically, but never published it because I didn't think anyone would want something this trivial.
There's a Swedish project called fribok.org (free (as in GNU free) accounting). It's an application too, but might be componentized and contain what you look for (given that GPL is a viable option for you).
I've seen JMoney used with custom plug-ins. What are you trying to do?
Well, I am not aware of any such libraries. Personally me thinks that double entry accounting framework would boil down to couple of interfaces and minimal code to ensure equation invariants. Hence no libs for that: try to bite a relevant code snippet from JMoney or something like that...
;)
How about jLedger - Java Business Accounting API?
Citing the project's home page: "This is a Java Business Accounting API that consist of invoicing, general ledger, stock/inventory control and other business API that will assist java developer to build a business software with ease."
Note, however, that this project releases the software under the GNU GPL v2 license, not the Apache license that's usually associated with Java-related projects.
GNU GPL is a copyleft license and libraries licensed under it may not be appropriate for internally developed or commercial software.
There is this more recent implementation using JTA and Spring. As it states:
The Double-entry bookkeeping concept implemented with Spring 4, the
Java Transaction API and the H2 database in embedded mode
The best I have seen is a jPos module called minigl which is part of jpos-ee., The jPOS framework is used widely in many production grade deployments. I have personally used in at scale on some high-profile projects.
You will need to get up to speed on jpos-ee, a very solid java framework for all things payment and fintech related. It is worth the learning curve as if you are asking about ledgers you are probably going to have other needs which are likely already addressed in the jPos codebase.
I just wrote a java library for accounting. The beauty of my library is that it uses a 4GL to do the credits, debits and ledgers. You can also import other functions to handle inventory, payroll and things like that. Fetal Libraries

Using Java Commercially

I am currently in the process of writing some software in Java that I may one day decide to sell online. I am using the Java SE library. Do I have to pay any licensing feels to Oracle if I plan to sell this, because with the recent news of Oracle suing Google I am concerned for the future of this platform.
Thanks,
You are free to sell Java software without any licensing issues. The Oracle/Google lawsuit is specifically about Google's alleged breaches of several Oracle patents, which are all to do with JVM implementation details. If you're writing software to run ON the JVM, you don't have an issue. For more info on the lawsuit, see the lengthy blogpost by Charles Nutter.
Obviously, though, IANAL.
From my remembrances, it seems to me that, as long as you don't ship a Java VM with your product (but rather explain to your users how to download it from Oracle), you won't have any issues.
If you read the news carefully, you'll soon realize, that the lawsuit is limited to googles Dalvik virtual machine which is used on Android. Unless you plan to develop applications for Android in Java (or any other platform, that is limited to use a virtual machine which isn't licensed by Oracle), you don't have to worry at all.
And even if, I don't see any risk, that Dalvik will be removed from all handhelds as a result from this fight.

Java JCE providers - what does "clean room implementation" mean?

I'm required to write a JCE provider. I have learned that I need to use the bouncy castle clean room implementation. Could you please tell me what "clean room implementation" means in in this context?
Clean room implementation means in this context that the code was written only from the description and specification, but not with access to any potentially troublesome code.
This is important as the Sun source code previously was under a license which was incompatible with especially GPL distributions. By ensuring that the code was not written without any access to such code, it is guaranteed that the Sun license could not later be found to apply to the clean room implementation, and then again be incompatible with the GPL license or any other restrictions.
In other words, it is a guarantee that the license shown will hold.
Despite the name, most re-implementations are done in rooms with mostly empty beer cans and pizza boxes. This is speaking from past experience, you understand :-)
However, in the context of chip development, a clean room is one where small imperfections (like dust) can cause serious problems at the nano scale. So they're kept incredibly clean, with air scrubbers, protective suits (protecting the environment, notvthe wearer) etc.
By analogy, software clean room development is done without any access to imperfections that could cause problems. In the case of open-source software, this means not having access to an implementation that might be "tainted" by an incompatible license. (It's not just GPL, but this is commonly cited due to its viral nature). However, this also applies to closed source reverse engineering projects, like the creation of the IBM compatible BIOS that opened the market to IBM clones back in the 80's.

Java is open-source, so what? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 7 years ago.
Improve this question
I always hear that Java being open-source is a big benefit, but I fail to see how Java being open-source should draw me to use it as opposed to .NET which is closed-source. This website has some Q&A sections (What is the significance of these developments to the industry? in particular) that give a little info, but is being free the only (or the biggest) advantage to Java being open-source?
Since I am a beginner, have any of you pros noticed any major difference since the change was made?
EDIT:
Please disregard the .NET part of this question, I was simply using it as a comparison. What I really care about is knowing what benefit becoming open-source has been to Java.
If you are a mainstream user, there is probably no immediate benefit for you.
However, the open-source base of Java makes it easier for people to adapt it to more niche requirements that the closed-source vendor sees no need to support. Smaller vendors (or open source projects) can come up with solutions to these special needs.
For example, Java runs on a great variety of platforms and operating systems, most of them supported by companies other than Sun (granted, that was the case even before it was open source).
have any of you pros noticed any major difference since the change was made
I like the fact that Linux distributions now include the "official" Sun JVM and JDK, rather than making you install it separately or use the "mostly-compatible" alternative implementation that was provided.
Not entirely fair to say .NET is closed source - Microsoft's .NET runtime and development tools are closed-source.
Mono is an open-source implementation of many things in the .NET world - the CLR and C# being the biggest.
The primary implementation of .NET is closed source, though there are competing open-source implementations.
The primary implementation of JVM is open source, though there are competing closed-source implementations.
The standard for Java remains entirely under control of Sun (Oracle). Others are allowed to provide input, but final decisions are up to Sun.
The standard for CLR is entirely under control of the ECMA and ISO. Microsoft is allowed to provide input, but the final decision is up to the standards bodies. If Microsoft did ignore their decision, it's open to question whether the standard would remain relevant.
The improvements to OpenJDK since it was open-sourced have been immeasurable, here is just a few:
The Zero project, contributed by Redhat, has ported Hotspot to many new platforms like PowerPC (32 and 64 bit), IA-64, ARM and zSeries, and made future ports to other platforms much easier. The Shark subproject has also given it better performance on some of those platforms
The OpenJDK has been ported to new operating systems, such as Haiku and BSD
Many bugs have been reported and fixed by individuals and companies
Apple has joined the OpenJDK project and a MacOS port is in the pipeline
So has IBM
Various innovative projects, such as IcedRobot have become possible
OpenJDK jtreg tests are now available to other Java implementations
Some of the direct benefits to the average Java programmer are:
You can investigate and fix bugs in the JDK source code
You can build custom versions of the OpenJDK (eg. strip it down to make it smaller)
You don't need to pay license fees to ship OpenJDK on embedded devices
Java and .Net are both standards for which anyone can write an open-source implementation. .Net 3.0 just happens to have no complete open-source implementations.
Regardless of openness, the difference for you (and the reason many people choose Java at all) is portability. There are far more implementations of Java, and most are closed.
Java can create apps for cell phones. Java can create web apps. Java runs on Mac. Not .Net.
Sun is just advertising the simplification and standardization which a common open-source core may provide. But if you look closely at the page you linked, you'll see that it's using the future tense.
Opening up the JVM source helps in porting it to other architectures such as ARM for embedded use.
More choices. Flexibility. Java Community Process. I think mainly lower cost of ownership - Eclipse+ApacheServer+Linux - are all free.

Categories