Recent changes to this wiki:

Added a comment: matinainance plans
diff --git a/doc/todo/new_maintainer_needed/comment_1_0a4a8e43619d9b65963b49dc298af1a2._comment b/doc/todo/new_maintainer_needed/comment_1_0a4a8e43619d9b65963b49dc298af1a2._comment
new file mode 100644
index 0000000..dfd9676
--- /dev/null
+++ b/doc/todo/new_maintainer_needed/comment_1_0a4a8e43619d9b65963b49dc298af1a2._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="0xloem@0bd8a79a57e4f0dcade8fc81d162c37eae4d6730"
+ nickname="0xloem"
+ avatar="http://cdn.libravatar.org/avatar/b8c087f7c5e6a9358748f0727c077f3b"
+ subject="matinainance plans"
+ date="2021-01-11T10:14:51Z"
+ content="""
+Hi Joey,
+
+Do you think there would be a way to offer community maintenance here?  Like a wiki?
+
+When youtube-dl had its brief dmca takedown, it came out that a lot of people are passionate about e.g. migrating issues off of github, but that it can be hard for us to find each other and work together.  For example, somebody showed off their recent project ganarchy, https://ganarchy.autistic.space/project/385e734a52e13949a7a5c71827f6de920dbfea43/ , a system for showing forks such that the one with most recent activity is hilighted.  Do you have any thoughts near these ideas?
+"""]]

update
diff --git a/doc/todo/new_maintainer_needed.mdwn b/doc/todo/new_maintainer_needed.mdwn
index 1345598..bf17585 100644
--- a/doc/todo/new_maintainer_needed.mdwn
+++ b/doc/todo/new_maintainer_needed.mdwn
@@ -1,4 +1,3 @@
 I am no longer using this, and have not found the time to update it past
 github-0.23 in over a year since newer versions of the library were
-released. I'm not sure it works at all any longer. It needs a new
-maintainer. --[[Joey]]
+released. It needs a new maintainer. --[[Joey]]

