Skip to content

Commit c8f052f

Browse files
committed
add a design doc.
1 parent 1218f95 commit c8f052f

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

Design.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
## ... Design document
2+
3+
This document attempts to describe in plain language, all the things that the
4+
`...`, dotfile management system should do.
5+
6+
## Historical Outline
7+
8+
The ... sysytem as it exists today is the result of about 8 years of managing
9+
dot files in various contexts.
10+
11+
The rough history of `...` is this:
12+
13+
* 2006: lukec, cdent, ingydotnet and others created a system for sharing
14+
configs at Socialtext called `stconfig`. The main idea was to bring together
15+
a dev teams favorite unix confs into a pair programming environment.
16+
17+
* 2010: ingydotnet creates `...`, an attempt to polish stconfig for general
18+
use.
19+
20+
* 2012: rking does a ton of work on ... and related *-dots repos. Creates
21+
https://github.com/sharpsaw and http://sharpsaw.org (which seems to be down
22+
now).
23+
24+
* 2013: rjbs shows interest, but ... needs more love. ingydotnet writes this
25+
document.
26+
27+
## Components
28+
29+
The main component is https://github.com/sharpsaw/... (forked from
30+
https://github.com/ingydotnet/...). This is the software repo which you install
31+
simply by cloning it into `~/.../`:
32+
33+
(cd; git clone https://github.com/sharpsaw/...)
34+
35+
You need a conf file called: `~/.../conf` which is a YAML file containing an
36+
ordered list of -dots repos (lots of examples of which can be found here:
37+
https://github.com/sharpsaw/). There is a template file called
38+
`.../example.conf` with lots of comments.
39+
40+
The repos are cloned by `...` into `~/.../src/`.
41+
42+
Everytime you `... install`, the old dot files get copied into a timestamp
43+
directory under `~/.../backup/`.
44+
45+
## Current Commands
46+
47+
To start out with a new install, first create your `~/.../conf`, then run:
48+
49+
~/.../... update # clone/update repos (recursively w/ submodules)
50+
~/.../... install # install all new dot files and backup old ones
51+
exec $SHELL # Restart your shell
52+
53+
TODO: finish command list
54+
55+
## Ideas for Moving Forward
56+
57+
It is probably time to rewrite ..., or at least refactor some. Here are some
58+
ideas:
59+
60+
1) We could rewrite ... in Bash. It might make it more accepted, but Perl is
61+
pretty ubiquitous. Will hold off for now. Having it a clone/run install is
62+
better than putting on CPAN imho, as this is targeted at new machines. plenv
63+
is an example of a Perl tool written in Bash.
64+
2) Support plugins for commands.
65+
3) Move from yaml to ini based conf.
66+
4) Move to a git based backup system. This would be a big win imho.
67+
5) Make loop-dots more robust and support more conf types.
68+
6) Make symlinks be the default (maybe only) install_method. From experience,
69+
symlinks are the best method. (vs copy or hardlink).
70+

0 commit comments

Comments
 (0)