From XOWA: the free, open-source, offline wiki application

Personal: Vacation and limited reachability (2017-01-13 17:00 Fri)

I'm going to be out on vacation for about a week and a half. I'll only have limited access to the internet, and won't be able to make any releases.

If there are any issues, please do post to

Otherwise, I'll resume when I return.


Release: NONE (2017-01-08 10:30 Sun)

I'm skipping the release for tonight. There was one regression issue introduced last week: Random not working in HTML databases. However, that can be fixed with an options change:

I'm going to be out on vacation for the next two weeks, so the next possible release is 1-29.

Also, I ran into an issue with 2017-01 English Wikipedia. Unfortunately that will also be postponed till near end of month as well.

Release: v4.0.0.1701 (2017-01-04 21:00 Tue)

The PC version is a major release. It adds a new Option system and includes a lot of related changes.

The Android version has no release.

(Wiki) Publish 2016-12 Italian and Swahili wikis. Also, 2016-12 English Wikipedia

2016-12 Italian and Swahili wikis are up at 2016-12 English Wikipedia was also pushed out earlier this month.

To download these wikis, please check Wiki_setup/Listing or Special:XowaDownloadCentral

(PC) Add new Options system

The major change for this release was the Options system. It was a multi-week effort that overhauled various parts of the system. You can try the new Options systems at the Options page

There were a number of reasons for the change:

  • Android compatible: The previous Options system was not Android compatible. It relied on Wikitext (which XOWA Android doesn't support), and had a very desktop-centric UI design (wide tabstrip; hover tooltips). The new Options system addresses these issues and uses a common codebase for both desktop and Android.
  • Multiple wiki support: The previous Options system used one set of options for all wikis. Individual wikis couldn't have options different from another wiki (actually, they could, but in a very indirect way). The new Options system supports multiple wikis out-of-box, though at current, it's only used for one option (variant choice in Chinese / Serbian wikis)
  • Technical upgrades: The previous Options system was a hodge-podge of Wikitext and XOWA-specific extensions. The new Options systems standardizes data-storage in SQLite, generates pages through one Special extension, uses a good deal of CSS to display HTML, and offers dynamic interaction via AJAX. Overall, it should be a more web-like and pleasant user-experience

Because the scope of the change was so sweeping, there may be a number of issues. If you run into problems, please try the following:

  • user_system.gfs: XOWA tries to convert existing options at /xowa/user/anonymous/app/data/cfg/user_system_cfg.gfs. If you're missing an option, you can try checking there
  • xowa_cfg_os.gfs: XOWA also stores Operating System specific options at /xowa/bin/[OS_NAME]/xowa/cfg/xowa_cfg_os.gfs. The new version now uses a different file: /xowa/user/app/cfg/os.gfs. If you've manually customized options here, you will need to reapply them
  • Missing options: A handful of options were not converted. For more detail, see Change_log

Of course, if you run into issues, please let me know at I'm hoping though that this will be a pleasant, uneventful change.

(PC) Change versioning scheme to semantic versioning

Since the start, XOWA used a date-of-release versioning scheme. For example, version meant the version released in the 3rd year after XOWA's release, in the 12th month and the 2nd week.

XOWA is now adopting a new versioining scheme closer to semantic versioning. Specifically:

  • In the previous scheme, this version would be
  • In the new scheme, this version is

As an overview:

  • The 1st number indicates a major version. For example, 4. This number won't change unless there is a drastically new change, or after there's a lot of significant changes.
  • The 2nd number indicates a minor version. For example, 0. This number will change whenever there is a new significant feature or change.
  • The 3rd number indicates a patch version. For example, 0. This number will change whenever there is a new release.
  • The 4th number indicates a system version. For example, 1701. This number is related to the release date in year / month format: 2017-01.

In terms of upgrade strategies:

  • If you're a casual user, you can wait on upgrading until the major version changes. When "5.0" comes out you should probably get it, as it should be significantly different than the current version. This will probably not come out for a year or more.
  • If you're an active user, you can wait on upgrading until the minor version changes: "4.1", "4.2", "4.3", etc.. Each minor release will have a new significant feature or change. These will probably come out at monthly intervals.
  • If you're a cutting-edge user, you can upgrade whenever a release is made: "4.0.1", "4.0.2", "4.0.3", etc.. Each patch release will have a number of changes and fixes. These will probably come out ever week.

Finally, all releases are considered stable. So, whenever a patch release comes out, it will be promoted to the official download for all new users. If it's safe enough for new users to try, it's definitely safe enough for existing users as well.

(PC) Fix mass parse performance issues when generating English Wikipedia

This was an issue I discovered when generating the 2016-12 English Wikipedia. It takes about 25 hours to dump English Wikipedia on an 8 core machine. Due to recent changes with Embeddable (using XOWA as a MediaWiki parser), this number grew to about 36 hours. In some cases, it even failed with OutOfMemory exceptions.

This build brings the build time back to 25 hours.

Next week: v4.0.1.1701

Release: POSTPONED (2017-01-03 01:30 Tue)

I was planning to do a release tonight, but ran into last-minute issues. I'm going to push for a release tomorrow or possibly next Sunday.



Getting started