Section 14.7. Java Provides the Other Side of the Choice


14.7. Java Provides the Other Side of the Choice

But what does all this have to do with freedom and choice? We saw that software livre did wonders to provide freedom for developers and to allow developer collaboration across the Internet, pushing the whole practice of software development to a new level. Freedom was well served and well used.

It is understandable that developers need their freedom to expand, explore, and literally change the world. Now we're discussing freedom with not only developers, but also companies, users, and the government. We saw how these deployers are looking for freedom of choice. They want to be able to choose. They wantactually they needoptions: the ability to choose different vendors, different implementations, different software houses, different licensing...in short, to not be locked in.

Going back to the many visions of freedom, the standards community sees freedom as the possibility to choose freely from multiple vendors, since usage of standards prevented lock-in. Standards are the way society normally defines its ruleswe see this in very different markets, from water distribution to electricity, from TV to telecommunicationsand this was applied to the software world. There were no explicit discussions about how developers would collaborate on code; on the contrary, standards usually hide the underlining implementation. And the focus was not on developer freedom: standards are actually restrictions on what a few developers can do, so a larger group of deployers and users can benefit from choice and option.

The free software movement was looking for freedom for the developer to collaborate and create, but more than this, freedom as an ultimate goala social good. Quoting the FSF, "for the Free Software movement, non-free software is a social problem and free software is the solution." The GPL puts all the responsibility in the hands of the developer, who has all the freedom, and only one very strict and strong restriction: the copyleft. Once-released code cannot ever be restricted, making it difficult (although not impossible) for developers to derive commercial benefit directly from the code they write. This is a strong compromise that free software developers accept for the benefit of all developers.

Then the Java community comes along, looking for another type of freedom, one that would free the developer to run his application on any platform. Actually, the main goal of Java was to free the user to run an application on whatever platform he chose, no matter what the platform the original developer was targeting. That was another type of freedom altogether, and it had to be based on standards to allow for multiple vendors. This view puts a restriction on a very narrow group of developers, the ones that deal with the creation of the runtime. They have to obey strict rules, for the benefit of the vast majority of developers, deployers, and users, from all platforms, who are then free to choose what they want to use and run.

At last the open source movement was formed, and promoted the discussion that although free software was good, having companies investing in and commercially benefiting from free software would be even better, proposed a similar but different view. Seeing freedom in a more practical way, which promotes developer collaboration, but they are willing to accept that not all software must be free, not considering proprietary software a social issue. Open source is referred to as a software development methodology, having dropped the political manifesto, and making the notion more usable and acceptable for the commercial market. The open source movement compromises the ideology and accepts that developers will benefit commercially from code they did not write, to achieve the benefit of allowing more companies and probably more resources to be applied to the evolution of software. This vision tries to achieve the much-needed critical mass that made FOSS the success it is today.

Are these freedoms incompatible? They can complement each other in very powerful ways, but freedom is always a compromise. We usually impose restrictions on a few to the benefit of a larger group.

Unfortunately, some people like to see things narrowly, creating unsolvable conflicts among these different freedom-promoting movements. As a Java developer, many times I have been excluded, ignored, and generally considered an "outsider" of the FOSS community. Many other Java developers feel the same way. All you need to do is mention Java in a FOSS discussion forum, and you'll be flamed. You see a lot of Java bashing at FOSS events. At a recent event, one of the main speakers claimed there are no good open source Java developers. How would developers from the Apache Jakarta projectwho have implemented so many great FOSS projects, and so many FOSS implementations of the Java standardsfeel about this? What about the developers who put a lot of effort on the Kaffe VM, the GNU Java Compiler, and the GNU Classpath? These are all great FOSS software projects highly respected implementations of the Java standards, done by top-level, committed Java developers.