bug
diff --git a/doc/todo/rate_limit_exceeded_immediately_on_first_API_request.mdwn b/doc/todo/rate_limit_exceeded_immediately_on_first_API_request.mdwn
new file mode 100644
index 0000000..4f94ebf
--- /dev/null
+++ b/doc/todo/rate_limit_exceeded_immediately_on_first_API_request.mdwn
@@ -0,0 +1,15 @@
+Running github-backup in a fresh clone of a repo for the first time, all
+the top-level API requests fail. It doesn't say why in that case, but I
+think this is a similar case that sheds light on it:
+
+	joey@darkstar:/tmp> github-backup joeyh
+	github-backup: Failed to query github for repos:
+	....
+	(StatusCodeException (Response {responseStatus = Status {statusCode = 403, statusMessage = "rate limit exceeded"}
+
+Setting `GITHUB_OAUTH_TOKEN` before running it probably avoids the problem,
+but I've not tried it. 
+
+This is apparently the API rate limit blocking the first request. It used
+to be that a few hundred or thousand requests were allowed. I don't know
+if this has changed intentionally or what. --[[Joey]]

new maintainer needed
diff --git a/doc/todo/new_maintainer_needed.mdwn b/doc/todo/new_maintainer_needed.mdwn
new file mode 100644
index 0000000..1345598
--- /dev/null
+++ b/doc/todo/new_maintainer_needed.mdwn
@@ -0,0 +1,4 @@
+I am no longer using this, and have not found the time to update it past
+github-0.23 in over a year since newer versions of the library were
+released. I'm not sure it works at all any longer. It needs a new
+maintainer. --[[Joey]]

Removed support for GITHUB_USER/GITHUB_PASSWORD
Since github will soon remove support for http basic auth. Use
GITHUB_OAUTH_TOKEN instead.
This commit was sponsored by Svenne Krap on Patreon.
diff --git a/CHANGELOG b/CHANGELOG
index 75d8297..9411e98 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,10 @@
+github-backup (1.20191220) UNRELEASED; urgency=medium
+
+  * Removed support for GITHUB_USER/GITHUB_PASSWORD since github will soon
+    remove support for http basic auth. Use GITHUB_OAUTH_TOKEN instead.
+
+ -- Joey Hess <id@joeyh.name>  Tue, 21 Jul 2020 23:09:23 -0400
+
 github-backup (1.20191219) unstable; urgency=medium
 
   * Updated to use github-0.23 (0.24 needs larger changes)
diff --git a/Github/GetAuth.hs b/Github/GetAuth.hs
index cca7545..692ca2c 100644
--- a/Github/GetAuth.hs
+++ b/Github/GetAuth.hs
@@ -1,27 +1,30 @@
 module Github.GetAuth where
 
 import Utility.Env
-import Utility.Monad
+import Data.Maybe
+import System.IO
 
+import Common
 import qualified GitHub.Auth as Github
-import Data.Text.Encoding (encodeUtf8)
-import qualified Data.Text as T
 import qualified Data.ByteString.UTF8 as B
 
 getAuth :: IO (Maybe Github.Auth)
-getAuth = getM id
-	[ do
-		user <- getEnv "GITHUB_USER"
-		password <- getEnv "GITHUB_PASSWORD"
-		return $ case (user, password) of
-			(Just u, Just p) -> Just $ 
-				Github.BasicAuth (tobs u) (tobs p)
-			_ -> Nothing
-	, do
-		oauthtoken <- getEnv "GITHUB_OAUTH_TOKEN"
-		return $ case oauthtoken of
-			Just t -> Just $ Github.OAuth (B.fromString t)
-			Nothing -> Nothing
-	]
-  where
-	tobs = encodeUtf8 . T.pack
+getAuth = do
+	oauthtoken <- getEnv "GITHUB_OAUTH_TOKEN"
+	case oauthtoken of
+		Just t -> return $ Just $ Github.OAuth (B.fromString t)
+		Nothing -> do
+			checkDeprecatedVars
+			return Nothing
+
+checkDeprecatedVars :: IO ()
+checkDeprecatedVars = do
+	user <- getEnv "GITHUB_USER"
+	password <- getEnv "GITHUB_PASSWORD"
+	when (isJust user && isJust password) $
+		hPutStrLn stderr $ unwords
+			[ "GITHUB_USER and GITHUB_PASSWORD are no longer"
+			, "supported, because Github is removing that"
+			, "authentication method."
+			, "Set GITHUB_OAUTH_TOKEN instead."
+			]
diff --git a/doc/README.mdwn b/doc/README.mdwn
index 7fd4d11..b5030b1 100644
--- a/doc/README.mdwn
+++ b/doc/README.mdwn
@@ -90,9 +90,9 @@ or even if it just has a lot of forks.
 Bear in mind that this uses the GitHub API; don't run it every 5 minutes.
 GitHub [rate limits](http://developer.github.com/v3/#rate-limiting) the
 API to some small number of requests per hour when used without
-authentication. To avoid this limit, you can set `GITHUB_USER` and
-`GITHUB_PASSWORD` (or `GITHUB_OAUTH_TOKEN` obtained from
-<https://github.com/settings/tokens>) in the environment and
+authentication. To avoid this limit, you can set the environment
+variable `GITHUB_OAUTH_TOKEN` to a token obtained from 
+<https://github.com/settings/tokens> and
 it will log in when making (most) API requests.
 
 Anyway, github-backup *does* do an incremental backup, picking up where it
diff --git a/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn b/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn
index b4107e2..4a3a22c 100644
--- a/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn
+++ b/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn
@@ -33,3 +33,7 @@ The latest email from GitHub says this instead:
 > 
 > Thanks,
 > The GitHub Team
+
+----
+
+Removed the env vars for password auth. [[done]] --[[Joey]]
diff --git a/github-backup.1 b/github-backup.1
index b34206a..d924d93 100644
--- a/github-backup.1
+++ b/github-backup.1
@@ -17,7 +17,6 @@ repositories that user is watching. (Also works to pass
 the name of an organization using GitHub.)
 .PP
 By default it runs without logging in to GitHub. To log in, set
-the GITHUB_USER and GITHUB_PASSWORD environment variables. Or, set
 GITHUB_OAUTH_TOKEN to an oath or personal access token.
 However note that logging in only works around API rate limiting; it
 does not allow private repositories to be downloaded.
diff --git a/gitriddance.1 b/gitriddance.1
index 4608f8e..21a2e3f 100644
--- a/gitriddance.1
+++ b/gitriddance.1
@@ -20,8 +20,7 @@ or can be configured by setting core.gitriddance. For example:
 .IP
 git config core.gitriddance "Please submit patches to http://ikiwiki.info/todo/"
 .PP
-In order for gitriddance to log into GitHub, you need to set 
-the GITHUB_USER and GITHUB_PASSWORD environment variables.
-Or, set GITHUB_OAUTH_TOKEN to an oath or personal access token.
+In order for gitriddance to log into GitHub, you need to set
+GITHUB_OAUTH_TOKEN to an oath or personal access token.
 .SH AUTHOR 
 Joey Hess <id@joeyh.name>

Added a comment
diff --git a/doc/todo/GitHub_deprecated_basic_authentication_using_password/comment_2_824c12b3f3a147e1c8f345a294199b8c._comment b/doc/todo/GitHub_deprecated_basic_authentication_using_password/comment_2_824c12b3f3a147e1c8f345a294199b8c._comment
new file mode 100644
index 0000000..5ccdfd0
--- /dev/null
+++ b/doc/todo/GitHub_deprecated_basic_authentication_using_password/comment_2_824c12b3f3a147e1c8f345a294199b8c._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="pabs3@49c776417680694a0f3295ee80df4edfca300096"
+ nickname="pabs3"
+ avatar="http://cdn.libravatar.org/avatar/3bf5f3b29a3d68ddf11eb1a3d8c5dc65"
+ subject="comment 2"
+ date="2020-07-22T02:09:50Z"
+ content="""
+I have switched to the GITHUB_OAUTH_TOKEN variable and the issue has stopped occurring. I hadn't noticed the variable in the manual page, sorry for the noise. I guess the only thing to do now for this issue is to deprecate and remove support for the GITHUB_USER and GITHUB_PASSWORD environment variables, which seem to be checked by the github-backup codebase rather than the GitHub API Haskell codebase.
+"""]]

linkify
diff --git a/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn b/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn
index ca26d1b..b4107e2 100644
--- a/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn
+++ b/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn
@@ -1,8 +1,6 @@
 After using github-backup recently with my account username and password (to avoid the limits for anonymous users), I got the mails below from GitHub about password authentication being deprecated. It would be nice to be able to continue to authenticate to get the higher API usage limits.
 
-The latest GitHub blog post about this issue is available here:
-
-https://developer.github.com/changes/2020-02-14-deprecating-password-auth/
+The latest GitHub blog post about this issue is available [here](https://developer.github.com/changes/2020-02-14-deprecating-password-auth/).
 
 In it they say that they will disable password authentication in November 2020.
 

uupdate the situation
diff --git a/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn b/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn
index c512a60..ca26d1b 100644
--- a/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn
+++ b/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn
@@ -1,4 +1,12 @@
-After using github-backup recently with my account username and password (to avoid the limits for anonymous users), I got the mail below mail from github about password authentication being deprecated. It would be nice to be able to continue to authenticate to get the higher API usage limits.
+After using github-backup recently with my account username and password (to avoid the limits for anonymous users), I got the mails below from GitHub about password authentication being deprecated. It would be nice to be able to continue to authenticate to get the higher API usage limits.
+
+The latest GitHub blog post about this issue is available here:
+
+https://developer.github.com/changes/2020-02-14-deprecating-password-auth/
+
+In it they say that they will disable password authentication in November 2020.
+
+The first email I got:
 
 > Subject:	[GitHub] Deprecation Notice
 > 
@@ -12,3 +20,18 @@ After using github-backup recently with my account username and password (to avo
 > 
 > Thanks,
 > The GitHub Team
+
+The latest email from GitHub says this instead:
+
+> Subject:	[GitHub] Deprecation Notice
+> 
+> Hi @pabs3,
+> 
+> On July 12th, 2020 at 01:41 (UTC) you used a password to access an endpoint through the GitHub API using github.hs/0.7.4:
+> 
+> https://api.github.com/repositories/120820726/forks
+> 
+> Basic authentication using a password to the API is deprecated and will soon no longer work. Visit https://developer.github.com/changes/2020-02-14-deprecating-password-auth/ for more information around suggested workarounds and removal dates.
+> 
+> Thanks,
+> The GitHub Team

comm
diff --git a/doc/todo/GitHub_deprecated_basic_authentication_using_password/comment_1_82eac378d7e4d0976056885f73d2a98c._comment b/doc/todo/GitHub_deprecated_basic_authentication_using_password/comment_1_82eac378d7e4d0976056885f73d2a98c._comment
new file mode 100644
index 0000000..ff7e64e
--- /dev/null
+++ b/doc/todo/GitHub_deprecated_basic_authentication_using_password/comment_1_82eac378d7e4d0976056885f73d2a98c._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2019-12-19T20:54:36Z"
+ content="""
+Unless this is an OAuth token,  it does not look like the github
+library supports it yet.
+<http://hackage.haskell.org/package/github-0.24/docs/GitHub-Auth.html>
+
+Though there is the generic setAuthRequest which could probably be used to
+implement it, it doesn't seem right to put the code in github-backup.
+"""]]

GitHub deprecated basic auth
diff --git a/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn b/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn
new file mode 100644
index 0000000..c512a60
--- /dev/null
+++ b/doc/todo/GitHub_deprecated_basic_authentication_using_password.mdwn
@@ -0,0 +1,14 @@
+After using github-backup recently with my account username and password (to avoid the limits for anonymous users), I got the mail below mail from github about password authentication being deprecated. It would be nice to be able to continue to authenticate to get the higher API usage limits.
+
+> Subject:	[GitHub] Deprecation Notice
+> 
+> Hi @pabs3,
+> 
+> You recently used a password to access an endpoint through the GitHub API using github.hs/0.7.4. We will deprecate basic authentication using password to this endpoint soon:
+> 
+> https://api.github.com/repositories/105323641/milestones
+> 
+> We recommend using a personal access token (PAT) with the appropriate scope to access this endpoint instead. Visit https://github.com/settings/tokens for more information.
+> 
+> Thanks,
+> The GitHub Team

having trouble with tor
diff --git a/doc/forum/tor_support.mdwn b/doc/forum/tor_support.mdwn
new file mode 100644
index 0000000..ddc99ad
--- /dev/null
+++ b/doc/forum/tor_support.mdwn
@@ -0,0 +1,34 @@
+I am having trouble running github-backup under tor. A normal run works like this:
+
+    $ github-backup --no-forks anarcat
+    New repository: alabaster
+    Clonage dans 'alabaster'...
+    remote: Enumerating objects: 13, done.
+    remote: Counting objects: 100% (13/13), done.
+    remote: Compressing objects: 100% (11/11), done.
+    remote: Total 1572 (delta 2), reused 11 (delta 2), pack-reused 1559
+    Réception d'objets: 100% (1572/1572), 508.50 KiB | 2.12 MiB/s, fait.
+    Résolution des deltas: 100% (929/929), fait.
+    [...]
+
+But running under tor (with [torsocks](https://github.com/dgoulet/torsocks)) hangs forever:
+
+    $ torsocks github-backup --no-forks anarcat
+    [blank, hangs forever]
+
+`strace` shows the process is looping over this:
+
+    recvfrom(3, "", 2, 0, NULL, NULL)       = 0
+    select(4, [3], NULL, NULL, NULL)        = 1 (in [3])
+
+file descriptor `3` is this, according to lsof:
+
+    github-ba 18134 anarcat    3u  IPv4 162905      0t0     TCP localhost:35828->localhost:9050 (CLOSE_WAIT)
+
+... that's the local SOCKS connexion over to the tor daemon that
+`torsocks` reroutes the traffic to, with `LD_PRELOAD`, which I suspect
+is playing badly with the Haskell stack behind `github-backup`.
+
+So I understand this might be a compatibility issue - maybe the best
+would be to add SOCKS proxy support to github-backup? Not sure how
+best to solve this... --[[anarcat]]

update
diff --git a/doc/README.mdwn b/doc/README.mdwn
index dc60b99..7fd4d11 100644
--- a/doc/README.mdwn
+++ b/doc/README.mdwn
@@ -38,9 +38,9 @@ making packages of github-backup.
 
 There are a couple of reasons to want to back this stuff up:
 
-* In case something happens to GitHub. More generally because
-  keeping your data in the cloud *and* relying on the cloud to
-  back it up is foolish.
+* In case something happens to GitHub. (Some may argue that this has
+  already happened.) More generally because keeping your data in the
+  cloud *and* relying on the cloud to back it up is foolish.
 
 * In case someone takes down a repository that you were interested in.
   If you run github-backup with your username, it will back up all 

mention packages
diff --git a/doc/README.mdwn b/doc/README.mdwn
index ad44b88..dc60b99 100644
--- a/doc/README.mdwn
+++ b/doc/README.mdwn
@@ -5,7 +5,12 @@ pull requests, watchers, and stars.
 
 ## Installation
 
-First install Haskell's [stack](http://haskellstack.org/) tool.
+Several distributions include packages of github-backup, for example
+on Debian and Debian derived distributions it can easily be installed
+with `sudo apt-get install github-backup`.
+
+To build it from source, first install Haskell's
+[stack](http://haskellstack.org/) tool.
 For example, on a Debian system:
 
 	sudo apt-get install haskell-stack

diff --git a/doc/forum/Error_when_running___34__stack_install__34__.mdwn b/doc/forum/Error_when_running___34__stack_install__34__.mdwn
index 4ca0a1d..ccccd8f 100644
--- a/doc/forum/Error_when_running___34__stack_install__34__.mdwn
+++ b/doc/forum/Error_when_running___34__stack_install__34__.mdwn
@@ -6,3 +6,8 @@ Unable to parse cabal file: NoParse "build-tools" 91
 
 I'm not really familiar with Haskell, and I didn't find anything by searching DuckDuckGo for the error message.
 Any ideas how I can fix this?
+
+---
+
+Update:
+I used `sudo apt-get install github-backup` and it installed with no problems. :)

respinse
diff --git a/doc/forum/Error_when_running___34__stack_install__34__/comment_1_32eb9162e2d1d0a571540c971bf0238e._comment b/doc/forum/Error_when_running___34__stack_install__34__/comment_1_32eb9162e2d1d0a571540c971bf0238e._comment
new file mode 100644
index 0000000..1bd1c3e
--- /dev/null
+++ b/doc/forum/Error_when_running___34__stack_install__34__/comment_1_32eb9162e2d1d0a571540c971bf0238e._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2018-04-10T16:29:08Z"
+ content="""
+I think this error comes from the Cabal library, you probably need to
+upgrade the version of stack you're using to a newer one. (stack
+upgrade)
+"""]]

diff --git a/doc/forum/Error_when_running___34__stack_install__34__.mdwn b/doc/forum/Error_when_running___34__stack_install__34__.mdwn
new file mode 100644
index 0000000..4ca0a1d
--- /dev/null
+++ b/doc/forum/Error_when_running___34__stack_install__34__.mdwn
@@ -0,0 +1,8 @@
+When I run "stack install", I get the following message:
+
+```
+Unable to parse cabal file: NoParse "build-tools" 91
+```
+
+I'm not really familiar with Haskell, and I didn't find anything by searching DuckDuckGo for the error message.
+Any ideas how I can fix this?

caps
diff --git a/doc/index.mdwn b/doc/index.mdwn
index ab7d521..d35e59d 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -7,7 +7,7 @@ See the [[README]] for installation and usage instructions.
 
 [[!sidebar content="""
 [[README]]  
-[[news]]  
-[[todo]]  
-[[forum]]  
+[[News]]  
+[[Todo]]  
+[[Forum]]  
 """]]

add a forum
diff --git a/doc/forum.mdwn b/doc/forum.mdwn
new file mode 100644
index 0000000..106b6c9
--- /dev/null
+++ b/doc/forum.mdwn
@@ -0,0 +1,4 @@
+This is a place to discuss using github-backup, share tips and tricks, etc.
+If you need help, advice, or anything, post about it here.
+
+[[!inline pages="forum/* and !*/Discussion" archive=yes rootpage=forum postformtext="Add a new thread titled:"]]
diff --git a/doc/index.mdwn b/doc/index.mdwn
index c50ad94..ab7d521 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -9,4 +9,5 @@ See the [[README]] for installation and usage instructions.
 [[README]]  
 [[news]]  
 [[todo]]  
+[[forum]]  
 """]]

diff --git a/doc/index/discussion.mdwn b/doc/index/discussion.mdwn
index 106b6ef..fecd2d4 100644
--- a/doc/index/discussion.mdwn
+++ b/doc/index/discussion.mdwn
@@ -2,5 +2,7 @@ Hi,
 
 is it possible to include submodules in a repo-backup? I am trying to backup the repo supercollider, which makes heavy use of submodules.
 
+A second though: I backup an entire oranization with --no-forks, but somehow this doesn't work as expected. For some of the repos attempts are still made to backup forks too?
+
 Thanks
 Rainer

diff --git a/doc/todo/exclude_certain_repositories.mdwn b/doc/todo/exclude_certain_repositories.mdwn
new file mode 100644
index 0000000..c93a822
--- /dev/null
+++ b/doc/todo/exclude_certain_repositories.mdwn
@@ -0,0 +1 @@
+I'd like to suggest a configuration option be added to github-backup to allow for the exclusion of certain repositories. https://github.com/githubschool/open-enrollment-classes-introduction-to-github includes hundreds of forks/branches, and I'd rather not have them downloaded when running "github-backup tomhoover". At one time, I contributed to https://github.com/githubschool/open-enrollment-classes-introduction-to-github; however, it is neither "watched" nor "starred" at this time. 

diff --git a/doc/index/discussion.mdwn b/doc/index/discussion.mdwn
new file mode 100644
index 0000000..106b6ef
--- /dev/null
+++ b/doc/index/discussion.mdwn
@@ -0,0 +1,6 @@
+Hi,
+
+is it possible to include submodules in a repo-backup? I am trying to backup the repo supercollider, which makes heavy use of submodules.
+
+Thanks
+Rainer

remove install page accidentially copied from etckeeper
Nothing linked to this
diff --git a/doc/install.mdwn b/doc/install.mdwn
deleted file mode 100644
index 346082c..0000000
--- a/doc/install.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-etckeeper is available in git at `git://git.joeyh.name/etckeeper`, or
-[in gitweb](http://git.joeyh.name/?p=etckeeper.git). 
-
-It's packaged in Debian, Ubuntu, Fedora, etc.
-
-Or, you can install it by hand. Before running 'make install', you
-should edit etckeeper.conf and make sure it configured appropriately
-for your distribution.
-
-Distribution packagers may find it more convenient to set CONFFILE to point
-to a different etckeeper.conf that is preconfigured for your distribution.

better install instructions
diff --git a/doc/README.mdwn b/doc/README.mdwn
index 2367a7c..ad44b88 100644
--- a/doc/README.mdwn
+++ b/doc/README.mdwn
@@ -10,8 +10,10 @@ For example, on a Debian system:
 
 	sudo apt-get install haskell-stack
 
-Then to build and install github-backup, clone it, cd inside, and run:
+Then to build and install github-backup:
 
+	git clone https://git.joeyh.name/git/github-backup.git
+	cd github-backup
 	stack install
 
 There is also a Makefile, which uses cabal to build, and installs

new website
diff --git a/README.md b/README.md
deleted file mode 100644
index 2367a7c..0000000
--- a/README.md
+++ /dev/null
@@ -1,101 +0,0 @@
-github-backup is a simple tool you run in a git repository you cloned from
-GitHub. It backs up everything GitHub publishes about the repository,
-including branches, tags, other forks, issues, comments, wikis, milestones,
-pull requests, watchers, and stars.
-
-## Installation
-
-First install Haskell's [stack](http://haskellstack.org/) tool.
-For example, on a Debian system:
-
-	sudo apt-get install haskell-stack
-
-Then to build and install github-backup, clone it, cd inside, and run:
-
-	stack install
-
-There is also a Makefile, which uses cabal to build, and installs
-a man page, bash completion file, etc. This is recommended for use when
-making packages of github-backup.
-
-## Use
-
-  Run `github-backup` with no parameters, inside a git repository cloned
-  from GitHub to back up that repository.
-
-  Or, if you have a GitHub account, run `github-backup username`
-  to clone and back up your account's repositories, as well
-  as the repositories you're watching and have starred.
-
-## Why backup GitHub repositories
-
-There are a couple of reasons to want to back this stuff up:
-
-* In case something happens to GitHub. More generally because
-  keeping your data in the cloud *and* relying on the cloud to
-  back it up is foolish.
-
-* In case someone takes down a repository that you were interested in.
-  If you run github-backup with your username, it will back up all 
-  the repositories you have watched and starred.
-
-* So you can keep working on your repository while on a plane, or
-  on a remote beach or mountaintop. Just like Linus intended.
-
-## What to expect
-
-Each time you run github-backup, it will find any new forks on GitHub. It
-will add remotes to your repository for the forks, using names like
-`github_torvalds_subsurface`. It will fetch from every fork.
-
-It downloads metadata from each fork. This is stored
-into a branch named "github". Each fork gets a directory in there,
-like `torvalds_subsurface`. Inside the directory there will be some
-files, like `torvalds_subsurface/watchers`. There may be further
-directories, like for comments: `torvalds_subsurface/comments/1`.
-
-You can follow the commits to the github branch to see what information
-changed on GitHub over time.
-
-The format of the files in the github branch is currently Haskell
-serialized data types. This is plain text, and readable, if you squint.
-
-## Limitations
-
-github-backup is repository-focused. It does not try to back up other
-information from GitHub. In particular, social network stuff, like
-users who are following you, is not backed up.
-
-github-backup does not log into GitHub, so it cannot backup private
-repositories.
-
-Notes added to commits and lines of code don't get backed up yet.
-There is only recently API support for this.
-
-The labels that can be added to issues and milestones are not backed up.
-Neither are the hooks. They could be, but don't seem important
-enough for the extra work involved. Yell if you need them.
-
-github-backup re-downloads all issues, comments, and so on
-each time it's run. This may be slow if your repo has a lot of them,
-or even if it just has a lot of forks.
-
-Bear in mind that this uses the GitHub API; don't run it every 5 minutes.
-GitHub [rate limits](http://developer.github.com/v3/#rate-limiting) the
-API to some small number of requests per hour when used without
-authentication. To avoid this limit, you can set `GITHUB_USER` and
-`GITHUB_PASSWORD` (or `GITHUB_OAUTH_TOKEN` obtained from
-<https://github.com/settings/tokens>) in the environment and
-it will log in when making (most) API requests.
-
-Anyway, github-backup *does* do an incremental backup, picking up where it
-left off, so will complete the backup eventually even if it's rate limited.
-
-## Author
-
-github-backup was written by Joey Hess <id@joeyh.name>
-
-It is made possible thanks to:
-
-* Mike Burns's [haskell github library](http://hackage.haskell.org/package/github)
-* GitHub, for providing an API exposing this data. 
diff --git a/README.md b/README.md
new file mode 120000
index 0000000..75370e2
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+doc/README.mdwn
\ No newline at end of file
diff --git a/doc/README.mdwn b/doc/README.mdwn
new file mode 100644
index 0000000..2367a7c
--- /dev/null
+++ b/doc/README.mdwn
@@ -0,0 +1,101 @@
+github-backup is a simple tool you run in a git repository you cloned from
+GitHub. It backs up everything GitHub publishes about the repository,
+including branches, tags, other forks, issues, comments, wikis, milestones,
+pull requests, watchers, and stars.
+
+## Installation
+
+First install Haskell's [stack](http://haskellstack.org/) tool.
+For example, on a Debian system:
+
+	sudo apt-get install haskell-stack
+
+Then to build and install github-backup, clone it, cd inside, and run:
+
+	stack install
+
+There is also a Makefile, which uses cabal to build, and installs
+a man page, bash completion file, etc. This is recommended for use when
+making packages of github-backup.
+
+## Use
+
+  Run `github-backup` with no parameters, inside a git repository cloned
+  from GitHub to back up that repository.
+
+  Or, if you have a GitHub account, run `github-backup username`
+  to clone and back up your account's repositories, as well
+  as the repositories you're watching and have starred.
+
+## Why backup GitHub repositories
+
+There are a couple of reasons to want to back this stuff up:
+
+* In case something happens to GitHub. More generally because
+  keeping your data in the cloud *and* relying on the cloud to
+  back it up is foolish.
+
+* In case someone takes down a repository that you were interested in.
+  If you run github-backup with your username, it will back up all 
+  the repositories you have watched and starred.
+
+* So you can keep working on your repository while on a plane, or
+  on a remote beach or mountaintop. Just like Linus intended.
+
+## What to expect
+
+Each time you run github-backup, it will find any new forks on GitHub. It
+will add remotes to your repository for the forks, using names like
+`github_torvalds_subsurface`. It will fetch from every fork.
+
+It downloads metadata from each fork. This is stored
+into a branch named "github". Each fork gets a directory in there,
+like `torvalds_subsurface`. Inside the directory there will be some
+files, like `torvalds_subsurface/watchers`. There may be further
+directories, like for comments: `torvalds_subsurface/comments/1`.
+
+You can follow the commits to the github branch to see what information
+changed on GitHub over time.
+
+The format of the files in the github branch is currently Haskell
+serialized data types. This is plain text, and readable, if you squint.
+
+## Limitations
+
+github-backup is repository-focused. It does not try to back up other
+information from GitHub. In particular, social network stuff, like
+users who are following you, is not backed up.
+
+github-backup does not log into GitHub, so it cannot backup private
+repositories.
+
+Notes added to commits and lines of code don't get backed up yet.
+There is only recently API support for this.
+
+The labels that can be added to issues and milestones are not backed up.
+Neither are the hooks. They could be, but don't seem important
+enough for the extra work involved. Yell if you need them.
+
+github-backup re-downloads all issues, comments, and so on

(Diff truncated)