From 92a004d630a3a18193b910f86a8eb92877d97d5f Mon Sep 17 00:00:00 2001 From: mycognosist Date: Mon, 25 Oct 2021 12:18:28 +0200 Subject: [PATCH 1/2] add missing workspace members --- Cargo.lock | 310 +++++++++++++++++++++++++++++++++++++++++++++++++---- Cargo.toml | 2 + 2 files changed, 290 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4b26642..f44e573 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -169,6 +169,18 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "bitflags" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32866f4d103c4e438b1db1158aa1b1a80ee078e5d77a59a2f906fd62a577389c" + +[[package]] +name = "bitflags" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dead7461c1127cf637931a1e50934eb6eee8bff2f74433ac7909e9afcee04a3" + [[package]] name = "bitflags" version = "1.2.1" @@ -261,6 +273,15 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4964518bd3b4a8190e832886cdc0da9794f12e8e6c1613a9e90ff331c4c8724b" +[[package]] +name = "cast" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a" +dependencies = [ + "rustc_version 0.4.0", +] + [[package]] name = "cc" version = "1.0.69" @@ -319,7 +340,7 @@ checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" dependencies = [ "ansi_term", "atty", - "bitflags", + "bitflags 1.2.1", "strsim", "textwrap", "unicode-width", @@ -332,7 +353,7 @@ version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" dependencies = [ - "bitflags", + "bitflags 1.2.1", ] [[package]] @@ -540,7 +561,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf41c59b22b5e3ec0ea55c7847e5f358d340f3a8d6d53a5cf4f1564967f96487" dependencies = [ - "bitflags", + "bitflags 1.2.1", "proc-macro2 0.4.30", "quote 0.6.13", "syn 0.15.44", @@ -582,6 +603,26 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +[[package]] +name = "embedded-graphics" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e7ee289ac88cbeea6f749cd72c6eb4cdeb801f4ea26795aace97b9776a2db2" +dependencies = [ + "tinybmp", + "tinytga", +] + +[[package]] +name = "embedded-hal" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e36cfb62ff156596c892272f3015ef952fe1525e85261fa3a7f327bd6b384ab9" +dependencies = [ + "nb 0.1.3", + "void", +] + [[package]] name = "env_logger" version = "0.6.2" @@ -685,7 +726,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ab7d1bd1bd33cc98b0889831b72da23c0aa4df9cec7e0702f46ecea04b35db6" dependencies = [ - "bitflags", + "bitflags 1.2.1", "fsevent-sys", ] @@ -720,7 +761,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" dependencies = [ - "bitflags", + "bitflags 1.2.1", "fuchsia-zircon-sys", ] @@ -868,11 +909,23 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc" dependencies = [ - "bitflags", + "bitflags 1.2.1", "ignore", "walkdir", ] +[[package]] +name = "gpio-cdev" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04d50743080fbae298c55f0b28dd5ea4b513c53cddeddace6cbdd31db7dda981" +dependencies = [ + "bitflags 1.2.1", + "error-chain", + "libc", + "nix 0.11.1", +] + [[package]] name = "h2" version = "0.1.26" @@ -1048,7 +1101,7 @@ dependencies = [ "itoa", "log 0.4.14", "net2", - "rustc_version", + "rustc_version 0.2.3", "time 0.1.44", "tokio", "tokio-buf", @@ -1061,6 +1114,18 @@ dependencies = [ "want 0.2.0", ] +[[package]] +name = "i2cdev" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c0eb3d9b6b02dc2508ee23439170004e44344bab9d53a490eb1f64c885b5003" +dependencies = [ + "bitflags 1.2.1", + "byteorder", + "libc", + "nix 0.14.1", +] + [[package]] name = "idna" version = "0.1.5" @@ -1106,7 +1171,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4816c66d2c8ae673df83366c18341538f234a26d65a9ecea5c348b453ac1d02f" dependencies = [ - "bitflags", + "bitflags 1.2.1", "inotify-sys", "libc", ] @@ -1325,6 +1390,20 @@ dependencies = [ "serde_json", ] +[[package]] +name = "jsonrpc-ws-server" +version = "11.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e72d8f524c7afd11d9c71614d1f814ee1c46377869933ce42d559d6973922f79" +dependencies = [ + "jsonrpc-core 11.0.0", + "jsonrpc-server-utils", + "log 0.4.14", + "parking_lot 0.7.1", + "slab 0.4.4", + "ws", +] + [[package]] name = "kernel32-sys" version = "0.2.2" @@ -1360,7 +1439,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" dependencies = [ "arrayvec", - "bitflags", + "bitflags 1.2.1", "cfg-if 1.0.0", "ryu", "static_assertions", @@ -1388,6 +1467,19 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" +[[package]] +name = "linux-embedded-hal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "795096c0eecb0622afb591c3e1a97b1ba046688a7689957b70b8eee9cac8fb84" +dependencies = [ + "cast", + "embedded-hal", + "i2cdev", + "spidev", + "sysfs_gpio", +] + [[package]] name = "lock_api" version = "0.1.5" @@ -1561,6 +1653,21 @@ dependencies = [ "tempfile", ] +[[package]] +name = "nb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" +dependencies = [ + "nb 1.0.0", +] + +[[package]] +name = "nb" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "546c37ac5d9e56f55e73b677106873d9d9f5190605e41a856503623648488cae" + [[package]] name = "nest" version = "1.0.0" @@ -1591,13 +1698,27 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "nix" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a7bb1da2be7da3cbffda73fc681d509ffd9e665af478d2bee1907cee0bc64b2" +dependencies = [ + "bitflags 0.4.0", + "cfg-if 0.1.10", + "libc", + "rustc_version 0.1.7", + "semver 0.1.20", + "void", +] + [[package]] name = "nix" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7fd5681d13fda646462cfbd4e5f2051279a89a544d50eb98c365b507246839f" dependencies = [ - "bitflags", + "bitflags 1.2.1", "bytes", "cfg-if 0.1.10", "gcc", @@ -1605,13 +1726,26 @@ dependencies = [ "void", ] +[[package]] +name = "nix" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "becb657d662f1cd2ef38c7ad480ec6b8cf9e96b27adb543e594f9cf0f2e6065c" +dependencies = [ + "bitflags 1.2.1", + "cc", + "cfg-if 0.1.10", + "libc", + "void", +] + [[package]] name = "nix" version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce" dependencies = [ - "bitflags", + "bitflags 1.2.1", "cc", "cfg-if 0.1.10", "libc", @@ -1624,12 +1758,32 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a" dependencies = [ - "bitflags", + "bitflags 1.2.1", "cc", "cfg-if 1.0.0", "libc", ] +[[package]] +name = "nom" +version = "4.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" +dependencies = [ + "memchr", + "version_check 0.1.5", +] + +[[package]] +name = "nom" +version = "5.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" +dependencies = [ + "memchr", + "version_check 0.9.3", +] + [[package]] name = "nom" version = "6.2.1" @@ -1649,7 +1803,7 @@ version = "4.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae03c8c853dba7bfd23e571ff0cff7bc9dceb40a4cd684cd1681824183f45257" dependencies = [ - "bitflags", + "bitflags 1.2.1", "filetime", "fsevent", "fsevent-sys", @@ -1735,7 +1889,7 @@ version = "0.10.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "549430950c79ae24e6d02e0b7404534ecf311d94cc9f861e9e4020187d13d885" dependencies = [ - "bitflags", + "bitflags 1.2.1", "cfg-if 1.0.0", "foreign-types", "libc", @@ -1799,7 +1953,7 @@ checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" dependencies = [ "lock_api 0.3.4", "parking_lot_core 0.6.2", - "rustc_version", + "rustc_version 0.2.3", ] [[package]] @@ -1820,7 +1974,7 @@ checksum = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" dependencies = [ "libc", "rand 0.6.5", - "rustc_version", + "rustc_version 0.2.3", "smallvec 0.6.14", "winapi 0.3.9", ] @@ -1835,7 +1989,7 @@ dependencies = [ "cloudabi", "libc", "redox_syscall 0.1.57", - "rustc_version", + "rustc_version 0.2.3", "smallvec 0.6.14", "winapi 0.3.9", ] @@ -1863,6 +2017,21 @@ dependencies = [ "regex", ] +[[package]] +name = "peach-buttons" +version = "0.1.3" +dependencies = [ + "crossbeam-channel", + "env_logger 0.6.2", + "gpio-cdev", + "jsonrpc-core 11.0.0", + "jsonrpc-pubsub 11.0.0", + "jsonrpc-test 11.0.0", + "jsonrpc-ws-server", + "log 0.4.14", + "snafu 0.4.4", +] + [[package]] name = "peach-config" version = "0.1.10" @@ -1977,6 +2146,25 @@ dependencies = [ "wpactrl", ] +[[package]] +name = "peach-oled" +version = "0.1.3" +dependencies = [ + "embedded-graphics", + "env_logger 0.6.2", + "jsonrpc-core 11.0.0", + "jsonrpc-http-server", + "jsonrpc-test 11.0.0", + "linux-embedded-hal", + "log 0.4.14", + "nix 0.11.1", + "serde 1.0.127", + "serde_json", + "snafu 0.4.4", + "ssd1306", + "tinybmp", +] + [[package]] name = "peach-probe" version = "0.1.2" @@ -2458,7 +2646,7 @@ version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" dependencies = [ - "bitflags", + "bitflags 1.2.1", ] [[package]] @@ -2570,13 +2758,31 @@ version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dead70b0b5e03e9c814bcb6b01e03e68f7c57a80aa48c72ec92152ab3e818d49" +[[package]] +name = "rustc_version" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084" +dependencies = [ + "semver 0.1.20", +] + [[package]] name = "rustc_version" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" dependencies = [ - "semver", + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.4", ] [[package]] @@ -2634,7 +2840,7 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23a2ac85147a3a11d77ecf1bc7166ec0b92febfa4461c37944e180f319ece467" dependencies = [ - "bitflags", + "bitflags 1.2.1", "core-foundation", "core-foundation-sys", "libc", @@ -2651,6 +2857,12 @@ dependencies = [ "libc", ] +[[package]] +name = "semver" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac" + [[package]] name = "semver" version = "0.9.0" @@ -2660,6 +2872,12 @@ dependencies = [ "semver-parser", ] +[[package]] +name = "semver" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" + [[package]] name = "semver-parser" version = "0.7.0" @@ -2869,6 +3087,27 @@ dependencies = [ "syn 1.0.74", ] +[[package]] +name = "spidev" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ba01d3ef92a37e898fecac76cd3e1b33c999395e2d70787608d9678c4293e04" +dependencies = [ + "bitflags 0.3.3", + "libc", + "nix 0.6.0", +] + +[[package]] +name = "ssd1306" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d818022001ebca8cec28b230700660a3f6a027123c8193c5e76e9764d087f3" +dependencies = [ + "embedded-graphics", + "embedded-hal", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -2966,6 +3205,15 @@ dependencies = [ "unicode-xid 0.2.2", ] +[[package]] +name = "sysfs_gpio" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24961a55846623d8e4f6cec38718945116fed8d6970336a7110710a07aa9b5d1" +dependencies = [ + "nix 0.14.1", +] + [[package]] name = "systemstat" version = "0.1.8" @@ -2976,7 +3224,7 @@ dependencies = [ "chrono", "lazy_static", "libc", - "nom", + "nom 6.2.1", "time 0.1.44", "winapi 0.3.9", ] @@ -3107,6 +3355,24 @@ dependencies = [ "libc", ] +[[package]] +name = "tinybmp" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d12b7f8b271567d6d072c49dee16b22271aabfc473e2066e3353e5af0f5230" +dependencies = [ + "nom 5.1.2", +] + +[[package]] +name = "tinytga" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc9485052c1f4b541d888f1d564dd9957671e0c21da9bca0c9824c1123e03f07" +dependencies = [ + "nom 4.2.3", +] + [[package]] name = "tinyvec" version = "1.3.1" @@ -3711,7 +3977,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "403f3fd505ff930da84156389639932955fb09705b3dccd1a3d60c8e7ff62776" dependencies = [ "base64 0.10.1", - "bitflags", + "bitflags 1.2.1", "byteorder", "bytes", "futures", diff --git a/Cargo.toml b/Cargo.toml index cd17e5e..dd1560b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,8 @@ [workspace] members = [ + "peach-buttons", + "peach-oled", "peach-lib", "peach-config", "peach-network", -- 2.40.1 From 915a008be118e814d483dd5bab7fcb9fd0430697 Mon Sep 17 00:00:00 2001 From: mycognosist Date: Mon, 25 Oct 2021 12:18:38 +0200 Subject: [PATCH 2/2] remove peach-meta --- peach-meta/.gitattributes | 4 - peach-meta/comms/april-2018-grant.md | 146 ---------- peach-meta/diary.md | 271 ------------------ .../images/2018-04-14-buttcloud-landing.jpg | 3 - .../images/2018-04-17-buttcloud-landing.webm | 3 - peach-meta/images/logo-square.png | 3 - peach-meta/images/logo-square.svg | 3 - peach-meta/images/logo.png | 3 - peach-meta/images/logo.svg | 3 - peach-meta/processes/cla.md | 19 -- 10 files changed, 458 deletions(-) delete mode 100644 peach-meta/.gitattributes delete mode 100644 peach-meta/comms/april-2018-grant.md delete mode 100644 peach-meta/diary.md delete mode 100644 peach-meta/images/2018-04-14-buttcloud-landing.jpg delete mode 100644 peach-meta/images/2018-04-17-buttcloud-landing.webm delete mode 100644 peach-meta/images/logo-square.png delete mode 100644 peach-meta/images/logo-square.svg delete mode 100644 peach-meta/images/logo.png delete mode 100644 peach-meta/images/logo.svg delete mode 100644 peach-meta/processes/cla.md diff --git a/peach-meta/.gitattributes b/peach-meta/.gitattributes deleted file mode 100644 index beb3964..0000000 --- a/peach-meta/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -*.png filter=lfs diff=lfs merge=lfs -text -*.jpg filter=lfs diff=lfs merge=lfs -text -*.webm filter=lfs diff=lfs merge=lfs -text -*.svg filter=lfs diff=lfs merge=lfs -text diff --git a/peach-meta/comms/april-2018-grant.md b/peach-meta/comms/april-2018-grant.md deleted file mode 100644 index 20f59a8..0000000 --- a/peach-meta/comms/april-2018-grant.md +++ /dev/null @@ -1,146 +0,0 @@ -# ButtCloud :partly_sunny: :rainbow: - -_an April 2018 #ssbc-grants proposal_ - -i'd like to work on better pub infrastructure and a hosted pub-as-a-service product. - -## team - -me! :smiley_cat: - -## goals - -- we build an [open source business](http://blog.dinosaur.is/workers-of-open-source-unite/) on Scuttlebutt! -- a pub is [your personal cloud device](%Gwqklkj0b2CBT5tPiz5170NWsPp3xiuLbOImEaG/e+4=.sha256) that is always available and publicly accessible -- a pub should be affordable (start pricing at ~$7/month per pub, try to get to ~$1/month per pub) -- we support open source infrastructure providers, like [OVH](https://www.ovh.com/world/public-cloud/) and [Catalyst](http://catalyst.net.nz/catalyst-cloud) -- the infrastructure code should easy for others to contribute and maintain - -## the story so far - -pubs are important ([1](%f6ZRXO2t0rwUw/lq5FpWCHtuHc9406Q37TB+lF9bUbc=.sha256), [2](https://writtenby.adriengiboire.com/2018/03/14/my-first-week-experience-with-scuttlebutt-and-patchwork/), [3](https://twitter.com/nicolasini/status/974364249219727360)), but [public pubs are a stop-gap we've used for too long](%MZCHPVkh8sNhTsevWgSVXNlL6dYgSnzBvB3hJcJZ/7k=.sha256), we need [private pubs for everyone](%Gwqklkj0b2CBT5tPiz5170NWsPp3xiuLbOImEaG/e+4=.sha256)! - -[over the holidays](%1TVZigDql9VAQaZZVX/QegKan18urBuXQikOWE1uTMk=.sha256), i got maybe 80% of the way towards automated Scuttlebutt pub infrastructure using [Salt Stack](https://docs.saltstack.com/), hosted on [Open Stack](https://docs.openstack.org) using [OVH public cloud](https://www.ovh.com/world/public-cloud/). i've also been able to achieve _mostly_ reliable pubs using an [`ssb-pub`](https://github.com/ahdinosaur/ssb-pub) Docker image. - -i want to throw away all the [Salt Stack](https://docs.saltstack.com/) work i did and start over with [Docker Swarm](https://docs.docker.com/engine/swarm/). - -i expect this will take [longer than a month of full-time work to complete](%9ZzHJ2F0MHncqLLInC47Tp/OuHEUcHyRfWYierUpUKc=.sha256). - -## sub-projects - -there are three main sub-projects: - -- provider service -- hub swarm -- pub service - -## architecture - -- provider service - - web app - - join - - land - - sign in - - create pub - - pay for pub - - start pub service - - monitor - - land - - sign in - - view pub - - see stats - - command - - land - - sign in - - view pub - - run command - - web api - - users - - id - - name - - email - - pub - - bots - - id - - userId - - name - - status (up, down, none) - - stats - - stream Docker stats - - commands - - relay commands to pub services - - orchestrator - - on schedule, check what pubs are up - - have 1 pub per 1 GB memory, 1 hub per 15 GB memory - - queue worker jobs to ensure correct swarm - - payment - - products - - plans - - customers - - subscriptions - - swarm worker - - manage hub [machines](https://docs.docker.com/machine/drivers/openstack/) - - create hub - - destroy hub - - manage pub [services](https://docs.docker.com/engine/swarm/swarm-tutorial/deploy-service/) - - ensure pub service is up - - ensure pub service is down - - mailer worker -- pub service - -## stack - -- provider service - - web api - - [@feathersjs/socketio](https://github.com/feathersjs/socketio) - - [@feathersjs/authentication](https://github.com/feathersjs/authentication) - - [@feathersjs/authentication-jwt](https://github.com/feathersjs/authentication-jwt) - - [feathers-stripe](https://github.com/feathersjs-ecosystem/feathers-stripe) - - [node-resque](https://github.com/taskrabbit/node-resque) - - [docker-remote-api](https://github.com/mafintosh/docker-remote-api) - - web app - - [next.js](https://github.com/zeit/next.js/) - - [ramda](http://ramdajs.com/docs/) - - [@feathersjs/socketio-client](https://github.com/feathersjs/socketio-client) - - [@feathersjs/authentication-client](https://github.com/feathersjs/authentication-client) - - [react](https://facebook.github.io/react) - - [react-hyperscript](https://github.com/mlmorg/react-hyperscript) - - [recompose](https://github.com/acdlite/recompose) - - [fela](https://github.com/rofrischmann/fela) - - [material-ui](https://material-ui.com/) - - [react-stripe-elements](https://github.com/stripe/react-stripe-elements) - - swarm worker - - [node-resque](https://github.com/taskrabbit/node-resque) - - [docker-remote-api](https://github.com/mafintosh/docker-remote-api) - - mailer worker - - [node-resque](https://github.com/taskrabbit/node-resque) - - [nodemailer](https://github.com/nodemailer/nodemailer) - - third-party: [sendgrid](https://sendgrid.com/) - - dev tool: [maildev](https://github.com/djfarrelly/maildev) -- [pub service](http://github.com/ahdinosaur/ssb-pub) - - [scuttlebot](https://github.com/ssbc/scuttlebot) - - [ssb-viewer](%MeCTQrz9uszf9EZoTnKCeFeIedhnKWuB3JHW2l1g9NA=.sha256) - - [git-ssb-web](%q5d5Du+9WkaSdjc8aJPZm+jMrqgo0tmfR+RcX5ZZ6H4=.sha256) - -## roadmap - -_rough draft, subject to change_ - -- upgrade pub service - - update `ssb-pub` to use docker-compose (so we can host multiple Scuttlebutt processes in the same service) - - add `ssb-viewer` - - add `git-ssb-web` -- prototype hub swarm - - setup single "hub manager" to be docker swarm manager - - run mock provider service on manager - - setup many "hub worker"s to be docker swarm workers -- create provider service - - upgrade mock provider service to include postgres and redis databases - - scaffold web api, web app, swarm worker, and mailer worker - - implement provider web app user flows -- automate swarm - - implement swarm orchestration functionality -- start business - - understand costs, determine prices, forecast profit/loss - - decide on company jurisdiction and legal structure - - [copy](https://getterms.io/) or create (with help) a Terms of Service & Privacy Policy diff --git a/peach-meta/diary.md b/peach-meta/diary.md deleted file mode 100644 index 1daa794..0000000 --- a/peach-meta/diary.md +++ /dev/null @@ -1,271 +0,0 @@ -# dev diary - -## 2018-03-29 - -@dinosaur - -- setup [ButtCloud.org](http://buttcloud.org) and various linked services (GitHub, Docker Cloud, Twitter, Gmail) -- started [`buttcloud/meta`](https://github.com/buttcloud/meta) repo to store any meta information (including [these dev diary entries](https://github.com/buttcloud/meta/blob/master/diary.md)) -- started [`buttcloud/butt-landing](https://github.com/buttcloud/butt-landing) to be a simple public landing page for pub servers - - working towards a multi-service pub using Docker Compose, i realized `ssb-viewer` and `git-ssb-web` were non-trivial to install in typical environments - - the plan is to use this as a simple secondary service to get a multi-service pub working, then later can focus on the other secondary services - -## 2018-03-30 - -@dinosaur - -- made [Docker image](https://hub.docker.com/r/buttcloud/butt-landing) for `buttcloud/butt-landing` -- extracted minimal peer server and client code from `scuttlebot` into [`buttcloud/butt-peer`](https://github.com/buttcloud/butt-peer) - - added custom logging plugin which uses [`pino`](https://github.com/pinojs/pino), to try and have a consistent logging system across services - - made [two Docker images](https://hub.docker.com/r/buttcloud/butt-peer), one for `butt-peer-server` and one for `butt-peer-client` - - i combined them so i could use the client code in the server healthcheck - -## 2018-04-03 - -@dinosaur - -- started `buttcloud/butt` as `docker-compose.yml` of peer server, landing server, and nginx proxy -- update `butt-peer-server` and `butt-peer-client` to not use `node` user, easier to start with default `root` user - - why? i ran into an error with volume data permissions, would rather punt to later - - UPDATE: changed this back, got it working with `node` user, needed to create volume in `Dockerfile` then mount external volume at same path -- update `butt-landing` to auto re-connect to sbot, so it doesn't error when sbot is not yet up - - why? this is the recommended way to have docker services depend on each other, `docker-compose.yml` v3 not longer supports `depends_on: condition: healthy` -- setup Docker Hub automated builds to build tagged images based on git version tags - - match tag name: `/^v[0-9.]+$/`, docker tag is same - -## 2018-04-04 - -@dinosaur - -- got minimal `buttcloud/butt` working! -- iron out some kinks... - -## 2018-04-08 - -@dinosaur - -- switch to focus on Docker Swarm -- change to use Traefik instead of Nginx Proxy - -## 2018-04-09 - -@dinosaur - -- keep trying to get the Swarm setup to work, grr...! - -## 2018-04-13 - -@dinosaur - -- take a break from Swarm for meow -- first pass at scaffolding [`buttcloud/buttcloud-provider`](https://github.com/buttcloud/buttcloud-provider) - - have a working web server, browser app, and worker, but not yet complete to start feature development - -## 2018-04-14 - -@dinosaur - -- more progress toward provider app scaffolding - -![buttcloud diary](./images/2018-04-14-buttcloud-landing.jpg) - -## 2018-04-15 to 2018-04-17 - -@dinosaur - -provider app has landed! - -![provider app landing](./images/2018-04-17-buttcloud-landing.webm) - -- integrate `redux-bundler` -- add emojis -- found seamless background image to tile on landing page -- start onboarding workflow -- implement start step of onboarding - - validate forms on client - - validate service calls on server, show errors in form - - show success or failure messages as snackbar - - after form submission (which creates the user) - - generate json web token that identifies user - - send welcome email to next page of onboarding with token - - emails are sent by queuing a delayed job to a worker (`node-resque`) - - setup decent email templates with `mjml` - - store user in local storage in case they refresh page before progressing - - show help text on page - - allow user to resend onboarding email - -## 2018-04-18 - -@ahdinosaur - -back to the infra side, during breakfast this morning i figured out why `buttcloud/butt` was failing! - -i had a hunch that it had to do with the address that `sbot` was binding to. i configured `host` as `example_butt-peer-server`, since that's how the Docker service was to be identified within the Docker network. but still, the health checker inside the service couldn't find it. i changed this to `0.0.0.0` and it works! - -did the same for the landing service. now the stack comes online, you can `curl -H "Host: example.butt.nz" localhost` and get the output from the landing page associated with `example.butt.nz` (proxied by `traefik`). - -next i added a [custom plugin to `butt-peer-server`](https://github.com/buttcloud/butt-peer/blob/3c4390907eebe18f98e5f5d9c839161b9d1e001e/server/plugins/address.js) that allows you to configure `externalHost`, in case it differs from `host`. this means we can bind to `host` (like `0.0.0.0`) but advertise our public multiserver address as `example.butt.nz` (like for invites). - -then, on a whim from @mischa, i went [back to `buttcloud-provider` to swap `redux-form` for `final-form`](https://github.com/buttcloud/buttcloud-provider/pull/4), easy as. - -made up some issues, want to step back to think about the next steps from here. - -also made the ButtCloud logo! - -![ButtCloud logo](./images/logo.png) - -## 2018-04-19 - -@ahdinosaur - -- setup contributor license agreement: https://github.com/buttcloud/meta/issues/6 -- setup kanbans - - [dev](https://github.com/orgs/buttcloud/projects/1) - - [ops](https://github.com/orgs/buttcloud/projects/2) - - [biz](https://github.com/orgs/buttcloud/projects/3) - -## 2018-04-26 - -@ahdinosaur - -- start to separate pub and hub stacks in swarm setup: https://github.com/buttcloud/butt/commit/426deb39b9880100fe82ba5960da3d43fe74c452 -- worked on deploy for web app demo: https://github.com/buttcloud/buttcloud-provider/pull/9 - - browser code is up at: (using netlify for free) - - api server is up at (using heroku for free) - -## 2018-04-27 - -@ahdinosaur - -- discovered and documented bug with `tinyify`: https://github.com/browserify/tinyify/issues/10 -- add standard style setup to web app: https://github.com/buttcloud/buttcloud-provider/pull/10 - -## 2018-04-30 - -@ahdinosaur - -- demo is now live! [demo.buttcloud.org](https://demo.buttcloud.org) :sheep: -- renamed sub-projects to either `buttpub*` or `butthub*`, to standardize language: https://github.com/buttcloud/meta/issues/7 -- setup continuous integration for `butthub-provider`: https://github.com/buttcloud/butthub-provider/pull/11 -- setup ButtCloud account with OVH - - apply for their startup support program (for maybe $1k cloud credit): https://www.ovh.com/world/dlp/ -- play with `docker-machine` to create a local swarm across many machines - - get the swarm scripts from `buttpub` working, now across multiple virtual machines - -## 2018-05-01 - -@ahdinosaur - -started [`docker-up`](https://github.com/buttcloud/docker-up): opinionated glue to manage our Docker swarm - -## 2018-05-02 - -@ahdinosaur - -continued with `docker-up` - -- ended up making a fun little continuable (`cb => {}`) based async flow control library in `./util/async.js`, maybe will publish as `flowstep` -- realized that the Docker API doesn't handle the `docker stack *` functionality, that's implemented in the Docker CLI - - i learned that a "stack" is really a set of networks, volumes, and services each with a label "com.docker.stack.namespace" to reference the stack name - - have to decide whether - - a) to continue using the Docker API and implement that functionality ourselves - - b) to move to using the Docker CLI - - for now, will go with option a) ! - - reading the Docker CLI code, it's not scary or complex - - this way we have more low-level control of the Docker Swarm - - this way we can focus on exactly what we need for ButtCloud - -## 2018-05-03 - -more `docker-up`, getting close to `v1`! :balloon: - -- add executable cli -- clean up the api -- fractal stacks! - - top-level config is a stack, with stacks all the way down - - each stack has services, networks, volumes, AND NESTED STACKS - - each stack _may_ have a name to namespace associated services -- pretty configurable logging - -next up (notes to self): - -- better cli (take in resource type) -- use explicit docker version in api requests -- add "com.docker.stack.namespace" label to be legit docker stack - -gotta work with @Mischa on another contract meow, then Art~Hack! - -## 2018-05-04 - -@ahdinosaur - -- reviewed @austin's sweet pull request to `butthub-provider`: https://github.com/buttcloud/butthub-provider/pull/13 -- completed the "next up" features for `docker-up` in [the previous entry](%p6giuIpqWY242inxUqUdMi1RqVKU0JCPZZWJYjL1i8Q=.sha256) - -## 2018-05-07 - -@ahdinosaur - -- published `docker-up/util/async.js` as [`callstep`](https://github.com/ahdinosaur/callstep), wrote up a splash of documentation :walking_man: - -## 2018-05-08 - -@ahdinosaur - -- `docker-up`: add basic integration and unit tests using `ava`, clean up log and config wrappers using composable callsteps: https://github.com/buttcloud/docker-up/commit/29655b561b781331fc4b3a2455ea15e7360bb111 - - cc @ike -- `butthub-provider`: look into adding integration tests using `codecept` -- not ButtCloud, but got sponsored by TickTack to improve `ssb-pub`: https://github.com/ahdinosaur/ssb-pub/pull/10 - -## 2018-05-09 - -@ahdinosaur - -- `butthub-provider`: end-to-end acceptance testing with codecept: https://github.com/buttcloud/butthub-provider/pull/14 - -## 2018-05-10 - -@ahdinosaur - -- `butthub-provider`: battled some end-to-end testing dragons :dragon: : https://github.com/buttcloud/butthub-provider/pull/14 - - integrated the entire web app stack (api server, asset server, worker, and mailer) in the codecept process - - at the end of the tests, the process was hanging, who was still running? - - with some help from `why-is-node-running` and heaps of reading dependency internals, started the journey to find every remaining handle, gotta catch 'em all! :racehorse: - -## 2018-05-11 - -@ahdinosaur - -- `butthub-provider`: won the end-to-end test war: https://github.com/buttcloud/butthub-provider/pull/14 - - cleaned up every last handle, so the test process cleanly exists meow - - which means continuous integration now includes end-to-end server + browser tests! :raised_hands: - - travis gives us a running postgres and redis database, how nice -- `butthub-provider`: finish a boring dependency upgrade: https://github.com/buttcloud/butthub-provider/pull/12 -- `docker-up`: https://github.com/buttcloud/docker-up/pull/4 - - the plan was to add update for services, but along the way i realized many things were broken: - - each resource uses a different identifier! - - `down` should check if resource exists before `remove` - - `up` returns output of inspect - - [generic resource creator](https://github.com/buttcloud/docker-up/blob/55cb293d42e9ec8cf7d15394ad9115db2cb17f26/resources/generic.js) now takes: - - `name` - - `hasUpdate`: true for `service`, false otherwise - - `idField`: network uses `Id, volume only has `Name`, service uses `ID` -- `docker-up`: add continuous integration tests: https://github.com/buttcloud/docker-up/pull/5 :white_check_mark: - - travis even gives us running docker to play with! - -## 2018-05-15 - 2018-06-09 - -@ahdinosaur - -- am starting to finally understand some advanced fp (functional programming) concepts like monads -- `docker-up`: investigate using `sanctuary` -- `docker-up`: port code to use `ramda`, `folktale`, `folktale-validations`, and `fluture` -- `docker-up`: re-architect how everything works - - given next config, translate into docker api config - - fetch all current docker api config - - diff docker api current and next configs - - show diff to sysadmin - - if acceptable, translate the diff into docker api commands and run those -- rename `docker-up` to `gyne` -- rename ButtCloud to PeachCloud -- get example swarm working across 3 virtual machines using `docker-machine` and `gyne` diff --git a/peach-meta/images/2018-04-14-buttcloud-landing.jpg b/peach-meta/images/2018-04-14-buttcloud-landing.jpg deleted file mode 100644 index 8133206..0000000 --- a/peach-meta/images/2018-04-14-buttcloud-landing.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6b1f6b3c3edda9a0208155587af991924b174e34303f1b146ff6d3134f906a50 -size 78050 diff --git a/peach-meta/images/2018-04-17-buttcloud-landing.webm b/peach-meta/images/2018-04-17-buttcloud-landing.webm deleted file mode 100644 index 10cbc5f..0000000 --- a/peach-meta/images/2018-04-17-buttcloud-landing.webm +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:245f952d53518713ecb90521b30131ae449edeb6226f679b837e7eb02f9d84d5 -size 704447 diff --git a/peach-meta/images/logo-square.png b/peach-meta/images/logo-square.png deleted file mode 100644 index f2437cc..0000000 --- a/peach-meta/images/logo-square.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0fa0ec60fa75b8347bd56d6a5eb5bd54d838b6f3f038e3d3b1a2082a38339604 -size 38577 diff --git a/peach-meta/images/logo-square.svg b/peach-meta/images/logo-square.svg deleted file mode 100644 index c96d0a2..0000000 --- a/peach-meta/images/logo-square.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:704c4826e9d1a045dc7d3a066e2bb850d3ae9f4a2d005b08d73462ae298ac352 -size 5831 diff --git a/peach-meta/images/logo.png b/peach-meta/images/logo.png deleted file mode 100644 index 004882e..0000000 --- a/peach-meta/images/logo.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6bd71ddde0172abdcb3c5953f23e7f1324dc4f7dd3d4e9b720308d865cce2859 -size 34537 diff --git a/peach-meta/images/logo.svg b/peach-meta/images/logo.svg deleted file mode 100644 index 6d78ce6..0000000 --- a/peach-meta/images/logo.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fb27730252530f3e7a8db2817842a4883d36eddd7492511d592d42c2bea571ac -size 5741 diff --git a/peach-meta/processes/cla.md b/peach-meta/processes/cla.md deleted file mode 100644 index 367b9a9..0000000 --- a/peach-meta/processes/cla.md +++ /dev/null @@ -1,19 +0,0 @@ -# Contributor License Agreement - -to contribute to ButtCloud, you must first sign a Contributor License Agreeement. - -## why? - -@ahdinosaur, the steward of ButtCloud, is committed to open source, at the moment all the code is licensed under the AGPL-3.0 copyleft licence. - -but we don't the ButtCloud project to be locked in to a legacy license, when promising new licenses such as a [License Zero](http://licensezero.com/) explore new legal territories, where we may in the future want to move to a peer production, copyfarleft, or reciprocity license. - -a Contributor License Agreement, as implemented here, allows contributors to grant a broad license to @ahdinosaur, the steward of ButtCloud. - -## how? - -once you contribute something significant, @ahdinosaur will contact you and setup a digital signature process using [HelloSign](https://hellosign.com). - -the document to sign is [this Individual Contributor License Agreement](https://drive.google.com/file/d/11bR0SIPjCjdBLi-p-XZo2CBPBeguCdAS/view?usp=sharing). - -after you sign, the document will be uploaded to a [drive](https://drive.google.com/drive/u/4/folders/1BZ0JezJ_9DhJ2HgpoyDV4qirpjcAXIyi) for safe storage. -- 2.40.1