Even FSF founder Richard Stallman has not proposed prohibiting the use of Java. In his essay, "Free But ShackledThe Java Trap," which seems to be misunderstood by many in the FOSS movement, Stallman actually recommends that developers use the already available free Java implementations and, more important, that they help improve them. "We do have free implementations of Java, such as the GNU Java Compiler and GNU Classpath, but they don't support all the features yet.[...]Fortunately, [the Java] specification license does permit releasing an implementation as free software[...]To keep your Java code safe[...], install a free Java development environment and use it," says Stallman.

Stallman is not only very clear on the importance of the free Java implementations, but he also gives us an important argument. He says, "In the early days of the Free Software Movement, it was impossible to avoid depending on non-free programs.[...]It was inevitable that our first programs would initially be hampered by these dependencies, but we accepted this because our plan included rescuing them subsequently." This was a reasonable compromise to make to reach a much more worthy goal. But Stallman continues: "The situation is different today. We now have powerful free operating systems and many free programming tools. Whatever job you want to do, you can do it on a free platform; there is no need to accept a non-free dependency even temporarily." Although Stallman uses this rhetoric to say that you should stick to the free Java implementations, the effect really depends on who he means by "you."

One of the powerful freedoms that Java brings is platform independence. As we have already seen, the main roadblock for companies and governments in Brazil to choose and migrate to the "powerful free operating systems" is the lock-in of existing legacy applications. This is a hard problem to crack, since we cannot move the systems until all needed code is ported. So, until we're able to expend enough effort to migrate all the existing applications, we have to keep adding to today's Windows system. Since a simultaneous migration is improbable, we then have to coexist both systems for awhile.

Here is where Java comes to the rescue. Applications can be developed to run on today's Windows systems, coexisting with any new software livre system that is introduced, thus making the eventual complete migration a lot easier. Certainly there are other technologies that allow you to develop cross-platform applications, but Java is one of the best options, not only technically but also in terms of available tools, information, and market penetration. Anecdotal evidence from the open source community on the number of non-Java applications that were developed on GNU/Linux but can run on Windows shows that platform independence is not that easily achieved. It is possible, but the large number of Windows-developed Java applications that can run on GNU/Linux is a clear statement that Java makes cross-platform deployment a much easier task.

There are many corporate and government developers who need to deal with a migration strategy, who need to start moving from Windows to GNU/Linux, or maybe to an open source Solaris. Many more are not planning to migrate now, but would like to have a number of choices in the future. So, if the "you" Stallman was referring to are those developers, they will be better off by accepting a nonfree dependency temporarily, to get the freedom of platform now provided by Java, and be able to move to a "powerful free operating system" when desired or needed. Moving Java software to the free operating systems should be easier, and promoting multiplatform development and standards for governments and companies is a powerful strategy to guarantee choice. Minimizing dependencies on software that cannot be implemented by the FOSS community is a clear road map to allow the migration.

In the meantime, we, the FOSS community, should stop pretending Java does not exist, and that freedom of platform is not important to users, and make the effort to accept, use, and finish the free Java implementation and tools, as Richard Stallman suggests.

The existing free Java standards implementations may lack functionality if compared to the full proprietary ones, but the huge amount of functionality provided is at least comparable, and in many cases is much better than that offered by other major open source implemented languages. There's no reason why lots of great software could not be developed and used on those free Java implementations, but as long as the FOSS leaders insist on downplaying the importance of Java, this important free software will be ignored both by the FOSS community and by the Java community at large.

When the FSF talks about usage of the term free software, it mentions that "to stop using the word free now would be a mistake; we need more, not less, talk about freedom." This is an interesting point. Although the FSF has its strong and idealistic view on what is software freedom, it is clear that its views of freedom are not the only important views, and that the freedoms we're talking about are not mutually exclusive. They may be different, and not everybody may want all of them, but they can be explored together. Platform independence is an important, easy-to-grasp freedom, that can go hand in hand with the notion of free software. The fact that we still don't have a compatible FOSS Java implementation should not be a reason to stop promoting the notion of freedom of platform.



Open Sources 2.0
Open Sources 2.0: The Continuing Evolution
ISBN: 0596008023
EAN: 2147483647
Year: 2004
Pages: 217

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net