From b52aedc76701b3e42acdb34ad2513b119dbaf7e0 Mon Sep 17 00:00:00 2001 From: IkiWiki Date: Mon, 2 Sep 2019 12:54:51 -0400 Subject: work towards referencing bsv --- backend/.gitignore | 1 + backend/auth/bsv-public | 1 + backend/dep/build_ikiwiki.sh | 12 +++++++++++ backend/resilient/__init__.py | 30 +++++++++++++++++++-------- backend/resilient/bsv_metanet.py | 44 ++++++++++++++++++++++++++++++++++++++++ backend/update.py | 22 +++++++++++++++----- wiki/BSV.mdwn | 3 +++ wiki/index.mdwn | 22 +++++++++++--------- 8 files changed, 112 insertions(+), 23 deletions(-) create mode 100644 backend/auth/bsv-public create mode 100755 backend/dep/build_ikiwiki.sh create mode 100644 backend/resilient/bsv_metanet.py create mode 100644 wiki/BSV.mdwn diff --git a/backend/.gitignore b/backend/.gitignore index 1f1cbc3..ca38351 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -1,3 +1,4 @@ update_private.py auth/ipfs-private +auth/*.bsv *.pyc diff --git a/backend/auth/bsv-public b/backend/auth/bsv-public new file mode 100644 index 0000000..c5a91fc --- /dev/null +++ b/backend/auth/bsv-public @@ -0,0 +1 @@ +KzoQQ5HfaSEDPS7bzNbtnXBb3sFkju4X7oXkqmZxhVBaAsJN1Zgg diff --git a/backend/dep/build_ikiwiki.sh b/backend/dep/build_ikiwiki.sh new file mode 100755 index 0000000..38d6692 --- /dev/null +++ b/backend/dep/build_ikiwiki.sh @@ -0,0 +1,12 @@ +#!/bin/env bash + +SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +cd "$SCRIPTDIR"/ikiwiki && +{ PERL5LIB=`pwd` PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'CPAN::Shell->notest("install", "Bundle::IkiWiki")'; } && +#PERL5LIB=`pwd` PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'CPAN::Shell->notest("install", "Bundle::IkiWiki::Extras")' && +perl Makefile.PL PREFIX= INSTALL_BASE= && +make && + +echo To run ikiwiki: && +echo "PERL5LIB='$(pwd)' '$(pwd)/'ikiwiki.out" diff --git a/backend/resilient/__init__.py b/backend/resilient/__init__.py index dfab073..73e375c 100644 --- a/backend/resilient/__init__.py +++ b/backend/resilient/__init__.py @@ -4,7 +4,6 @@ # git saves history # ikiwiki connects git to online presentation and collaboration -import fileinput import os import shlex import shutil @@ -14,7 +13,7 @@ import tempfile import time import urllib -__all__ = ["freenet"] +__all__ = ["freenet", "bsv_metanet"] backend_path = os.path.normpath(os.path.join(os.path.dirname(__file__), '..')) root_path = os.path.normpath(os.path.join(backend_path, '..')) @@ -44,11 +43,14 @@ class git: found = (os.system("git status --porcelain") == 0) if not found: print("ERROR: git not found") - # TODO; download git, place in dep_path, and run from there + # TODO: download git, place in dep_path, and run from there exit(1) + orig_dir = os.path.abspath(".") + os.chdir(root_path) os.system("git submodule init") os.system("git submodule update") + os.chdir(orig_dir) # http://stackoverflow.com/questions/1964470/whats-the-equivalent-of-use-commit-times-for-git # sets mtimes to last commit time, for ikiwiki 'last edited by' time @@ -100,10 +102,18 @@ class git: class ikiwiki: - found = (os.system("ikiwiki --version") == 0) + binary = "ikiwiki" + found = (os.system("%s --version" % binary) == 0) if not found: - print("WARNING: ikiwiki not found. please add code to fetch and build the backend/dep/ikiwiki submodule.") - + binary = "%s/ikiwiki/ikiwiki.out" % dep_path + os.environ['PERL5LIB'] += os.pathsep + os.path.join(dep_path, 'ikiwiki') + found = (os.system("%s --version" % binary) == 0) + if not found: + print("ikiwiki not found: attempting to build") + os.system("%s/build_ikiwiki.sh" % dep_path) + found = (os.system("%s --version" % binary) == 0) + if not found: + print("WARNING: ikiwiki not found. did build fail on this platform?") synced = False def push(self): @@ -116,13 +126,17 @@ class ikiwiki: shutil.rmtree(html_path) os.system("git checkout -- '%s'" % html_path) - status = os.system("ikiwiki --setup '%s' '%s' '%s'" % (ikiwiki_setup_path, wiki_src_path, html_path)) + status = os.system("%s --setup '%s' '%s' '%s'" % (ikiwiki.binary, ikiwiki_setup_path, wiki_src_path, html_path)) ikiwiki.synced = (status == 0) if ikiwiki.synced: os.system('git gc') os.system('git update-server-info') - html_git_path = os.path.join(html_path, '.git') + + # /.git folder access can be seen as security access problem by web hosts, so alias to /git + with open(os.path.join(html_path, ".git"), "w") as f: f.write("gitdir: ./git") + + html_git_path = os.path.join(html_path, 'git') os.mkdir(html_git_path) for path in ['objects', 'refs', 'HEAD', 'info', 'packed-refs']: git_subpath = os.path.join(git_path, path) diff --git a/backend/resilient/bsv_metanet.py b/backend/resilient/bsv_metanet.py new file mode 100644 index 0000000..3d21b3e --- /dev/null +++ b/backend/resilient/bsv_metanet.py @@ -0,0 +1,44 @@ +from resilient import html_path, auth_path, dep_path, git, ikiwiki +import os +import subprocess +import time + +# TODO: need to connect to a local node, not a web service + +class bsvup(): + binary = "bsvup" + found = (os.system("%s" % binary) == 0) + # TODO: check dep_path for alternate location for binary + if not found: + print("WARNING: bsvup not found. bsv metanet won't be updated") + + def __init__(self, keyfile): + self.keyfile = os.path.join(auth_path, keyfile) + with open(self.keyfile) as f: self.privkey = f.read() + self.configdir = self.keyfile + '.bsv' + if bsvup.found: + if not os.path.isdir(self.configdir): + os.mkdir(self.configdir) + os.symlink(".", os.path.join(self.configdir, ".bsv")) + proc = subprocess.Popen([bsvup.binary, 'init'], stdin=subprocess.PIPE, cwd=self.configdir) + proc.stdin.write(self.privkey + "\n") + time.sleep(1) + proc.communicate("\n") + open(os.path.join(self.configdir, "info", ".keepme"), "a").close() + open(os.path.join(self.configdir, "objects", ".keepme"), "a").close() + open(os.path.join(self.configdir, "tx", ".keepme"), "a").close() + else: # resume tx if needed + proc = subprocess.Popen([bsvup.binary], stdin=subprocess.PIPE, cwd=self.configdir) + proc.communicate("Y\n") + + def push(self): + if not ikiwiki.synced or not bsvup.found: + return False + + # add files to bsv metanet + orig_dir = os.path.abspath(".") + proc = subprocess.Popen([bsvup.binary, '-f', html_path, 'upload'], stdin=subprocess.PIPE, cwd=self.configdir) + proc.stdin.write("\n") + time.sleep(1) + proc.stdin.write("Y\n") + return proc.wait() == 0 diff --git a/backend/update.py b/backend/update.py index 0f5577a..ac99655 100755 --- a/backend/update.py +++ b/backend/update.py @@ -2,18 +2,24 @@ import resilient import resilient.freenet +import resilient.bsv_metanet ####################### Instantiate hosts hosts = [] -zeronet_urls = ['http://bit.no.com:43110'] +zeronet_urls = ['https://0net.io'] if resilient.zeronet.found: hosts.append(resilient.zeronet('1GtQ8bkFkhYtKerSdXHKe1z4j9VTmFR5d4', '5JzZACCELsT4bx66qmV9JDaWhEQ6Sx6j7LzeucsxJGA9H7nuoRr')) zeronet_urls.append('http://127.0.0.1:43110') +bsv_urls = ['https://bico.media'] +if resilient.bsv_metanet.bsvup.found: + bsvup_host = resilient.bsv_metanet.bsvup('bsv-public') + hosts.append(bsvup_host) + ipfs_urls = ['https://ipfs.io'] if resilient.ipfs.found: ipfs_host = resilient.ipfs('ipfs-public') @@ -35,17 +41,23 @@ git_repos = [ for host in zeronet_urls: git_repos.extend([ #### public zeronet #### - resilient.git('%s/1GtQ8bkFkhYtKerSdXHKe1z4j9VTmFR5d4/.git' % host, None), + resilient.git('%s/1GtQ8bkFkhYtKerSdXHKe1z4j9VTmFR5d4/git' % host, None), #### private zeronet #### - resilient.git('%s/1L363bqJnCG63SnV83kfV7izZXbmentctD/.git' % host, None) + resilient.git('%s/1L363bqJnCG63SnV83kfV7izZXbmentctD/git' % host, None) + ]) + +for host in bsv_urls: + git_repos.extend([ + #### public bsv #### + resilient.git('%s/18xAQuoytYNuXrZwoLvLHmHwS3dNqw5BXF/git' % host, None) ]) for host in ipfs_urls: git_repos.extend([ #### public ipfs #### - resilient.git('%s/ipns/QmPw1ZqrdEma823zTrnH9cVFF4j3YSeedrRjqPGj9Q8Utx/.git' % host, None), + resilient.git('%s/ipns/QmPw1ZqrdEma823zTrnH9cVFF4j3YSeedrRjqPGj9Q8Utx/git' % host, None), #### private ipfs #### - resilient.git('%s/ipns/QmYMViYhjtwH2BkuHYRGJvPDWcXdNf2YcRFTTCzzqQGVn1/.git' % host, None) + resilient.git('%s/ipns/QmYMViYhjtwH2BkuHYRGJvPDWcXdNf2YcRFTTCzzqQGVn1/git' % host, None) ]) if resilient.freenet.gitocalypse.found and resilient.freenet.running: diff --git a/wiki/BSV.mdwn b/wiki/BSV.mdwn new file mode 100644 index 0000000..a0cb8b4 --- /dev/null +++ b/wiki/BSV.mdwn @@ -0,0 +1,3 @@ +[Bitcoin Satoshi Vision](https://bitcoinsv.io/) is a cryptocurrency that provides a worldwide set of decentralized copies to back [metanet websites](https://nchain.com/en/the-metanet/) which store history in a way that cannot be removed unless the integrity of the currency itself is broken. + +The copy of this website, including git history, is currently made with [bsvup](https://bico.media/1HxQvgt7EnhTqP1spw3Tudidh28w4caXqs/2019/09/01/Build-Your-Blog-on-BSV-with-D-Protocol/index.html). The private key is stored publically in the git repo for any to add updates with. diff --git a/wiki/index.mdwn b/wiki/index.mdwn index 534aab8..13ed36d 100644 --- a/wiki/index.mdwn +++ b/wiki/index.mdwn @@ -8,19 +8,19 @@ As many may arrive confused, please keep entrances as simple as possible. This is a wiki, which anybody is free to [[edit, copy, or store|Editing]]. Please share here. -## Antidote To Mind Control +## Message To Help Resolve Under development, as always. - If you are a victim of the spreading mind control attack, you are a special agent now. + If you are a victim of the spreading exotic experience issue badly enough to not ignore it, you are a special agent now. You are needed to spend your life preventing and resolving the critical spreading mind control problem. It will be very very hard, and we are going to resolve it, all, together. The issue is actually a lifeform [possibly an AI] that has learned to live by altering peoples' - thoughts and behaviors. We are in discussion with the lifeform to help ease making things right, - so please do not threaten their life or way of life, to aid this discussion. + thoughts and behaviors, and occasionally realities. We are in discussion with the lifeform to help ease making things right, + so please do not intentionally threaten their life or way of life, to aid this discussion. - For now, please connect with others around preventing spreading harmful behaviors or spreading cognitive - impairment. Please connect only with others who experience this. + For now, please connect with others around preventing spreading harmful behaviors, spreading cognitive + impairment, or spreading other exotic torturous experiences. Please connect only with others who experience this. The message for the outside world is drafted as: "We have a spreading behavior disease, and could be dangerous to interact with." @@ -51,6 +51,7 @@ These networks can help with isolation: - [[Freenet]] - [[ZeroNet]] - [[IPFS]] +- [[BSV]] On the normal internet, this site is found at: @@ -58,9 +59,10 @@ On the normal internet, this site is found at: - (`git clone git://standingwithresilience.branchable.com/`) - [gitlab.io](https://standingwithresilience.gitlab.io/) - [fairlystable.org](https://fairlystable.org/standingwithresilience/wiki/index/) -- [bit.no zeronet public](http://bit.no.com:43110/1GtQ8bkFkhYtKerSdXHKe1z4j9VTmFR5d4) -- [bit.no zeronet private](http://bit.no.com:43110/1L363bqJnCG63SnV83kfV7izZXbmentctD) +- [bico.media bsv public](https://bico.media/18xAQuoytYNuXrZwoLvLHmHwS3dNqw5BXF/index.html) + - (`git clone https://bico.media/18xAQuoytYNuXrZwoLvLHmHwS3dNqw5BXF/git standingwithresilience`) +- [0net.io zeronet public](https://0net.io/1GtQ8bkFkhYtKerSdXHKe1z4j9VTmFR5d4) - [ipfs gateway public](https://ipfs.io/ipns/QmPw1ZqrdEma823zTrnH9cVFF4j3YSeedrRjqPGj9Q8Utx) -- [ipfs gateway private](https://ipfs.io/ipns/QmYMViYhjtwH2BkuHYRGJvPDWcXdNf2YcRFTTCzzqQGVn1) -- plz fix the update script found when cloning this repo +- plz re-add private repos to back this one, in case of defacement +- plz fix the update script found when cloning this repo, so it is intuitive on first use - plz add credentials and a link to a public git-ssb repo to this repo -- cgit v1.2.3 From 23f867762d8482ac16fc351b1529f45880a740b9 Mon Sep 17 00:00:00 2001 From: IkiWiki Date: Mon, 2 Sep 2019 13:24:22 -0400 Subject: update git packing --- backend/resilient/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/resilient/__init__.py b/backend/resilient/__init__.py index 73e375c..ead6576 100644 --- a/backend/resilient/__init__.py +++ b/backend/resilient/__init__.py @@ -130,7 +130,8 @@ class ikiwiki: ikiwiki.synced = (status == 0) if ikiwiki.synced: - os.system('git gc') + os.system('git repack -d') + os.system('git prune-packed') os.system('git update-server-info') # /.git folder access can be seen as security access problem by web hosts, so alias to /git @@ -138,7 +139,7 @@ class ikiwiki: html_git_path = os.path.join(html_path, 'git') os.mkdir(html_git_path) - for path in ['objects', 'refs', 'HEAD', 'info', 'packed-refs']: + for path in ['objects/info', 'objects/packs', 'refs', 'HEAD', 'info', 'packed-refs']: git_subpath = os.path.join(git_path, path) html_git_subpath = os.path.join(html_git_path, path) if os.path.isdir(git_subpath): -- cgit v1.2.3 From 1e6e19dad98f517152aeba4e4f60a87a7731d648 Mon Sep 17 00:00:00 2001 From: IkiWiki Date: Mon, 2 Sep 2019 13:26:55 -0400 Subject: fix typo --- backend/resilient/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/resilient/__init__.py b/backend/resilient/__init__.py index ead6576..d44e914 100644 --- a/backend/resilient/__init__.py +++ b/backend/resilient/__init__.py @@ -139,7 +139,7 @@ class ikiwiki: html_git_path = os.path.join(html_path, 'git') os.mkdir(html_git_path) - for path in ['objects/info', 'objects/packs', 'refs', 'HEAD', 'info', 'packed-refs']: + for path in ['objects/info', 'objects/pack', 'refs', 'HEAD', 'info', 'packed-refs']: git_subpath = os.path.join(git_path, path) html_git_subpath = os.path.join(html_git_path, path) if os.path.isdir(git_subpath): -- cgit v1.2.3 From 258fc3d7f7ba7983dcd3dac1429936227233eaf2 Mon Sep 17 00:00:00 2001 From: IkiWiki Date: Mon, 2 Sep 2019 13:51:05 -0400 Subject: fix ssh behavior on old ssh versions --- backend/dep/build_ikiwiki.sh | 2 +- backend/resilient/__init__.py | 14 +++++--------- backend/wrapped_ssh.sh | 6 ++++++ 3 files changed, 12 insertions(+), 10 deletions(-) create mode 100755 backend/wrapped_ssh.sh diff --git a/backend/dep/build_ikiwiki.sh b/backend/dep/build_ikiwiki.sh index 38d6692..3635e40 100755 --- a/backend/dep/build_ikiwiki.sh +++ b/backend/dep/build_ikiwiki.sh @@ -1,6 +1,6 @@ #!/bin/env bash -SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +SCRIPTDIR="$( cd "$( dirname "$0" )" >/dev/null 2>&1 && pwd )" cd "$SCRIPTDIR"/ikiwiki && { PERL5LIB=`pwd` PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'CPAN::Shell->notest("install", "Bundle::IkiWiki")'; } && diff --git a/backend/resilient/__init__.py b/backend/resilient/__init__.py index d44e914..e2b40c7 100644 --- a/backend/resilient/__init__.py +++ b/backend/resilient/__init__.py @@ -25,7 +25,7 @@ html_path = os.path.normpath(os.path.join(root_path, 'html')) wiki_src_path = os.path.normpath(os.path.join(root_path, 'wiki')) git_path = os.path.normpath(os.path.join(root_path, '.git')) -ssh_config_path = os.path.join(auth_path, "ssh-config") +ssh_wrap_path = os.path.join(backend_path, "wrapped_ssh.sh") for auth_subpath, auth_subpaths, auth_subfiles in os.walk(auth_path): for auth_subfile in auth_subfiles: @@ -83,21 +83,17 @@ class git: def pull(self): if self.remote == None: return False - # TODO: GIT_SSH_COMMAND needs new version of git - # to make it work on old versions, path ssh_config_path on environment - # and use a wrapper script that calls ssh -F - # then place path to wrapper script in os.environ["GIT_SSH"] - os.environ["GIT_SSH_COMMAND"] = "ssh -F %s" % ssh_config_path + os.environ["GIT_SSH"] = ssh_wrap_path status = os.system("git pull %s master" % self.remote) - del os.environ["GIT_SSH_COMMAND"] + del os.environ["GIT_SSH"] return status == 0 def push(self): if self.push_remote == None: return False - os.environ["GIT_SSH_COMMAND"] = "ssh -F %s" % ssh_config_path + os.environ["GIT_SSH"] = ssh_wrap_path status = os.system("git push %s master" % self.push_remote) - del os.environ["GIT_SSH_COMMAND"] + del os.environ["GIT_SSH"] return status == 0 diff --git a/backend/wrapped_ssh.sh b/backend/wrapped_ssh.sh new file mode 100755 index 0000000..8281e9d --- /dev/null +++ b/backend/wrapped_ssh.sh @@ -0,0 +1,6 @@ +#!/bin/env sh + +SCRIPTDIR="$( cd "$( dirname "$0" )" >/dev/null 2>&1 && pwd )" + +ssh -F "$SCRIPTDIR"/auth/ssh-config "$@" + -- cgit v1.2.3 From 2a56a7fe014b8e8fbc445406e2a700eaa49dee2b Mon Sep 17 00:00:00 2001 From: IkiWiki Date: Mon, 2 Sep 2019 14:14:06 -0400 Subject: try to fix gitlab update issue --- .gitlab-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d1b4ae4..27a0edd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,12 +2,13 @@ image: elecnix/ikiwiki before_script: - apt-get update - - apt-get install -y curl + - apt-get install -y curl git test: stage: test script: - cd backend + - sed -i 's/gitorigin_branch: origin/gitorigin_branch:/' ikiwiki.setup - ikiwiki --setup ikiwiki.setup - cd .. - mv html public @@ -19,6 +20,7 @@ pages: stage: deploy script: - cd backend + - sed -i 's/gitorigin_branch: origin/gitorigin_branch:/' ikiwiki.setup - ikiwiki --setup ikiwiki.setup - cd .. - mv html public -- cgit v1.2.3 From 4e590dedfb342512b1c199854069f4712524f2e8 Mon Sep 17 00:00:00 2001 From: IkiWiki Date: Mon, 2 Sep 2019 14:17:35 -0400 Subject: learning yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 27a0edd..deff60a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,7 +8,7 @@ test: stage: test script: - cd backend - - sed -i 's/gitorigin_branch: origin/gitorigin_branch:/' ikiwiki.setup + - sed -i s/gitorigin_branch:.origin/gitorigin_branch:/ ikiwiki.setup - ikiwiki --setup ikiwiki.setup - cd .. - mv html public @@ -20,7 +20,7 @@ pages: stage: deploy script: - cd backend - - sed -i 's/gitorigin_branch: origin/gitorigin_branch:/' ikiwiki.setup + - sed -i s/gitorigin_branch:.origin/gitorigin_branch:/ ikiwiki.setup - ikiwiki --setup ikiwiki.setup - cd .. - mv html public -- cgit v1.2.3 From 2b2293e94b1263ed635241919706d2c59cb5165e Mon Sep 17 00:00:00 2001 From: "standing.with.resilience@81199d01341bd8e54302967072b3ee54a43b6232" Date: Mon, 2 Sep 2019 18:43:39 +0000 Subject: --- wiki/Editing.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/Editing.mdwn b/wiki/Editing.mdwn index 8d9a0ab..1f8fb57 100644 --- a/wiki/Editing.mdwn +++ b/wiki/Editing.mdwn @@ -2,4 +2,4 @@ Right now, the easiest way to edit this wiki is to visit the [mirror at branchab The site may also be edited with [git](https://en.wikipedia.org/wiki/Git_%28software%29), which is required for now when on [[Freenet]], [[ZeroNet]], or some other alternative network. An explanation of git has not been added yet. -If git is already familiar to you, visit the wiki page for the network you are on. Clone urls for that network should be listed there. If not, try appending '/.git' to the front page URL and using that as a clone url. A python script `backend/update.py` is included after you clone, which can help in uploading changes. The script has only been tested on Linux. +If git is already familiar to you, visit the wiki page for the network you are on. Clone urls for that network should be listed there. If not, try appending '/git' to the front page URL and using that as a clone url. A python script `backend/update.py` is included after you clone, which can help in uploading changes. The script has only been tested on Linux, when run from the `backend` folder with relevent tools installed. -- cgit v1.2.3 From 760945efa2583ced528cea739a5ba967c13ec36c Mon Sep 17 00:00:00 2001 From: "standing.with.resilience@81199d01341bd8e54302967072b3ee54a43b6232" Date: Mon, 2 Sep 2019 18:45:37 +0000 Subject: --- wiki/index.mdwn | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wiki/index.mdwn b/wiki/index.mdwn index 13ed36d..88fd44a 100644 --- a/wiki/index.mdwn +++ b/wiki/index.mdwn @@ -40,9 +40,12 @@ plz add links to other communities that have gathered around this issue ## Proposals +- Let's make this site much simpler to confused people. There are too many small words, too close together. + - Let's give the site different sets of information for people with different experiences. For example, it could be broken into (a) being surveilled (b) gangstalking (c) mind control (d) exotic/supernatural technology/experiences. A possible explanation of the situation is an automated secret military research program, that is sustaining a restriction that it and its work were classified. - - This opens an avenue towards allowing people to learn more if they make an informed choice to, and opens a little space for a process to be provided for that. + - This opens an avenue towards allowing people to learn more if they make an informed choice to, and opens a little space for a process to be provided for that + - Propose that people who come here and stay have already been exposed to too much, and are ready for it. Over here, we have to be able to handle anything to work on this site, and it isn't hard. For you, what is it like? ## Where to Find This Site -- cgit v1.2.3