type=page
image_css=rfloatimg
title=Why Apache OpenOffice
notice=https://www.apache.org/licenses/LICENSE-2.0
~~~~~~
## Why should I use Apache OpenOffice?

![Why Apache OpenOffice](/images/AOO_logos/orb.jpg)

Apache OpenOffice is a leading **open-source** **office software suite** for **word processing**, **spreadsheets**, **presentations**, **graphics**, **databases** and more. It is available in **many languages** and works on all **common computers**. It stores all your data in an **international open standard format** and can also read and write files from other common office software packages. It can be downloaded and used completely **free of charge** for **any purpose**.

  - [Great software](why_great.html)

    Apache OpenOffice is the result of over twenty years' software engineering. Designed from the start as a single piece of software, it has a consistency other products cannot match. A completely open development process means that anyone can report bugs, request new features, or enhance the software. The result: Apache OpenOffice does everything you want your office software to do, the way you want it to.

  - [Easy to use](why_easy.html)

    Apache OpenOffice is easy to learn, and if you're already using another office software package, you'll take to OpenOffice straight away. Our world-wide native-language community means that OpenOffice is probably available and supported in your own language. And if you already have files from another office package - OpenOffice will probably read them with no difficulty.

  - [and it's free](why_free.html)
 
    Best of all, Apache OpenOffice can be downloaded and used entirely **free** of any license fees. Like all Apache Software Foundation software, Apache OpenOffice is [free to use](http://www.apache.org/free/). Apache OpenOffice is released under the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0.html). This means you may use it for any purpose - domestic, commercial, educational, public administration. You may install it on as many computers as you like. You may make copies and give them away to family, friends, students, employees - anyone you like.

## Where is Apache OpenOffice currently used?

  - [Governments](why_gov.html "Why Apache OpenOffice for Public Administration")
  - [Education](why_edu.html "Why Apache OpenOffice for Education")
  - [Businesses](why_sme.html "Why Apache OpenOffice for Businesses")
  - [Not for profits](why_nfp.html "Why Apache OpenOffice for Not For Profits")
  - [IT Businesses](why_oem.html "Why Apache OpenOffice for IT businesses")
  - [F/OSS advocates](why_foss.html "Why Apache OpenOffice for Free/Open-Source Systems advocates")
