Manage your Blog

Create your blog now! Easy and Free

Ubuntuland

Get Paid to Blog About the Things You Love

Category: Linux

05/03/2008 GMT 1

Free Software and the GNU Operating System

ubuntuland @ 16:48

The Free Software Foundation (FSF) is a 501(c)3 donor supported charity founded in 1985 and based in Boston, MA, USA. The FSF has a worldwide mission to promote computer user freedom and to defend the rights of all free software users.

What is free software and why is it so important for society?

Free software is software that gives you the user the freedom to share, study and modify it. We call this free software because the user is free.

To use free software is to make a political and ethical choice asserting the right to learn, and share what we learn with others. Free software has become the foundation of a learning society where we share our knowledge in a way that others can build upon and enjoy.

Currently, many people use proprietary software that denies users these freedoms and benefits. If we make a copy and give it to a friend, if we try to figure out how the program works, if we put a copy on more than one of our own computers in our own home, we could be caught and fined or put in jail. That’s what’s in the fine print of the license agreement you accept when using proprietary software.

The corporations behind proprietary software will often spy on your activities and restrict you from sharing with others. And because our computers control much of our personal information and daily activities, proprietary software represents an unacceptable danger to a free society.

gnu-linux.jpg

The GNU Operating System and the Free Software Movement

What if there were a worldwide group of talented ethical programmers voluntarily committed to the idea of writing and sharing software with each other and with anyone else who agreed to share alike? What if anyone could be a part of and benefit from this community even without being a computer expert or knowing anything about programming? We wouldn’t have to worry about getting caught copying a useful program for our friends—because we wouldn’t be doing anything wrong.

In fact, such a movement exists, and you can be a part of it. The free software movement was started in 1984 by computer scientist Professor Richard M. Stallman, when he launched a project called GNU, which stands for “GNU is Not UNIX”, to provide a replacement for the UNIX operating system—a replacement that would respect the freedoms of those using it. Then in 1985, Stallman started the Free Software Foundation, a nonprofit with the mission of advocating and educating on behalf of computer users around the world.

There are now many variants or “distributions” of this GNU operating system using the kernel Linux. We recommend those GNU/Linux distributions that are 100% free software; in other words, entirely freedom-respecting.

Today, free software is available for just about any task you can imagine. From complete operating systems like GNU, to over 5,000 individual programs and tools listed in our FSF/UNESCO free software directory. Millions of people around the world - including entire governments - are now using free software on their computers.

Our Core Work

The FSF maintains the Free Software Definition - to show clearly what must be true about a particular software program for it to be considered free software.

The FSF sponsors the GNU project the ongoing effort to provide a complete operating system licensed as free software. We also fund and promote important free software development and provide development systems for GNU software maintainers, including full email and shell services and mailing lists. We are committed to furthering the development of the GNU Operating System and enabling volunteers to easily contribute to that work, including sponsoring Savannah the source code repository and center for free software development.

The FSF holds copyright on a large proportion of the GNU operating system, and other free software. We hold these assets to defend free software from efforts to turn free software proprietary. Every year we collect thousands of copyright assignments from individual software developers and corporations working on free software. We register these copyrights with the US copyright office and enforce the license under which we distribute free software - typically the GNU General Public License. We do this to ensure that free software distributors respect their obligations to pass on the freedom to all users, to share, study and modify the code. We do this work through our Free Software Licensing and Compliance Lab.

The FSF publishes the GNU General Public License (GNU GPL), the worlds most popular free software license, and the only license written with the express purpose of promoting and preserving software freedom. Other important licenses we publish include the GNU Lesser General Public License (GNU LGPL), the GNU Affero General Public License (GNU AGPL) and the GNU Free Document License (GNU FDL). Read more about our free software licensing and related issues.

The FSF campaigns for free software adoption and against proprietary software. Threats to free software include Digital Restrictions Management (DRM), Software Patents and Treacherous Computing. Find out more about our campaigns, and ways to volunteer.

The FSF also provides important resources to the community including the FSF/UNESCO free software directory.

The Free Software Foundation receives the bulk of its funding from thousands of individual donors. Financial information about the Free Software Foundation is available from the independent charity rating organization, Charity Navigator. In 2003, 2004 and 2005 Charity Navigator rated the Foundation as 3 out of 4 stars: "Good. Exceeds or meets industry standards and performs as well as or better than most charities in its Cause". In 2006 Charity Navigator rated the Foundation as 4 out of 4 stars: "Exceptional. Exceeds industry standards and outperforms most charities in its Cause."

Review our financial information now at Charity Navigator. Form 990s are also available at Guidestar or contact us at info@fsf.org.

The Free Software Definition

We maintain this free software definition to show clearly what must be true about a particular software program for it to be considered free software.

``Free software'' is a matter of liberty, not price. To understand the concept, you should think of ``free'' as in ``free speech,'' not as in ``free beer.''

Free software is a matter of the users' freedom to run, copy, distribute, study, change and improve the software. More precisely, it refers to four kinds of freedom, for the users of the software:

  • The freedom to run the program, for any purpose (freedom 0).

  • The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.

  • The freedom to redistribute copies so you can help your neighbor (freedom 2).

  • The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.

A program is free software if users have all of these freedoms. Thus, you should be free to redistribute copies, either with or without modifications, either gratis or charging a fee for distribution, to anyone anywhere. Being free to do these things means (among other things) that you do not have to ask or pay for permission.

