diff --git a/.gitattributes b/.gitattributes
index 87000817f..41aa20c96 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,19 +1,19 @@
# End-of-line normalization
* text=auto
-*.cmd text eol=lf
-*.sh text eol=lf
-*.md text eol=lf
-*.json text eol=lf
-*.js text eol=lf
-*.html text eol=lf
-*.css text eol=lf
-*.manifest text eol=lf
-*.rdf text eol=lf
-*.xul text eol=lf
-*.dtd text eol=lf
-*.properties text eol=lf
-*.php text eol=lf
+*.cmd text eol=lf
+*.sh text eol=lf
+*.md text eol=lf
+*.json text eol=lf
+*.js text eol=lf
+*.html text eol=lf
+*.css text eol=lf
+*.manifest text eol=lf
+*.rdf text eol=lf
+*.xul text eol=lf
+*.dtd text eol=lf
+*.properties text eol=lf
+*.php text eol=lf
-*.png binary
-*.gif binary
+*.png binary
+*.gif binary
diff --git a/README.md b/README.md
index 190a5c9cd..43a0cfa9f 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,4 @@
-Wappalyzer
-==========
+# Wappalyzer
[Wappalyzer](http://wappalyzer.com/) is a
[browser extension](http://wappalyzer.com/download) that uncovers the
@@ -11,44 +10,84 @@ technologies used on websites. It detects
[analytics tools](http://wappalyzer.com/categories/analytics) and
[many more](http://wappalyzer.com/applications).
+*Licensed under the [GPL](https://github.com/ElbertF/Wappalyzer/blob/master/LICENSE).*
-Contributing
-------------
+## Contributing
-**Adding a new application**
+### Adding a new application
-* Edit `share/apps.json` and use a validator like http://jsonformatter.curiousconcept.com/ to verify your modification.
-* Add a 16x16 PNG image to `share/images/icons` matching the application name and compressed with a loss-less tools like http://www.smushit.com/ or optipng http://optipng.sourceforge.net/.
+* Edit `share/apps.json` (use a JSON
+ [validator](http://jsonformatter.curiousconcept.com)).
+* Add a 16x16 PNG image to `share/images/icons` matching the application name
+ (use [Smush.it](http://www.smushit.com) or
+ [OptiPNG](http://optipng.sourceforge.net) for compression).
* Provide the URL to the application's website when submitting a pull request.
-Example:
+
+### Adding a new category
+
+Please open an issue to discuss first. Adding a category involves updating `apps.json`,
+preference pages, locales and [wappalyzer.com](http://wappalyzer.com).
+
+
+### Adding a new translation
+
+#### Mozilla Firefox
+
+Copy `drivers/firefox/locale/en-US`.
+
+
+#### Google Chrome
+
+Copy `drivers/chrome/_locales/en`.
+
+
+## apps.json
+
+#### Example
```javascript
"Application Name": {
- cats: [ "1" ],
- headers: { "X-Powered-By": "Application Name" },
- url: ".+\\.application-name\\.com",
- html: "]application-name\\.css",
- meta: { "generator": "Application Name" },
- script: "application-name\\.js",
- env: "ApplicationName",
- implies: [ "PHP" ]
+ "cats": [ 1 ],
+ "headers": { "X-Powered-By": "Application Name" },
+ "url": ".+\\.application-name\\.com",
+ "html": "]application-name\\.css",
+ "meta": { "generator": "Application Name" },
+ "script": "application-name\\.js",
+ "env": "ApplicationName",
+ "implies": [ "PHP" ],
+ "confidence": { "html": 50, "script": 50 }
}
```
+### JSON fields
-Drivers
--------
+field | type | description
+-----------|--------|-----------------------
+cats | array | List of category IDs. See [apps.json](https://github.com/ElbertF/Wappalyzer/blob/master/share/apps.json) for the complete list.
+confidence | object | Indicates less reliable patterns that may cause false positives. The aim is to achieve a combined confidence of 100%. Defaults to 100% for unspecified fields.
+env | string | Global JavaScript variables, e.g. `jQuery`.
+headers | object | HTTP Response headers, e.g. `X-Powered-By`.
+html | string | Full HTML response body.
+implies | array | The presence of one application can imply the presence of another, e.g. Drupal means PHP is also in use.
+url | string | URL of the page, e.g. `http://wordpress.com/index.php`.
+meta | object | HTML meta tags, e.g. `generator`.
+script | string | `src` attribute of HTML script tags, e.g. `jquery.js`.
+
+Except `cats`, all fields are optional.
+
+
+## Drivers
Wappalyzer is multi-platform. The main code lives in the `share/` directory and
platform specific code in `drivers/`. The sections below describe how to set up
a development environment for the various existing drivers.
-To keep files synchronised between drivers, run the `links.sh` script (UNIX-like
-systems only, Windows users can use `links.cmd`.)
+To keep files synchronised between drivers, run `links.sh` (UNIX-like systems)
+or `links.cmd` (Windows).
-**Mozilla Firefox**
+### Mozilla Firefox
* Place a file called `wappalyzer@crunchlabz.com` in the extensions directory in
your [profile folder](http://kb.mozillazine.org/Profile_folder_-_Firefox)
@@ -59,11 +98,7 @@ systems only, Windows users can use `links.cmd`.)
* Ctrl+Shift+J brings up a console for debugging.
-**Google Chrome**
-
-The Chrome version needs some love, if anyone wants to pick it up. It's
-currently not as feature-rich as the Firefox add-on (although partially due to
-API limitations.)
+### Google Chrome
* Navigate to `about:extensions`
* Check "Developer mode"
@@ -71,12 +106,13 @@ API limitations.)
* Select `drivers/chrome/`
-**Bookmarklet**
+### Bookmarklet
-Beta version available for testing at [wappalyzer.com/bookmarklet](http://wappalyzer.com/bookmarklet).
+Beta version available for testing at
+[wappalyzer.com/bookmarklet](http://wappalyzer.com/bookmarklet).
-**HTML**
+### HTML
The HTML driver serves purely as an example. It's a good starting point if you
want to port Wappalyzer to a new platform.
@@ -84,10 +120,11 @@ want to port Wappalyzer to a new platform.
* Navigate to `drivers/html/`
-**PHP**
+### PHP
-The PHP driver requires the [V8js](http://php.net/manual/en/book.v8js.php) class. Installing V8js
-using [PECL](http://pecl.php.net/) on Debian Linux or Ubuntu should be very straight forward:
+The PHP driver requires the [V8js](http://php.net/manual/en/book.v8js.php)
+class. Installing V8js using [PECL](http://pecl.php.net/) on Debian Linux or
+Ubuntu should be very straight forward:
* `# aptitude install php5-dev php-pear libv8-dev`
* `# pecl install channel://pecl.php.net/v8js-0.1.3`
@@ -109,53 +146,29 @@ $detectedApps = $wappalyzer->analyze();
```
-**Mozilla Jetpack**
+### Mozilla Jetpack
Work in progress, experimental. See https://wiki.mozilla.org/Jetpack.
-Unofficial drivers and ports
-----------------------------
+## Unofficial drivers and ports
-**Python**
+### Python
A Python driver by [@ebradbury](https://github.com/ebradbury).
https://github.com/ebradbury/Wappalyzer/tree/master/drivers/python
-**Ruby**
+### Ruby
A Ruby port by [@skroutz](https://github.com/skroutz).
https://github.com/skroutz/wappalyzer-ruby
-Screenshot
-----------
+## Screenshot
Wappalyzer on Firefox:
-
-
-
-License
--------
->Wappalyzer
->
->Copyright © 2012 Elbert Alias and Wappalyzer project contributors
->
->This program is free software: you can redistribute it and/or modify
->it under the terms of the GNU General Public License as published by
->the Free Software Foundation, either version 3 of the License, or
->(at your option) any later version.
->
->This program is distributed in the hope that it will be useful,
->but WITHOUT ANY WARRANTY; without even the implied warranty of
->MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
->GNU General Public License for more details.
->
->You should have received a copy of the GNU General Public License
->along with this program. If not, see