## Overview
XOWA is an offline Wikipedia application that lets you run Wikipedia on your computer.

![XOWA showing Wikipedia's article on Wikipedia](http://xowa.sourceforge.net/wiki/file_screenshot_wikipedia_xowa.png)

## Features
* Run a complete copy of English Wikipedia from your computer.
* Display 5.0+ million articles in full HTML formatting.
* Show images within an article. Access 4.0+ million images using the offline image databases.
* Set up over 800+ other wikis including: English Wiktionary, English Wikisource, English Wikiquote, English Wikivoyage, Non-English wikis (French Wiktionary, German Wikisource, Dutch Wikivoyage), Wikidata, Wikimedia Commons and many more.
* Update your wiki whenever you want, using Wikimedia's database backups.
* Navigate between offline wikis. Click on "Look up this word in Wiktionary" and instantly view the page in Wiktionary.
* Edit articles to remove vandalism or errors.    
* Install to a flash memory card for portability to other machines.
* Run on Windows, Linux and Mac OS X. (Android Alpha available)
* Run as an HTTP server to browse from Firefox, Chrome or Safari
* View the HTML source for any wiki page.
* Search for any page by title using a Wikipedia-like Search box. Search across wikis as well.
* Browse pages by alphabetical order using Special:AllPages.
* Find a word on a page.
* Access a history of viewed pages.
* Bookmark your favorite pages.
* Preview articles by hovering over links
* Customize any one of over 50 options

## Requirements
XOWA is written in Java and requires 1.7 or above.

## Installation
* Download xowa_app_your_operating_system_name.zip from https://github.com/gnosygnu/xowa/releases/
* Unzip to any folder on your hard drive (or flash memory card)
* Run XOWA
   * On '''Windows''', double-click '''C:\xowa\xowa_64.exe'''
   * On '''Linux''', open a terminal and run <code>sh /home/your_user_name/xowa/xowa_linux_64.sh</code>
   * On '''OS X''', open a terminal and run <code>sh /Users/your_user_name/xowa/xowa_macosx_64.sh</code>

## Development Info
### Dependencies
XOWA has seven dependencies:

* JUnit 4.8.2 (default version with Eclipse)
* [SWT 4.5.1](http://download.eclipse.org/eclipse/downloads/drops4/R-4.5-201506032000/)
* [LuaJ](https://github.com/gnosygnu/luaj_xowa)
* [JTidy](https://github.com/gnosygnu/jtidy_xowa jtidy_xowa.jar)
* [SQLite JDBC](https://bitbucket.org/xerial/sqlite-jdbc/downloads)
* [MySQL JDBC](https://dev.mysql.com/downloads/connector/j/)
* [Postgres JDBC](https://jdbc.postgresql.org/download.html)

### Compilation instructions (ANT command-line)
#### Setup the XOWA app
* Download the latest XOWA app package for your operating system. For example, if you're on a 64-bit Linux system, "xowa_app_linux_64_v1.9.5.1.zip".
* Unzip the XOWA app package to a directory. For the sake of simplicity, these instructions assume this directory is "/xowa/"
* Review your directories. You should have the following:
    * An XOWA jar: "/xowa/xowa_linux_64.jar"
    * An XOWA "/bin/any/" directory with several jar files. For example, "/xowa/bin/any/java/apache/commons-compress-1.5.jar"
    * An XOWA "/bin/linux_64/" directory with an SWT jar: "/xowa/bin/linux_64/swt/swt.jar"

#### Setup the XOWA source
* Download the latest XOWA source archive. For example: "xowa_source_v1.9.5.1.7z"
* Unzip the source to "/xowa/dev". When you're done, you'll have a file called "/xowa/dev/build.xml" as well as others
    * NOTE: if you're not on a Linux 64-bit system, overwrite the swt jar at "/xowa/dev/150_gfui/lib/swt.jar" with the copy from your "/bin/OS" directory. For example, if you're on a 64 bit Windows system, replace "/xowa/dev/150_gfui/lib/swt.jar" with "/bin/windows_64/swt/swt/jar"

#### Run the ant file
* Open up a console, and run "ant -buildfile build.xml -Dplat_name=linux_64"

### IDE instructions (Eclipse)
#### Environment
The '''xowa_source.7z''' was built with Eclipse Indigo. There are no OS dependencies, nor are there dependencies on Eclipse.

#### Setup
* Follow the steps in these two sections from above:
    * Setup the XOWA app
    * Setup the XOWA source
* Launch Eclipse. Choose a workbench folder of "/xowa/dev"
* If the projects don't load, do File -> Import -> Existing Projects Into Workspace
* Select all projects. Do File -> Refresh.
* Right-click on 400_xowa in the Package Explorer. Select Debug As -> Java Application. Select Xowa_main. XOWA should launch.
* Right-click on 400_xowa in the Package Explorer. Select Debug As -> JUnit Test. All tests should pass.

#### Eclipse-specific settings
This section documents specific project customizations that differ from the standard Eclipse defaults.

##### Project properties
Resource -> Text file encoding -> Other -> UTF-8

##### Preferences
These settings are available under Window -> Preferences

* Disable Spelling
    * General -> Editors -> Text Editors -> Spelling
*Ignore Warnings
    * Java -> Compiler -> Errors/Warnings
        * Annotations -> Unhandled token in '@SuppressWarnings'
        * Potential programming problems -> Serializable class without serialVersionUID
        * Generic Types -> Unnecessary generic type operation (In Eclipse Luna: "Unchecked generic type operation")
        * Generic Types -> Usage of a raw type
        * Unnecessary Code -> Unused import

##### Configuration arguments
* Configuration arguments
    * Run -> Debug Configurations -> Arguments
        * <code>--root_dir /xowa/ --show_license n --show_args n</code>

## License
XOWA is released under the AGPLv3 license. See LICENSE.txt for more information.