You should also have the freedom to make modifications and use them privately in your own work or play, without even mentioning that they exist. If you do publish your changes, you should not be required to notify anyone in particular, or in any particular way.

The freedom to use a program means the freedom for any kind of person or organization to use it on any kind of computer system, for any kind of overall job, and without being required to communicate subsequently with the developer or any other specific entity.

The freedom to redistribute copies must include binary or executable forms of the program, as well as source code, for both modified and unmodified versions. (Distributing programs in runnable form is necessary for conveniently installable free operating systems.) It is ok if there is no way to produce a binary or executable form for a certain program (since some languages don't support that feature), but you must have the freedom to redistribute such forms should you find or develop a way to make them.

In order for the freedoms to make changes, and to publish improved versions, to be meaningful, you must have access to the source code of the program. Therefore, accessibility of source code is a necessary condition for free software.

In order for these freedoms to be real, they must be irrevocable as long as you do nothing wrong; if the developer of the software has the power to revoke the license, without your doing anything to give cause, the software is not free.

However, certain kinds of rules about the manner of distributing free software are acceptable, when they don't conflict with the central freedoms. For example, copyleft (very simply stated) is the rule that when redistributing the program, you cannot add restrictions to deny other people the central freedoms. This rule does not conflict with the central freedoms; rather it protects them.

You may have paid money to get copies of free software, or you may have obtained copies at no charge. But regardless of how you got your copies, you always have the freedom to copy and change the software, even to sell copies.

``Free software'' does not mean ``non-commercial''. A free program must be available for commercial use, commercial development, and commercial distribution. Commercial development of free software is no longer unusual; such free commercial software is very important.

Rules about how to package a modified version are acceptable, if they don't substantively block your freedom to release modified versions. Rules that ``if you make the program available in this way, you must make it available in that way also'' can be acceptable too, on the same condition. (Note that such a rule still leaves you the choice of whether to publish the program or not.) It is also acceptable for the license to require that, if you have distributed a modified version and a previous developer asks for a copy of it, you must send one, or that you identify yourself on your modifications.

In the GNU project, we use ``copyleft'' to protect these freedoms legally for everyone. But non-copylefted free software also exists. We believe there are important reasons why it is better to use copyleft, but if your program is non-copylefted free software, we can still use it.

See Categories of Free Software for a description of how ``free software,'' ``copylefted software'' and other categories of software relate to each other.

Sometimes government export control regulations and trade sanctions can constrain your freedom to distribute copies of programs internationally. Software developers do not have the power to eliminate or override these restrictions, but what they can and must do is refuse to impose them as conditions of use of the program. In this way, the restrictions will not affect activities and people outside the jurisdictions of these governments.

Most free software licenses are based on copyright, and there are limits on what kinds of requirements can be imposed through copyright. If a copyright-based license respects freedom in the ways described above, it is unlikely to have some other sort of problem that we never anticipated (though this does happen occasionally). However, some free software licenses are based on contracts, and contracts can impose a much larger range of possible restrictions. That means there are many possible ways such a license could be unacceptably restrictive and non-free.

We can't possibly list all the possible contract restrictions that would be unacceptable. If a contract-based license restricts the user in an unusual way that copyright-based licenses cannot, and which isn't mentioned here as legitimate, we will have to think about it, and we will probably decide it is non-free.

When talking about free software, it is best to avoid using terms like ``give away'' or ``for free'', because those terms imply that the issue is about price, not freedom. Some common terms such as ``piracy'' embody opinions we hope you won't endorse. See Confusing Words and Phrases that are Worth Avoiding for a discussion of these terms. We also have a list of translations of "free software" into various languages.

Finally, note that criteria such as those stated in this free software definition require careful thought for their interpretation. To decide whether a specific software license qualifies as a free software license, we judge it based on these criteria to determine whether it fits their spirit as well as the precise words. If a license includes unconscionable restrictions, we reject it, even if we did not anticipate the issue in these criteria. Sometimes a license requirement raises an issue that calls for extensive thought, including discussions with a lawyer, before we can decide if the requirement is acceptable. When we reach a conclusion about a new issue, we often update these criteria to make it easier to see why certain licenses do or don't qualify.

If you are interested in whether a specific license qualifies as a free software license, see our list of licenses. If the license you are concerned with is not listed there, you can ask us about it by sending us email at
.

If you are contemplating writing a new license, please contact the FSF by writing to that address. The proliferation of different free software licenses means increased work for users in understanding the licenses; we may be able to help you find an existing Free Software license that meets your needs.

If that isn't possible, if you really need a new license, with our help you can ensure that the license really is a Free Software license and avoid various practical problems.

Why “Free Software” is better than “Open Source”

While free software by any other name would give you the same freedom, it makes a big difference which name we use: different words convey different ideas.

In 1998, some of the people in the free software community began using the term “open source software” instead of “free software” to describe what they do. The term “open source” quickly became associated with a different approach, a different philosophy, different values, and even a different criterion for which licenses are acceptable. The Free Software movement and the Open Source movement are today separate movements with different views and goals, although we can and do work together on some practical projects.

The fundamental difference between the two movements is in their values, their ways of looking at the world. For the Open Source movement, the issue of whether software should be open source is a practical question, not an ethical one. As one person put it, “Open source is a development methodology; free software is a social movement.” For the Open Source movement, non-free software is a suboptimal solution. For the Free Software movement, non-free software is a social problem and free software is the solution.

Relationship between the Free Software movement and Open Source movement

The Free Software movement and the Open Source movement are like two political camps within the free software community.

Radical groups in the 1960s developed a reputation for factionalism: organizations split because of disagreements on details of strategy, and then treated each other as enemies. Or at least, such is the image people have of them, whether or not it was true.

The relationship between the Free Software movement and the Open Source movement is just the opposite of that picture. We disagree on the basic principles, but agree more or less on the practical recommendations. So we can and do work together on many specific projects. We don't think of the Open Source movement as an enemy. The enemy is proprietary software.

We are not against the Open Source movement, but we don't want to be lumped in with them. We acknowledge that they have contributed to our community, but we created this community, and we want people to know this. We want people to associate our achievements with our values and our philosophy, not with theirs. We want to be heard, not obscured behind a group with different views. To prevent people from thinking we are part of them, we take pains to avoid using the word “open” to describe free software, or its contrary, “closed”, in talking about non-free software.

So please mention the Free Software movement when you talk about the work we have done, and the software we have developed—such as the GNU/Linux operating system.

Comparing the two terms

This rest of this article compares the two terms “free software” and “open source”. It shows why the term “open source” does not solve any problems, and in fact creates some.

Ambiguity

The term “free software” has an ambiguity problem: an unintended meaning, “Software you can get for zero price,” fits the term just as well as the intended meaning, “software which gives the user certain freedoms.” We address this problem by publishing a more precise definition of free software, but this is not a perfect solution; it cannot completely eliminate the problem. An unambiguously correct term would be better, if it didn't have other problems.

Unfortunately, all the alternatives in English have problems of their own. We've looked at many alternatives that people have suggested, but none is so clearly “right” that switching to it would be a good idea. Every proposed replacement for “free software” has a similar kind of semantic problem, or worse—and this includes “open source software.”

The official definition of “open source software,” as published by the Open Source Initiative, is very close to our definition of free software; however, it is a little looser in some respects, and they have accepted a few licenses that we consider unacceptably restrictive of the users. However, the obvious meaning for the expression “open source software” is “You can look at the source code.” This is a much weaker criterion than free software; it includes free software, but also includes semi-free programs such as Xv, and even some proprietary programs, including Qt under its original license (before the QPL).

That obvious meaning for “open source” is not the meaning that its advocates intend. The result is that most people misunderstand what those advocates are advocating. Here is how writer Neal Stephenson defined “open source”:

Linux is “open source” software meaning, simply, that anyone can get copies of its source code files.

I don't think he deliberately sought to reject or dispute the “official” definition. I think he simply applied the conventions of the English language to come up with a meaning for the term. The state of Kansas published a similar definition:

Make use of open-source software (OSS). OSS is software for which the source code is freely and publicly available, though the specific licensing agreements vary as to what one is allowed to do with that code.

Of course, the open source people have tried to deal with this by publishing a precise definition for the term, just as we have done for “free software.”

But the explanation for “free software” is simple—a person who has grasped the idea of “free speech, not free beer” will not get it wrong again. There is no such succinct way to explain the official meaning of “open source” and show clearly why the natural definition is the wrong one.

Fear of Freedom

The main argument for the term “open source software” is that “free software” makes some people uneasy. That's true: talking about freedom, about ethical issues, about responsibilities as well as convenience, is asking people to think about things they might rather ignore. This can trigger discomfort, and some people may reject the idea for that. It does not follow that society would be better off if we stop talking about these things.

Years ago, free software developers noticed this discomfort reaction, and some started exploring an approach for avoiding it. They figured that by keeping quiet about ethics and freedom, and talking only about the immediate practical benefits of certain free software, they might be able to “sell” the software more effectively to certain users, especially business. The term “open source” is offered as a way of doing more of this—a way to be “more acceptable to business.” The views and values of the Open Source movement stem from this decision.

This approach has proved effective, in its own terms. Today many people are switching to free software for purely practical reasons. That is good, as far as it goes, but that isn't all we need to do! Attracting users to free software is not the whole job, just the first step.

Sooner or later these users will be invited to switch back to proprietary software for some practical advantage. Countless companies seek to offer such temptation, and why would users decline? Only if they have learned to value the freedom free software gives them, for its own sake. It is up to us to spread this idea—and in order to do that, we have to talk about freedom. A certain amount of the “keep quiet” approach to business can be useful for the community, but we must have plenty of freedom talk too.

At present, we have plenty of “keep quiet”, but not enough freedom talk. Most people involved with free software say little about freedom—usually because they seek to be “more acceptable to business.” Software distributors especially show this pattern. Some GNU/Linux operating system distributions add proprietary packages to the basic free system, and they invite users to consider this an advantage, rather than a step backwards from freedom.

We are failing to keep up with the influx of free software users, failing to teach people about freedom and our community as fast as they enter it. This is why non-free software (which Qt was when it first became popular), and partially non-free operating system distributions, find such fertile ground. To stop using the word “free” now would be a mistake; we need more, not less, talk about freedom.

If those using the term “open source” draw more users into our community, that is a contribution, but the rest of us will have to work even harder to bring the issue of freedom to those users' attention. We have to say, “It's free software and it gives you freedom!”—more and louder than ever before.

Would a Trademark Help?

The advocates of “open source software” tried to make it a trademark, saying this would enable them to prevent misuse. This initiative was later dropped, the term being too descriptive to qualify as a trademark; thus, the legal status of “open source” is the same as that of “free software”: there is no legal constraint on using it. I have heard reports of a number of companies' calling software packages “open source” even though they did not fit the official definition; I have observed some instances myself.

But would it have made a big difference to use a term that is a trademark? Not necessarily.

Companies also made announcements that give the impression that a program is “open source software” without explicitly saying so. For example, one IBM announcement, about a program that did not fit the official definition, said this:

As is common in the open source community, users of the ... technology will also be able to collaborate with IBM ...

This did not actually say that the program was “open source”, but many readers did not notice that detail. (I should note that IBM was sincerely trying to make this program free software, and later adopted a new license which does make it free software and “open source”; but when that announcement was made, the program did not qualify as either one.)

And here is how Cygnus Solutions, which was formed to be a free software company and subsequently branched out (so to speak) into proprietary software, advertised some proprietary software products:

Cygnus Solutions is a leader in the open source market and has just launched two products into the [GNU/]Linux marketplace.

Unlike IBM, Cygnus was not trying to make these packages free software, and the packages did not come close to qualifying. But Cygnus didn't actually say that these are “open source software”, they just made use of the term to give careless readers that impression.

These observations suggest that a trademark would not have truly prevented the confusion that comes with the term “open source”.

Misunderstandings(?) of “Open Source”

The Open Source Definition is clear enough, and it is quite clear that the typical non-free program does not qualify. So you would think that “Open Source company” would mean one whose products are free software (or close to it), right? Alas, many companies are trying to give it a different meaning.

At the “Open Source Developers Day” meeting in August 1998, several of the commercial developers invited said they intend to make only a part of their work free software (or “open source”). The focus of their business is on developing proprietary add-ons (software or manuals) to sell to the users of this free software. They ask us to regard this as legitimate, as part of our community, because some of the money is donated to free software development.

In effect, these companies seek to gain the favorable cachet of “open source” for their proprietary software products—even though those are not “open source software”—because they have some relationship to free software or because the same company also maintains some free software. (One company founder said quite explicitly that they would put, into the free package they support, as little of their work as the community would stand for.)

Over the years, many companies have contributed to free software development. Some of these companies primarily developed non-free software, but the two activities were separate; thus, we could ignore their non-free products, and work with them on free software projects. Then we could honestly thank them afterward for their free software contributions, without talking about the rest of what they did.

We cannot do the same with these new companies, because they won't let us. These companies actively invite the public to lump all their activities together; they want us to regard their non-free software as favorably as we would regard a real contribution, although it is not one. They present themselves as “open source companies,” hoping that we will get a warm fuzzy feeling about them, and that we will be fuzzy-minded in applying it.

This manipulative practice would be no less harmful if it were done using the term “free software.” But companies do not seem to use the term “free software” that way; perhaps its association with idealism makes it seem unsuitable. The term “open source” opened the door for this.

At a trade show in late 1998, dedicated to the operating system often referred to as “Linux”, the featured speaker was an executive from a prominent software company. He was probably invited on account of his company's decision to “support” that system. Unfortunately, their form of “support” consists of releasing non-free software that works with the system—in other words, using our community as a market but not contributing to it.

He said, “There is no way we will make our product open source, but perhaps we will make it ‘internal’ open source. If we allow our customer support staff to have access to the source code, they could fix bugs for the customers, and we could provide a better product and better service.” (This is not an exact quote, as I did not write his words down, but it gets the gist.)

People in the audience afterward told me, “He just doesn't get the point.” But is that so? Which point did he not get?

He did not miss the point of the Open Source movement. That movement does not say users should have freedom, only that allowing more people to look at the source code and help improve it makes for faster and better development. The executive grasped that point completely; unwilling to carry out that approach in full, users included, he was considering implementing it partially, within the company.

The point that he missed is the point that “open source” was designed not to raise: the point that users deserve freedom.

Spreading the idea of freedom is a big job—it needs your help. That's why we stick to the term “free software” in the GNU Project, so we can help do that job. If you feel that freedom and community are important for their own sake—not just for the convenience they bring—please join us in using the term “free software”.


Joe Barr wrote an article called Live and let license that gives his perspective on this issue.

Lakhani and Wolf's paper on the motivation of free software developers says that a considerable fraction are motivated by the view that software should be free. This was despite the fact that they surveyed the developers on SourceForge, a site that does not support the view that this is an ethical issue.

source: fsf

 

Latest  Post
Linux Links

 

09/02/2008 GMT 1

Wine 0.9.5.5 released

ubuntuland @ 07:01

This is release 0.9.55 of Wine, a free implementation of Windows on Unix.

rss_orange1.png

What's new in this release:
- Direct3D improvements, including driver version emulation.
- Beginnings of support for OLE objects in Richedit.
- Several fixes to the animation control.
- A bunch of fixes for regression test failures.
- Lots of bug fixes.

Because of lags created by using mirrors, this message may reach you
before the release is available at the public sites. The sources will
be available from the following locations:

http://ibiblio.org/pub/linux/system/emulators/wine/wine-0.9.55.tar.bz2
http://prdownloads.sourceforge.net/wine/wine-0.9.55.tar.bz2

Binary packages for various distributions will be available from:

http://www.winehq.org/site/download

You will find documentation on

http://www.winehq.org/site/documentation

You can also get the current source directly from the git or CVS
repositories. Check respectively http://www.winehq.org/site/git or
http://www.winehq.org/site/cvs for details.

If you fix something, please submit a patch; instructions on how to do
this can be found at http://www.winehq.org/site/sending_patches

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

Screenshot

Wine is an Open Source implementation of the Windows API on top of X, OpenGL, and Unix.

Think of Wine as a compatibility layer for running Windows programs. Wine does not require Microsoft Windows, as it is a completely free alternative implementation of the Windows API consisting of 100% non-Microsoft code, however Wine can optionally use native Windows DLLs if they are available. Wine provides both a development toolkit for porting Windows source code to Unix as well as a program loader, allowing many unmodified Windows programs to run on x86-based Unixes, including Linux, FreeBSD, Mac OS X, and Solaris.

More information can be read in the articles Why Wine is so important, and Debunking Wine Myths. If you are wondering how well a particular application works in Wine, please examine the Applications Database. For installation instructions and step-by-step help with running Wine, take a look at the User Guide.

Wine is free software. The licensing terms are the GNU Lesser General Public License.

winehq_top_logo.png

Changes since 0.9.54:

Alexander Nicolaysen Sørnes (1):
shell32: Use LocalFree in CommandLineToArgvW.

Alexandre Julliard (18):
winex11: Abstract the depth->bpp conversion and use it in
X11DRV_DIB_CreateDIBFromPixmap.
winex11: Remove unneeded check on bitmap depth, screen bpp cannot be 15.
shell32: Fix permissions of newly-created directories.
gdi32: Avoid locking in CreateCompatibleBitmap.
gdi32: Get rid of a few more uses of DC_GetDCPtr.
gdi32: Don't hold the GDI lock when calling DC_InitDC.
gdi32: Avoid locking in BITMAP_CopyBitmap.
gdi32: Use a separate critical section for freetype locking instead of
relying on the GDI lock.
gdi32: Get rid of DC_GetDCPtr in font functions.
gdi32: Get rid of DC_GetDCPtr in the GDI object functions.
winex11: Add a critical section for the palette global variables instead
of relying on the GDI lock.
gdi32: Get rid of DC_GetDCPtr in the palette functions.
gdi32: DC_GetDCPtr and DC_ReleaseDCPtr are not longer used.
winex11: Don't erase the desktop window synchronously on resizes to
prevent deadlocks.
winex11: Use the gdi display when initializing the keyboard to avoid
creating a second display connection.
winex11: Only update the virtual screen rect once in xinerama_init to
minimize race conditions.
tests: Add a helper routine to wait for a child process and propagate its
result correctly.
localspl: Avoid sizeof in a trace.

Alistair Leslie-Hughes (7):
msxml3: Validated attribute name.
msxml3: Corrected Entity Reference Test.
msxml3: Correct createElement return value for an invalid type.
kernel32: Add RegisterApplicationRestart stub.
gdiplus: Add GdipSetPenMode stub.
gdiplus: Add GdipSetStringFormatFlags stub.
msxml3: Corrected test text.

Andre Wisplinghoff (1):
winecfg: Enable add button when choosing lib from combobox (Libraries
tabsheet).

Andrew Riedi (2):
user32: Test destroying the cursor of a parent process.
user32: winex11.drv has support for color cursors now.

Andrew Talbot (10):
winemp3.acm: Remove unneeded casts.
wineps.drv: Remove unneeded casts.
winex11.drv: Remove unneeded casts.
winex11.drv: Remove unneeded casts.
wininet: Remove unneeded casts.
winmm: Remove unneeded casts.
wintab32: Remove unneeded cast.
msvfw32: Avoid possible dereference of NULL pointer (Coverity).
wnaspi32: Remove unneeded cast.
ws2_32: Remove unneeded casts.

Andrey Esin (1):
cmd: Additions to Russian translation.

Aric Stewart (1):
gdi32: Child fonts need to be scaled like their parent. With input from
Dmitry Timoshkov.

Bang Jun-young (4):
crypt32: Include wine/port.h for snprintf().
user32: Fix EndMenu() to match the PSDK.
riched20: Include wine/port.h for vsnprintf().
comctl32: Fix invalid syntax.

Christopher Harvey (1):
winex11: Added WGL_BIND_TO_TEXTURE_DEPTH_NV to ConvertAttribWGLtoGLX.

Colin Finck (2):
widl: Support Windows paths in dup_basename and make_token.
widl: Write the TLB file in binary mode, so the line endings won't be
changed.

Detlef Riekenberg (7):
localspl: Initialize pointers in struct PRINTPROVIDOR.
localspl: Implement fpGetPrinterDriverDirectory.
winspool: Use the backend for GetPrinterDriverDirectory.
gdi32: Add stub for GdiInitSpool and GdiGetSpoolMessage.
url: Add a stub for AddMIMEFileTypesPS.
localspl: Implement fpAddPrinterDriverEx.
winspool: Use the backend for AddPrinterDriverEx.

Dmitry Timoshkov (2):
kernel32: LOADPARAMS16->showCmd can be NULL, do not crash in that case.
kernel32: Separate modifier from charset before detecting the charset
codepage.

Eric Pouech (27):
dbghelp: Return the size of each directory instead of passing a pointer to
it.
dbghelp: Fixed the suspend count when creating a minidump in the middle of
an exception.
dbghelp: Removed double assignment of checksum.
dbghelp: Store the PE version information in module block.
winedbg: Implemented the pXX request in gdb proxy.
riched20: Start handling OLE objects inside richedit.
riched20: Handle the zoom in OLE objects.
riched20: Correctly handle the wrapping when graphics are used.
riched20: Invert graphics when they are under the selection.
riched20: Support a couple of paragraphs attributes out of RTF stream
reading.
riched20: Added support for image reading from RTF stream.
riched20: Start implementing object reading out RTF stream.
riched20: Make use of the size info in REOBJECT if present.
dbghelp: Fixed the types we want to load at first.
dbghelp: Added missing basic types for booleans and integers.
dbghelp: Pass the 'details' flags to _fetch_type so that we can simplify
some code around.
dbghelp: Fix mixed up return and this type in MFunction V2.
dbghelp: Added HRESULT as new basic type (and some doc about basic types
ids).
dbghelp: Added support for some V3 fields in structure parsing.
dbghelp: Added support for register v3 in msc.
dbghelp: Added preliminary support for a strange stack variable object.
dbghelp: Added support for labels outside functions (and used it in msc
parsing).
dbghelp: Added basic support for base class information.
dbghelp: Extended the internal enumeration information so that we know the
underlying integral type.
dbghelp: Attempt to cache some basic symbol types for easier and faster
code.
dbghelp: When sending back information about a global symbol, only
demangle the class & field/method name.
dbghelp: Disable the S_PUB_FUNC_XXX msc symbols until we know what they do
(the first guess is wrong anyway).

Francois Gouget (23):
shell32/tests: Fix a couple of copy/paste errors.
shell32: Add some SLDF_XXX values, EXP_PROPERTYSTORAGE, and
EXP_PROPERTYSTORAGE_SIG.
user32: Fix a typo in the StretchDIBits stub name.
winedump: Use the standard SLDF_XXX flag names instead of inventing new
ones. Add the missing flags.
winedump: Track unknown lnk flags and dump them.
winedump: Dump the raw data when finding an unknown block in an lnk file.
winedump: Switch the block dumping code to be block-oriented, rather then
flag oriented, so it is resilient to order changes.
winedump: Add support for dumping SZ_LINK and SPECIAL_FOLDER data blocks.
ddraw/tests: Fix compilation on systems that don't support nameless
unions.
mapi32: Add an API documentation stub to make winapi_check happy.
ntdsapi: Add an API documentation stub to make winapi_check happy.
winex11.drv: Add some API documentation stubs to make winapi_check happy.
msvcrt: __CxxDetectRethrow() and __CxxQueryExceptionSize() are implemented
now so export them.
winapi_check: Update win32.api for acledit.dll, ctapi32.dll and
inetcomm.dll.
winapi_check: Assorted win32.api updates.
winapi_check: Update win32.api for d3dx8.dll.
d3dx8core.h: Remove some extraneous #include directives.
d3dx8: Fix the D3DXMatrixAffineTransformation() prototype.
d3dx8: Make d3dx8core.h C++ compatible.
d3dx8: Add the d3dx8mesh.h header and move the relevant function
declarations there.
d3dx8: Fix the D3DXAssembleShaderFromFileA/W() prototypes.
comctl32/tests: Call InitCommonControlsEx() if available, fall back to
InitCommonControls() for the older controls, and skip the tests altogether for
the newer ones.
riched20: Fix the name of the lpUsedDefChar field of GETTEXTEX.

Gerald Pfeifer (2):
d3d9: Fix the type of three loop variables.
configure: Use GCC's -Wtype-limits if possible.

Hans Leidekker (3):
wininet: Make sure not to overwrite any caller supplied authorization
header.
wininet: Send HTTP/1.1 requests by default.
wininet: Add zero value content length header to POST requests only.

Jacek Caban (28):
urlmon: Added HlinkParseDisplayNameEx implementation.
urlmon: Added MkParseDisplayNameEx tests.
hlink: Call AddRef of correct interface in ExtServUnk_QueryInterface.
hlink.idl: Added more function declarations.
hlink: Added HlinkParseDisplayName implementation.
hlink: Added HlinkParseDisplayName tests.
hlink: Added HlinkResolveMonikerForData implementation.
hlink: Added HlinkResolveMonikerForData tests.
hlink: Added standard comments.
hlink: Don't prefer native version.
urlmon: Added comments about missing MIME filters.
widl: Ignore ATTR_LOCAL in create_msft_typeinfo.
urlmon: Added CopyStgMedium implementation.
urlmon: Fixed tests.
urlmon: Return better error results.
mshtml: Added more about protocol tests.
urlmon: Separate buffer from stream object.
urlmon: Abstract ProtocolStream object.
urlmon: Don't create stgmed_obj for binding to object.
urlmon: Added BINDSTATUS_CACHEFILENAMEAVAILABLE support.
urlmon: Added support for binding to IID_IUnknown storage (cache file).
urlmon: Correctly handle BINDF_NEEDFILE flag in http protocol.
urlmon: Added more protocol tests.
itss: Added BINDF_NEEDFILE test.
urlmon: Added more tests.
mshtml: Update wine_url in nsIURI::SetPath.
urlmon: Added gecko_installer_workaround to url.c tests.
urlmon: Fixed ref count leak.

James Hawkins (16):
kernel32: Factor out the VerifyVersionInfo tests into their own function.
version: Return ERROR_RESOURCE_DATA_NOT_FOUND if the file does not have
version information.
msi: Add tests for using single quotes in an INSERT query.
msi: Implement the MSIMODIFY_ASSIGN action of MsiViewModify for the
streams table.
msi: Add tests for MsiGetFileVersion.
msi: Only convert output strings if the call succeeded.
msi: Translate ERROR_BAD_PATHNAME into ERROR_FILE_NOT_FOUND.
msi: Return ERROR_INVALID_PARAMETER if a string pointer is non-NULL and
the size pointer is NULL.
msi: Return ERROR_FILE_INVALID if the file has no version information.
msi: Leave room for the NULL terminator.
msi: Return the string length even if the string is NULL.
msi: Return ERROR_MORE_DATA if the size is too small.
msi: Add more tests for MsiFormatRecord.
msi: Reimplement MsiFormatRecord.
msi: Fix handling of the NULL separator when writing registry values.
msi: Test using carriage returns in SQL queries and imported tables.

Jens Nestler (1):
kernel32: Don't fail unconditionally in MoveFile for directories with flag
MOVEFILE_REPLACE_EXISTING.

Johan Gardell (1):
user32: Added support for SPI_SETMOUSESPEED in SystemParametersInfoW.

Juan Lang (1):
rsaenh: Merge the encrypting and decrypting states, as encrypting and
decrypting are allowed with the same key.

Kirill K. Smirnov (2):
systray: Properly track errors.
systray: Add support for NIS_HIDDEN flag.

Lars-Ake Fredlund (1):
winex11: Don't create a mapping if X11DRV_PALETTE_VIRTUAL is set.

Lei Zhang (3):
comctl32: Use wine_dbgstr_rect() in traces.
user32: Use wine_dbgstr_rect() in traces.
quartz: Add VideoRendererDefault.

Marcus Meissner (3):
wordpad: Remove condition that never triggers.
atl: Check for NULL.
pdh: Fixed wrong condition.

Michael Stefaniuc (3):
user32: Remove duplicated get_hook_proc() function.
olecli: Remove duplicated typedefs/enums.
msi: Fix "type of 'x' defaults to 'int'" warnings.

Paul Chitescu (1):
ntoskrnl.exe: Implement MmPageEntireDriver and MmResetDriverPaging.

Paul Vriens (4):
include/wintrust.h: Add missing members to CRYPT_PROVIDER_DATA struct
(fixes some wintrust tests on Windows).
wintrust/tests: Use GetModuleHandleA instead of LoadLibraryA.
rpcrt4/tests: Change test for Windows 2003.
rpcrt4/tests: Skip rest of the tests if we fail.

Reece H. Dunn (9):
comctl32: Proper fix redrawing the trackbar background with themes
enabled.
gdiplus: Fix the bezier arc path test on all Windows platforms.
msxml3: Fix the domdoc test failures.
cabinet: Make the fdi tests pass on Vista.
ddraw: Spelling fixes in the d3d test output.
gdi32: Improve the failure reporting in the bitmap tests.
uxtheme: Fix the system tests so they pass on Vista.
comctl32: Vista sends an unidentified message when destroying datetime and
monthcal windows.
user32: Make the listbox tests pass in directories other than
dlls/user32/tests.

Rob Shearman (30):
secur32: Move the detection of NULL credentials from
AcquireCredentialsHandle to InitializeSecurityContext.
secur32: If using cached credentials failed in InitializeSecurityContext
then fail with SEC_E_NO_CREDENTIALS instead of carrying on with a blank
password.
secur32: Try to retrive credentials by using the credential manager to
retrieve credentials saved for the target server in InitializeContextHandleW, if
possible.
secur32: Initialise more pointers in helper to NULL.
oleaut32: Fix big memory leak in xCall.
widl: Don't search for a import file name with a path in the include
directories for compatibility with MIDL.
widl: Output code for initialising and freeing full pointer translation
tables.
mapi32: Add a stub implementation of HrQueryAllRows@24.
ole32: Add a stub implementation of CreatePointerMoniker.
oleaut32: Fix a leak of a typelib object in OLEFontImpl_GetTypeInfo.
oleaut32: Fix a memory leak in the olefont tests.
rpcrt4: Fix some incorrect checks in RPCRT4_Receive.
oleaut32: Fix some reference count leaks in the tmarshal test.
oleaut32: Fix a leak of bmi in OLEPictureImpl_LoadGif.
comctl32: In certain circumstances, native comctl32's animation control
accepts negative start positions for the ACM_PLAY message.
advapi32: Fix the size calculation in StartServiceW.
wine.inf: Make UI effects default to on.
oleaut32: Fix some memory leaks in the safearray tests.
ole32: Add tests for CreatePointerMoniker.
ole32: Add pointer moniker implementation.
wininet: HTTP_Connect should fail if a NULL or empty hostname is passed
in.
rpcrt4: Fix memory leaks in the rpc tests.
comctl32: Get the background colour in ANIMATE_PaintFrame, instead of just
in WM_PAINT.
ntdll: The FileMailslotSetInformation and FileCompletionInformation cases
of NtSetInformationFile don't need the fd.
server: Always try return a named pipe server that is listening from
find_available_server.
ws2_32: Add a FIXME for WS_SIO_GET_EXTENSION_FUNCTION_POINTER in WSAIoctl.
rpcrt4: Fix potential memory leaks in RPCRT4_Receive.
rpcrt4: Fix potential memory leaks on error paths in RPCRT4_io_thread.
comctl32: Don't get the background colour in ANIMATE_PaintFrame as this
can be called inside a critical section.
comctl32: Move the getting of the DC outside of ANIMATE_DrawFrame.

Roderick Colenbrander (5):
wined3d: Make sure to set the color key when it is needed including for
index_in_alpha.
wined3d: Reload the palette on a color key change. This fixes the
ddex4/ddex5 samples from the dx7 sdk.
wined3d: Allow read back of P8 surfaces. This fixes some of the redrawing
issues in Red Alert.
wined3d: Redownload the surface data in case of a palette change. This
fixes a lot of redrawing problems in Red Alert.
wined3d: Upload p8 palette using GL_ALPHA instead of GL_RED.

Stefan Dösinger (30):
wined3d: Beware of texture_rectangle NP2 support in Reset.
wined3d: Update the auto depth stencil buffer size on reset.
wined3d: Unload implicit depth stencil buffers correctly.
wined3d: Destroy FBOs and reset pointers on Reset.
wined3d: Move some UnLoad code to the base texture class.
wined3d: Mark textures dirty on UnLoad.
wined3d: De-Statify depth blit opengl resources.
d3d9: Some drivers allow non-aligned offsets.
wined3d: Make Clear aware of the depth stencil sharing.
wined3d: Update the gl rectangle when adjusting surface sizes.
wined3d: D3DTADDRESS_WRAP on conditional NP2 textures clamps to edge.
wined3d: Some texture transform test corrections.
d3d9/tests: Be less picky about X8L8V8U8 precision.
d3d9/tests: Accept the rejection of non-standard fixed function attrib
types.
wined3d: Correct the srgb reading check.
wined3d: Fix dxtn format check.
wined3d: Move the float format check to the big switch statement.
wined3d: Move vertex buffer vbo creation to PreLoad.
wined3d: Recreate the contexts on _Reset.
wined3d: Restore the stateblock after Reset.
wined3d: Tear down the dummy textures before resetting.
wined3d: Move the highpart of the driver version to the gl structure.
wined3d: Separate OpenGL and driver version.
wined3d: Create VBOs.
ddraw: Some drivers return a refresh rate of 0.
wined3d: Add infrastructure for faking driver versions.
wined3d: Add some ATI cards to the version database.
wined3d: Reject unsupported modes when restting the device.
d3d9: Implement the device lost state.
wined3d: Restore the Window size on reset.

Wine Features

Wine in action

Binary Compatibility

  • Loads Windows 9x/NT/2000/XP, Windows 3.x and DOS programs and libraries
  • Win32 compatible memory layout, exception handling, threads and processes
  • Designed for POSIX compatible operatings systems (eg. Linux and FreeBSD)
  • "bug-for-bug" compatibility with Windows

Graphics

  • X11-based graphics allows remote display to any X terminal
  • X11, TrueType (.ttf/.ttc) and Windows Bitmap (.fon) Fonts
  • DirectX support for games (limited Direct3D support)
  • Support for OpenGL based games and applications
  • Printing via PostScript driver or legacy native Win16 printer drivers
  • Enhanced Metafile (EMF) and Windows Metafile (WMF) driver
  • Desktop-in-a-box or mixable windows
  • Windows MultiMedia (WinMM) layer support with builtin codecs

Allows Windows program to interface with:

  • Sound devices via ALSA, OSS, ARTS, JACK, and libaudio etc
  • Multi-lingual keyboards and CJK input method support via XIM
  • Modems, serial devices
  • Networks (TCP/IP and IPX)
  • ASPI Scanners
  • Windows Tablets via XInput (eg. Wacom)

Wine API

  • Designed for source and binary compatibility with Win32 code
  • Win32 API test suite to ensure compatibility
  • Compilable on a wide range of C compilers
  • Permits mixing of Win32 and POSIX code
  • Permits mixing of ELF (.so) and PE (.dll/.exe) binaries in one address space
  • Win32 compatible header files
  • Automatically generated API documentation
  • Resource compiler
  • Message compiler
  • IDL compiler
  • Extensive Unicode support
  • Internationalization -- Wine supports 16 languages
  • Built-in debugger and configurable trace messages
  • External memory checker support using Valgrind
  • Sample programs

Latest News Post
LinuxLinks
rss_orange1.png
Social Bookmarking
Add to: Mr. Wong Add to: Webnews Add to: Icio Add to: Oneview Add to: Linkarena Add to: Favoriten Add to: Seekxl Add to: Kledy.de Add to: Social Bookmarking Tool Add to: BoniTrust Add to: Power Oldie Add to: Bookmarks.cc Add to: Favit Add to: Newskick Add to: Newsider Add to: Linksilo Add to: Readster Add to: Folkd Add to: Yigg Add to: Digg Add to: Del.icio.us Add to: Reddit Add to: Jumptags Add to: Upchuckr Add to: Simpy Add to: StumbleUpon Add to: Slashdot Add to: Netscape Add to: Furl Add to: Yahoo Add to: Spurl Add to: Google Add to: Blinklist Add to: Blogmarks Add to: Diigo Add to: Technorati Add to: Newsvine Add to: Blinkbits Add to: Ma.Gnolia Add to: Smarking Add to: Netvouz