Created
December 4, 2011 12:50
-
-
Save thruflo/1430121 to your computer and use it in GitHub Desktop.
Snapshot of the (rarely used) Togethr pivotal tracker stories on Sunday 4th December 2011
We can make this file beautiful and searchable if this error is corrected: It looks like row 2 should actually have 17 columns, instead of 16. in line 1.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Id,Story,Labels,Iteration,Iteration Start,Iteration End,Story Type,Estimate,Current State,Created at,Accepted at,Deadline,Requested By,Owned By,Description,URL,Note | |
19725001,PyPy Ctypes Support,"@tav, #python",1,"Oct 24, 2011","Oct 30, 2011",feature,2,accepted,"Oct 15, 2011","Oct 24, 2011",,tav,,"In order to use existing code like [pybonjour][] under PyPy, its `ctypes` | |
support needs to be improved a little. | |
**Done:** | |
* The [necessary][] [changes][] have now been committed to [PyPy][]. | |
[pybonjour]: http://pypi.python.org/pypi/pybonjour | |
[necessary]: https://github.com/pypy/pypy/commit/ec8ef738ba5f648653d195d95f9db5d70dcd172d | |
[changes]: https://github.com/pypy/pypy/commit/0f7ec12cf68443ab1e0e265a17ff51495a646068 | |
[PyPy]: https://github.com/pypy/pypy | |
",https://www.pivotaltracker.com/story/show/19725001 | |
18207953,Deployment Instances,"",6,"Nov 28, 2011","Dec 4, 2011",chore,,started,"Sep 13, 2011",,,James Arthur,James Arthur,,https://www.pivotaltracker.com/story/show/18207953 | |
18207983,User Object,"",6,"Nov 28, 2011","Dec 4, 2011",feature,1,finished,"Sep 13, 2011",,,James Arthur,James Arthur,,https://www.pivotaltracker.com/story/show/18207983 | |
18208035,Item Object,"",6,"Nov 28, 2011","Dec 4, 2011",feature,2,finished,"Sep 13, 2011",,,James Arthur,James Arthur,,https://www.pivotaltracker.com/story/show/18208035 | |
18208003,Authenticate / Credentials,"@tav, #design",6,"Nov 28, 2011","Dec 4, 2011",feature,1,started,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208003 | |
19738143,Argonought: Go,"#argo, #go",6,"Nov 28, 2011","Dec 4, 2011",feature,2,started,"Oct 16, 2011",,,tav,tav,"There needs to be a Go implementation of the [Argonought serialisation | |
format](#item-argonought-serialisation-format) in `amp/argo`. This should follow | |
the standard set by Go's [gob](http://golang.org/pkg/gob/) and | |
[json](http://golang.org/pkg/json/) packages. | |
Thus, the core encoder API should look like: | |
:::go | |
type Encoder struct {} | |
func NewEncoder(w io.Writer) *Encoder | |
func (enc *Encoder) Encode(v interface{}) os.Error | |
And the decoder API: | |
:::go | |
type Decoder struct {} | |
func NewDecoder(r io.Reader) *Decoder | |
func (dec *Decoder) Decode(v interface{}) os.Error | |
In addition, the package may expose specific type-related encoding/decoding | |
methods, e.g. `.WriteInt(v)`, `.ReadString()`, &c. | |
",https://www.pivotaltracker.com/story/show/19738143 | |
19737479,Argonought: JavaScript,"#argo, #js",6,"Nov 28, 2011","Dec 4, 2011",feature,2,started,"Oct 16, 2011",,,tav,tav,"There needs to be a JavaScript implementation of the [Argonought serialisation | |
format](#item-argonought-serialisation-format). Given the lack of builtin binary | |
data types in JavaScript, we probably want to make use of the [Buffers | |
API](http://nodejs.org/docs/latest/api/buffers.html) on Node.js and [Typed | |
Arrays](https://developer.mozilla.org/en/JavaScript_typed_arrays) on browsers. | |
We should also time the typed array implementations on recent browsers as | |
[benchmarks from early 2011](http://blog.n01se.net/?p=248) indicate that native | |
arrays performed significantly better for read/writes. | |
The core functions will be: | |
* `argo.encode(object)` | |
* `argo.decode(stream)` | |
And, to take advantage of JITs on modern interpreters, we may also want to | |
expose monomorphic functions for the specific type encoders, e.g. | |
`argo.encodeString(string)`. | |
",https://www.pivotaltracker.com/story/show/19737479 | |
20060845,OCSP stapling,#nodule,6,"Nov 28, 2011","Dec 4, 2011",feature,2,started,"Oct 24, 2011",,,James Arthur,tav,,https://www.pivotaltracker.com/story/show/20060845 | |
20061075,'dev' mode cmd line arg --single-server hardwires single node,#foo,7,"Dec 5, 2011","Dec 11, 2011",feature,1,unstarted,"Oct 24, 2011",,,James Arthur,tav,,https://www.pivotaltracker.com/story/show/20061075 | |
18207977,Client Base,"",7,"Dec 5, 2011","Dec 11, 2011",feature,1,unstarted,"Sep 13, 2011",,,James Arthur,tav,,https://www.pivotaltracker.com/story/show/18207977 | |
18208027,#Hashspaces,"",7,"Dec 5, 2011","Dec 11, 2011",feature,1,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208027 | |
20336305,Reactivate MEDEA Funding thread.,"",7,"Dec 5, 2011","Dec 11, 2011",chore,,unstarted,"Oct 30, 2011",,,James Arthur,Nick Ierodiaconou,,https://www.pivotaltracker.com/story/show/20336305 | |
18208093,Add Item API,"",7,"Dec 5, 2011","Dec 11, 2011",feature,1,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208093 | |
18208079,Query API,"",7,"Dec 5, 2011","Dec 11, 2011",feature,2,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208079 | |
18208047,Message Parser,"",7,"Dec 5, 2011","Dec 11, 2011",feature,2,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208047 | |
18208105,Search Parser,"",8,"Dec 12, 2011","Dec 18, 2011",feature,2,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208105 | |
18208111,Live Messages,"",8,"Dec 12, 2011","Dec 18, 2011",feature,2,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208111 | |
18208145,Controlled Space,"",8,"Dec 12, 2011","Dec 18, 2011",feature,3,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208145 | |
18208157,Access Tokens,"",9,"Dec 19, 2011","Dec 25, 2011",feature,3,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208157 | |
18208161,Access Token Search,@tav,9,"Dec 19, 2011","Dec 25, 2011",feature,1,unstarted,"Sep 13, 2011",,,James Arthur,,"And ok. Heh. | |
",https://www.pivotaltracker.com/story/show/18208161 | |
18208177,Page Views,"",9,"Dec 19, 2011","Dec 25, 2011",feature,2,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208177 | |
18208189,Cajoling #! coffee,"",9,"Dec 19, 2011","Dec 25, 2011",feature,2,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208189 | |
18208221,Markdown,"",9,"Dec 19, 2011","Dec 25, 2011",feature,1,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208221 | |
18208231,{{ wiki }},"",10,"Dec 26, 2011","Jan 1, 2012",feature,3,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208231 | |
18208235,Hooks,"",10,"Dec 26, 2011","Jan 1, 2012",feature,2,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208235 | |
18208243,Handshakes,"",10,"Dec 26, 2011","Jan 1, 2012",feature,3,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208243 | |
18208341,Channel API,"",11,"Jan 2, 2012","Jan 8, 2012",feature,1,unstarted,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208341 | |
20738885,"Notifications (This is a core part of the OS experience, including things like email integration on the live server. How do they get experienced and how are they customised?).","#app, #design, #concept",,,,feature,,unscheduled,"Nov 8, 2011",,,Ifung Lu,,,https://www.pivotaltracker.com/story/show/20738885 | |
20738865,How Context and Networks affect the presentation / operation of apps and how users understand this (linked to 1. above). ,"#app, #design, #concept",,,,feature,,unscheduled,"Nov 8, 2011",,,Ifung Lu,,,https://www.pivotaltracker.com/story/show/20738865 | |
20738835,Networks i.e. for example the Hub Community space (How do users / resources get attached to networks and navigate them in terms of discoverability and messaging in/out?).,"#app, #design, #concept",,,,feature,,unscheduled,"Nov 8, 2011",,,Ifung Lu,,,https://www.pivotaltracker.com/story/show/20738835 | |
20738821,Events and if / how these are differentiated from other ad-hoc activity on the platform.,"#app, #design, #concept",,,,feature,,unscheduled,"Nov 8, 2011",,,Ifung Lu,,,https://www.pivotaltracker.com/story/show/20738821 | |
20738809,Ticketing and how it is experienced by users ,"#app, #design, #concept",,,,feature,,unscheduled,"Nov 8, 2011",,,Ifung Lu,,,https://www.pivotaltracker.com/story/show/20738809 | |
20738777,Resources and how they are experienced / transacted by users.,"#app, #design, #concept",,,,feature,,unscheduled,"Nov 8, 2011",,,Ifung Lu,,,https://www.pivotaltracker.com/story/show/20738777 | |
20738751,"Messaging (general UI work, contextual prompts and shortcuts if any such as ‘Action’ buttons, attachments, etc).","#app, #design, #concept",,,,feature,,unscheduled,"Nov 8, 2011",,,Ifung Lu,,,https://www.pivotaltracker.com/story/show/20738751 | |
20738735,Appreciation (in what ways is the concept learnt and first experienced by users – how do users begin to benefit from it quickly?).,"#app, #design, #concept",,,,feature,,unscheduled,"Nov 8, 2011",,,Ifung Lu,,,https://www.pivotaltracker.com/story/show/20738735 | |
20738711,"Trust Maps (our interpretation of follows / circles / ripples etc, and how these are first presented to users and understood).","#app, #design, #concept",,,,feature,,unscheduled,"Nov 8, 2011",,,Ifung Lu,,,https://www.pivotaltracker.com/story/show/20738711 | |
20738689,"The On-boarding process and the sequence of sign-up, sign-on and authentication on the root app.","#app, #design, #concept",,,,feature,,unscheduled,"Nov 8, 2011",,,Ifung Lu,,,https://www.pivotaltracker.com/story/show/20738689 | |
20738659,"Widgets (in particular those related to core OS functionality eg. ‘Who, What, Where, When’ Nav widget)","#app, #design, #concept",,,,feature,,unscheduled,"Nov 8, 2011",,,Ifung Lu,,,https://www.pivotaltracker.com/story/show/20738659 | |
20738629,"App Discovery (The whole OS thing and how it fits with the whole MVP to users, what it presents itself as, discoverability, etc)","#app, #design, #concept",,,,feature,,unscheduled,"Nov 8, 2011",,,Ifung Lu,,,https://www.pivotaltracker.com/story/show/20738629 | |
20071511,"Fallback to JSON with [flag, value] rich types hack for non bytesarray browsers","",,,,feature,,unscheduled,"Oct 24, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/20071511 | |
20060789,Blacklisting,#nodule,,,,feature,,unscheduled,"Oct 24, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/20060789 | |
19877137,'My Guestlist',#app,,,,feature,1,unscheduled,"Oct 19, 2011",,,James Arthur,,A feature that would be awesome to have is a 'my guestlist' where members can add the guests they're expecting within the coming week. Currently they email us so we can add them to an excel sheet - but that's sooo not a viable solution.,https://www.pivotaltracker.com/story/show/19877137 | |
19756741,Amazon EC2,#devops,,,,feature,,unscheduled,"Oct 17, 2011",,,tav,,,https://www.pivotaltracker.com/story/show/19756741 | |
19756737,Dedicated Server Providers,#devops,,,,feature,,unscheduled,"Oct 17, 2011",,,tav,,,https://www.pivotaltracker.com/story/show/19756737 | |
19756713,Server Filesystem,#devops,,,,feature,,unscheduled,"Oct 17, 2011",,,tav,,"We should decide on the filesystem(s) to use on the Togethr EC2 instances: | |
* [Ext4](http://en.wikipedia.org/wiki/Ext4) — pretty reliable and offers great | |
overall performance. | |
* [XFS](http://en.wikipedia.org/wiki/XFS) — offers excellent performance for | |
large files and as of Linux 2.6.37 has significantly improved metadata | |
operations. | |
* [Btrfs](http://en.wikipedia.org/wiki/Btrfs) — extremely promising future | |
candidate but perhaps needs a bit more work to be stable enough for production | |
use. | |
Though [external | |
benchmarks](http://mindplusplus.wordpress.com/2011/02/02/finding-the-fastest-filesystem-2011-edition/) | |
can be insightful, we should conduct tests ourselves. The test scripts should | |
cater for the various kernel/fs/tuning combinations. | |
Tests should be conducted on large EC2 instances and cover the two main volume | |
types: | |
* Temporary instance volumes where we do not care for durability. | |
* Striped EBS volumes where we seriously care about durability. | |
With the latter, it's worth bearing in mind that it is really hard to get | |
reliable data on [EBS I/O | |
rates](http://orion.heroku.com/past/2009/7/29/io_performance_on_ebs/). | |
",https://www.pivotaltracker.com/story/show/19756713 | |
19754693,CoffeeScript Services,#js,,,,feature,,unscheduled,"Oct 17, 2011",,,tav,,"We will be supporting custom services written in | |
[CoffeeScript](http://jashkenas.github.com/coffee-script/) syntax. This is seen | |
as a better alternative to offering JavaScript directly. For example, compare: | |
:::coffeescript | |
listBrowsers = (browsers) -> | |
list = $('<ul />') | |
for [id, name, url] in browsers | |
$(""""""<li id=""#{id}""><a href=""#{url}"">#{name}</a></li>"""""").appendTo list | |
return list | |
With the resulting JavaScript: | |
:::javascript | |
var listBrowsers; | |
listBrowsers = function(browsers) { | |
var _a, _b, _c, _d, id, list, name, url; | |
list = $('<ul />'); | |
_b = browsers; | |
for (_a = 0, _d = _b.length; _a < _d; _a++) { | |
_c = _b[_a]; | |
id = _c[0]; | |
name = _c[1]; | |
url = _c[2]; | |
$(""<li id=\"""" + (id) + ""\""><a href=\"""" + (url) + ""\"">"" + (name) + ""</a></li>"").appendTo(list); | |
} | |
return list; | |
}; | |
",https://www.pivotaltracker.com/story/show/19754693 | |
19754527,Emacs Major Mode for Naaga,"#emacs, #naaga",,,,feature,,unscheduled,"Oct 17, 2011",,,tav,,"There should be a `naaga-mode` for Emacs which makes editing Naaga code | |
extremely pleasant. The mode should require nothing more than the following in a | |
user's `.emacs` config to work: | |
:::scheme | |
(add-to-list 'load-path ""path/to/naaga-mode"") | |
(require 'naaga-mode) | |
(add-to-list 'auto-mode-alist '(""\\.naaga$"" . naaga-mode)) | |
The mode should support syntax highlighting, code completion, automatic | |
indentation, electric backspace and at least the following commands which should | |
be boundable to custom keys: | |
* `naaga-compile-buffer` | |
* `naaga-execute-buffer` | |
* `naaga-shift-region-left` | |
* `naaga-shift-region-right` | |
And, finally, the mode should integrate well with | |
[js2-mode](http://code.google.com/p/js2-mode/) and support basic hooks for | |
extensibility: | |
::: scheme | |
(defun naaga-custom () | |
""naaga-mode-hook"" | |
(set (make-local-variable 'tab-width) 2)) | |
(add-hook naaga-mode-hook | |
'(lambda() (naaga-custom))) | |
For bonus points, the mode should integrate well with `naaga.test`. | |
",https://www.pivotaltracker.com/story/show/19754527 | |
19751671,SSL Certificates,#devops,,,,feature,,unscheduled,"Oct 17, 2011",,,tav,,,https://www.pivotaltracker.com/story/show/19751671 | |
19751669,Trademarks,#legal,,,,feature,,unscheduled,"Oct 17, 2011",,,tav,,"As a defensive measure against idiots like the one who filed for the [Linux | |
trademark and then demanded royalties from Linux | |
distributors](http://en.wikipedia.org/wiki/Linux#Copyright.2C_trademark.2C_and_naming), | |
it would be prudent to trademark ""Ampify"" and ""Togethr"". | |
At the very least, we should file for trademarks with the | |
[USPTO](http://www.uspto.gov/), [U.K. Intellectual Property | |
Office](http://www.ipo.gov.uk/tm.htm) and | |
[OHIM](http://oami.europa.eu/ows/rw/pages/index.en.do) (EU). And, dependent on | |
resources, in as many other countries as we can afford. | |
Since trademarks needed to be actively defended, we also need to come up with an | |
[open and sensible | |
policy](http://linux.slashdot.org/story/00/01/19/0828245/linus-explains-linux-trademark-issues) | |
regarding its usage. | |
",https://www.pivotaltracker.com/story/show/19751669 | |
19751215,Domain Names,#legal,,,,feature,,unscheduled,"Oct 17, 2011",,,tav,,"We need to purchase various domain names relating to the operations of Togethr. | |
The following still need to be bought: | |
* `naaga.io` — the main Naaga domain. | |
* `tgt.hr` — for URL shortening. | |
The domain `ampify.com` seems to be owned by someone called Bri Holt according | |
to the [WHOIS records](http://whois.domaintools.com/ampify.com). Tav has emailed | |
him about buying the domain but hasn't heard anything back. | |
Similarly, `togethr.com` seems to be owned by Xchanging Global Insurance. Since | |
people tend to search it's not really a problem that we don't have these | |
domains, but they would be very nice to have. | |
**Done:** | |
The following domains have already been bought: | |
* `ampify.it` — the main Ampify domain. | |
* `ampifyit.com`, `ampify.org` , `ampify.net` — alternates. | |
* `espians.com` — the main Espians domain. | |
* `togethr.at` — the main Togethr domain. | |
* `togethrat.com`, `togetherat.com` — alternates. | |
",https://www.pivotaltracker.com/story/show/19751215 | |
19748703,PayPal Business Account,#legal,,,,feature,,unscheduled,"Oct 17, 2011",,,tav,,"Given the tragic state of online payment processing, we are left with | |
[PayPal](https://www.paypal.com/) as our only viable option. If we were based in | |
the U.S. we could use various attractive offerings for handling credit cards: | |
* [Braintree](http://www.braintreepayments.com/) | |
* [Samurai](https://samurai.feefighters.com/) | |
* [Stripe](https://stripe.com/) | |
However those offerings are U.S. only. And, furthermore, credit card penetration | |
is still [abysmally low | |
internationally](http://corporate.visa.com/_media/ita-credit-card-report.pdf) — | |
even in countries like the Netherlands, Germany, &c. | |
In comparison, PayPal's user base is extremely attractive. So we need to: | |
* Setup a [PayPal business account](https://www.paypal-business.co.uk/). | |
* Verify it. | |
* Link it to our [business bank account](#business-bank-accounts). | |
But given the constant | |
[horror](http://notch.tumblr.com/post/1096322756/working-on-a-friday-update-crying-over-paypal) | |
[stories](http://www.reddit.com/r/reddit.com/comments/l4q2y/please_help_me_expose_this_newest_paypal_fraud/), | |
we should only use PayPal if we can establish a relationship high up within | |
their corporate structure. Perhaps someone like [Dan | |
Schatt](http://www.linkedin.com/pub/dan-schatt/1/96/961), their head of | |
Financial Innovations? | |
",https://www.pivotaltracker.com/story/show/19748703 | |
19748695,Source Repositories,#devops,,,,feature,,unscheduled,"Oct 17, 2011",,,tav,,"For the reasons outlined in our [getting started with | |
git](http://ampify.it/getting-started-with-git.html#why-git) article, we need to | |
setup git repositories for Ampify and Togethr. | |
**Done:** | |
* [Ampify Repo](https://github.com/tav/ampify). | |
* [Togethr Repo](https://github.com/tav/togethr). | |
* Ask Tav if you'd like write access to any of the repositories. | |
",https://www.pivotaltracker.com/story/show/19748695 | |
19748511,Business Bank Accounts,#legal,,,,feature,,unscheduled,"Oct 17, 2011",,,tav,,"We need business bank accounts for Espians LLP. Given their international | |
presence, [HSBC](http://www.hsbc.co.uk) would probably be the best choice for | |
our main account. As part of setting up the account, we should ensure: | |
* Online access is secured with, at minimum, two-factor authentication. | |
* Core Espians have access to the funds within predefined limits. | |
* Multiple currency accounts and | |
[forex](http://en.wikipedia.org/wiki/Foreign_exchange_market) risk management. | |
* Sub-accounts are setup so as to streamline accounting. | |
We should also hedge our reserves by taking advantage of multiple savings | |
accounts in various jurisdictions. | |
",https://www.pivotaltracker.com/story/show/19748511 | |
19748507,Unlicense,#legal,,,,feature,,unscheduled,"Oct 17, 2011",,,tav,,"It is insane that we cannot simply declare our work to be in the [Public | |
Domain](http://en.wikipedia.org/wiki/Public_domain). The folk at CERN and Tim | |
Berners-Lee were able to place the first implementation of the Web into the | |
Public Domain with this simple document: | |
<div style=""text-align: center""><a | |
href=""http://tenyears-www.web.cern.ch/tenyears%2Dwww/Declaration/Page2.html""><img | |
src=""http://static.ampify.it/img.cern-public-domain-page-2.png"" | |
width=""447px"" height=""552px"" alt=""Public Domain Document"" /></a> | |
</div> | |
Unfortunately we live in more complex times and have to take into account issues | |
like [moral rights](http://en.wikipedia.org/wiki/Moral_rights_(copyright_law)) | |
and their implications. | |
Therefore we need a Public Domain declaration that also doubles up as a license | |
approximating it for the jurisdictions where one can no longer place works into | |
the Public Domain. | |
**Done:** | |
* A document based heavily on [Creative Commons | |
Zero](http://creativecommons.org/publicdomain/zero/1.0/) with additional | |
clauses for grant of patent rights has now been put together as our | |
[Unlicense](http://ampify.it/unlicense.html). | |
* It needs to be reviewed by an international intellectual property lawyer | |
though. | |
* Relatedly, we've proposed a Creative Commons Unlicense to our old friend [Mike | |
Linksvayer](http://wiki.creativecommons.org/User:Mike_Linksvayer), the current | |
Vice President of Creative Commons. | |
",https://www.pivotaltracker.com/story/show/19748507 | |
19746541,Member Agreement (Constitution),#legal,,,,feature,,unscheduled,"Oct 16, 2011",,,tav,,"One of the advantages of [Limited Liability | |
Partnerships](http://www.legislation.gov.uk/ukpga/2000/12/contents) is that they | |
allow you to define your own Member Agreement. We need such a legal document to | |
act as the Espian Constitution for all members of [Espians | |
LLP](#item-incorporate-as-a-legal-entity). | |
Built around the principles of self-rule and autonomy, it should cover: | |
* The rights and obligations of individual members. | |
* The membership classes — from Open Members to Seeds/BDFLs. | |
* The trust-based architecture for governance and decision making. | |
* The pecus-based mechanism for reward and profit sharing. | |
* Mechanisms for making amendments, like in | |
[Nomic](http://en.wikipedia.org/wiki/Nomic). | |
* Mechanisms for handling issues like insolvency, acquisition, &c. | |
* Mechanisms for conflict resolution and healthy friction levels. | |
* Mechanisms for handling properties/assets. | |
* Dedicating intellectual property rights to the [Public | |
Domain](http://en.wikipedia.org/wiki/Public_domain). | |
* Mechanisms for doing transparent accounting and reporting. | |
* Any valuable lessons from [conventional | |
practices](http://www.lawgazette.co.uk/in-business/ten-important-provisions-include-your-partnership-or-llp-agreement). | |
In addition to drawing upon existing corporate governance work, we should also | |
look to: | |
* Progressive work like the [Chaordic Commons](http://www.chaordic.org/). | |
* National constitutions like the [Constitution of the United | |
States](http://en.wikipedia.org/wiki/United_States_Constitution). | |
* Frameworks like the [International Bill of Human | |
Rights](http://en.wikipedia.org/wiki/International_Bill_of_Human_Rights). | |
* Influential work like the [Federalist | |
Papers](http://en.wikipedia.org/wiki/Federalist_Papers). | |
* Notes like the [Common Economic Protocols](http://cep.metropipe.net/). | |
* Fictional work like the [Martian | |
Constitution](http://anti-state.com/forum/index.php?board=3;action=display;threadid=2564). | |
We have the expertise in-house to draw up the initial drafts, but we need to | |
have it finalised by a law firm. Perhaps our old lawyers at [DLA | |
Piper](http://www.dlapiper.com/) would be suited or perhaps a more specialised | |
firm? | |
",https://www.pivotaltracker.com/story/show/19746541 | |
19746537,VAT Registration,#legal,,,,feature,,unscheduled,"Oct 16, 2011",,,tav,,"Given that we expect to pass the [VAT registration | |
threshold](http://www.hmrc.gov.uk/vat/start/register/when-to-register.htm) of | |
£73,000 relatively soon after launch, it seems worthwhile to voluntarily | |
[register with | |
HMRC](http://www.hmrc.gov.uk/vat/start/register/how-to-register.htm). | |
Once we've registered, we must make sure to charge VAT to all non-VAT registered | |
customers [within the | |
EU](http://en.wikipedia.org/wiki/European_Union_value-added_tax). | |
",https://www.pivotaltracker.com/story/show/19746537 | |
19738145,Argonought: Python,"#argo, #python",,,,feature,,unscheduled,"Oct 16, 2011",,,tav,,"There needs to be a `ampify.argo` module providing a Python implementation of | |
the [Argonought serialisation format](#item-argonought-serialisation-format). | |
The core API should be: | |
* `argo.encode(object)` | |
* `argo.decode(stream)` | |
When performance becomes an issue, it might be worthwhile to leverage the | |
[extmodules | |
support](https://github.com/pypy/pypy/commit/22d94d09eb51fc6aa8c9415ba03421efed0d9141) | |
we've added to PyPy and implement the module directly in `RPython`. | |
",https://www.pivotaltracker.com/story/show/19738145 | |
19737539,Argonought Serialisation Format,#argo,,,,feature,,unscheduled,"Oct 16, 2011",,,tav,,"There are hundreds of serialisation/exchange formats/protocols: [ASN.1][], | |
[Avro][], [BERT][], [BSON][], [Etch][], [Gob][], [Hessian][], [JSON][], | |
[MessagePack][], [Pickle][], [Protocol Buffers][], [S-Expressions][], [SOAP][], | |
[Thrift][], [Universal Binary JSON][], [XDR][], [XML-RPC][], [YAML][], &c. | |
They are all brilliant in their own way. But, unfortunately, none of them | |
offer the full set of features that we want: | |
* JSON-like simplicty. | |
* Efficient binary encoding. | |
* Rich set of builtin types -- currencies, geo-location, sets, &c. | |
* Optional streaming support. | |
* Support for synchronous/async calls. | |
* Ability to define arbitrary environment/headers. | |
* Architecture independent representation. | |
* No need to escape binary data. | |
* Lexicographically sortable encoding. | |
* Dynamic (No IDLs or code generation). | |
[BERT][] and BERT-RPC from GitHub are the closest existing format to the above | |
ideal. Unfortunately it doesn't support the much needed [lexicographically | |
sortable encoding](#item-lexicographically-sortable-representation-of-numbers) | |
or the full set of desired builtin types: | |
* `boolean` | |
* `bytestream` | |
* `currency` | |
* `datetime` | |
* `error` | |
* `float` — float64 | |
* `handshake` | |
* `header` | |
* `identity` | |
* `int32` | |
* `int64` | |
* `item` | |
* `geopt` | |
* `link` — amp links | |
* `list` | |
* `map` | |
* `number` — decimals & arbitrary precision integers | |
* `request` | |
* `response` | |
* `route` | |
* `set` | |
* `storageref` | |
* `stream` | |
* `string` — utf-8 encoded | |
* `symbol` | |
* `transaction` | |
* `uint32` | |
* `uint64` | |
* `unit` | |
* `url` | |
We will therefore be defining a new serialisation format called Argonought — a | |
play on JSON and [the Argonauts](http://en.wikipedia.org/wiki/Argonauts) — that | |
will provide all of the desired functionality and support for the desired data | |
types. | |
It may also be worth pointing out the downsides to the | |
[CORBA](http://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture)-esque | |
formats like Protocol Buffers and Thrift. These depend on specifications being | |
defined using an | |
[IDL](http://en.wikipedia.org/wiki/Interface_description_language) and code | |
being generated to support the specification in target languages. | |
This can definitely be attractive in certain contexts, but it can also prove to | |
be a right pain as developers have to take on the burden of constantly keeping | |
both the IDL generated code *and* the app code up-to-date at multiple locations. | |
For example, with Protocol Buffers, you'd have to first create a specification: | |
:::pb | |
message Person { | |
required string name = 1; | |
required int32 id = 2; | |
optional string email = 3; | |
} | |
Then you'd have to generate the code for your target languages before you can | |
start doing anything, e.g. | |
:::python | |
person = Person() | |
person.set_name(""John Doe"") | |
person.set_id(1234) | |
person.set_email(""jdoe@example.com"") | |
In contrast, consider the simplicity of JSON: | |
:::javascript | |
{ ""type"": ""Person"", | |
""name"": ""John Doe"", | |
""id"": 1234, | |
""email"": ""jdoe@example.com"" } | |
It allows for dynamic development as there's no intermediate step. And should | |
the developer wish to add a new field, there'd be no need to update the spec and | |
the generated code in all target languages before making changes to the actual | |
application code! | |
[ASN.1]: http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One | |
[Avro]: http://hadoop.apache.org/avro/docs/current/ | |
[BERT]: http://bert-rpc.org/ | |
[BSON]: http://bsonspec.org/ | |
[Etch]: https://cwiki.apache.org/ETCH/ | |
[Gob]: http://golang.org/pkg/gob/ | |
[Hessian]: http://hessian.caucho.com/doc/hessian-overview.xtp | |
[JSON]: http://www.json.org/ | |
[MessagePack]: http://msgpack.sourceforge.net/ | |
[Pickle]: http://docs.python.org/library/pickle.html | |
[Protocol Buffers]: http://code.google.com/p/protobuf/ | |
[S-Expressions]: http://en.wikipedia.org/wiki/S-expression | |
[SOAP]: http://www.w3.org/TR/soap/ | |
[Thrift]: http://incubator.apache.org/thrift/ | |
[Universal Binary JSON]: http://ubjson.org/ | |
[XDR]: http://www.rfc-editor.org/rfc/rfc4506.txt | |
[XML-RPC]: http://www.xmlrpc.com/ | |
[YAML]: http://www.yaml.org/ | |
",https://www.pivotaltracker.com/story/show/19737539 | |
19727305,Lexicographically Sortable Representation of Numbers,#argo,,,,feature,,unscheduled,"Oct 15, 2011",,,tav,,"When dealing with numbers, most people don't care whether it's an unsigned | |
32-bit integer or a 128-bit decimal. Even programmers have been spoilt by | |
automatic type coercion in many dynamic languages, e.g. | |
:::irb | |
>> 1000000.class | |
=> Fixnum | |
>> 10000000000.class | |
=> Bignum | |
Unfortunately this support is not reflected in most datastores. App Engine, for | |
example, indexes strings up to 500 bytes in length but | |
[truncates](http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#IntegerProperty) | |
integer values greater than 64 bits. | |
If one were to try and encode the number as a string to take advantage of the | |
extra space, the naive approach fails quite quickly: | |
:::irb | |
>> '9' > '8' | |
=> true | |
>> '1000' > '9' | |
=> false | |
The official documentation for SimpleDB even | |
[recommends](http://developer.amazonwebservices.com/connect/entry.jspa?categoryID=152&externalID=1232) | |
the usual tricks of negative-number offsetting and zero padding as a solution to | |
this problem: | |
:::irb | |
>> '1000' > '0009' | |
=> false | |
But this approach gets a massive FAIL since it requires not only having to | |
predefine the largest possible value (the exact problem we're trying to avoid!), | |
but also ends up wasting a lot of space due to the zero padding. | |
In order to support numeric values in our datastore, we need an efficient | |
representation of arbitrary precision integers that maintains natural numeric | |
order when [sorted | |
lexicographically](http://en.wikipedia.org/wiki/Lexicographical_order). Ideally, | |
it would also be able to handle reasonably high precision decimals too. | |
**Done:** | |
:::pycon | |
>>> argonought.pack_number(8234364) # takes just 3 bytes! | |
'\xfe\xa2\xa0' | |
>>> argonought.pack_number(8234364) > argonought.pack_number(-234364) | |
True | |
* As part of Argonought, we have defined and implemented such an encoding. | |
* It can handle, subject to memory limits, numbers of whatever size — including | |
decimals like `1.40498442367601246105`. | |
* The precision of decimal values is limited to 20 digits after the decimal | |
point. This currently wastes spaces and we may want to improve upon this. | |
",https://www.pivotaltracker.com/story/show/19727305 | |
19725423,Browser Support,"@tav, #js",,,,feature,,unscheduled,"Oct 15, 2011",,,tav,,"Togethr depends on a lot of modern ""[HTML5](http://www.html5rocks.com/)"" | |
features. And given the significant use of client side processing, we can only | |
offer a smooth user experience on relatively modern browsers with fast | |
JavaScript interpreters. | |
Therefore, we need a `browser.supported()` function which will do [feature | |
detection](http://www.quirksmode.org/js/support.html) for functionality like: | |
* [Canvas](http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html) | |
* [CSS3](http://www.w3.org/TR/CSS/) | |
* [HTML5 History](http://www.w3.org/TR/html5/history.html) | |
* [JSON](http://www.ecma-international.org/publications/standards/Ecma-262.htm) | |
* [Typed Arrays](http://www.khronos.org/registry/typedarray/specs/latest/) | |
* [Web Messaging](http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html) | |
* [Web Sockets](http://www.w3.org/TR/websockets/) | |
* [Web Storage](http://www.w3.org/TR/webstorage/) | |
* [Web Workers](http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html) | |
* [XMLHttpRequest2](http://www.w3.org/TR/XMLHttpRequest2/) | |
Given the requirements, we will probably only be supporting the following | |
browsers: | |
* IE 10+ | |
* iOS Safari 5+ | |
* Chrome 14+ | |
* Firefox 6+ | |
* Opera 12+ | |
* Safari 5.1+ | |
For all other browsers, we need a `browser.upgrade()` function which will prompt | |
the user to upgrade to a more modern browser for their OS. And for those with | |
JavaScript disabled, we need a similar message within the main template's | |
`<noscript>` tag. | |
",https://www.pivotaltracker.com/story/show/19725423 | |
19594627,Incorporate as a Legal Entity,#legal,,,,feature,,unscheduled,"Oct 12, 2011",,,tav,,"Of the various legal forms available within England, [Limited Liability | |
Partnerships](http://www.legislation.gov.uk/ukpga/2000/12/contents) offer us the | |
most advantage: | |
* Flexibility in defining our own member agreement. | |
* Tax transparency. | |
* Ability to act as a holding vehicle. | |
We need to register ""Espians LLP"" with [Companies | |
House](http://www.companieshouse.gov.uk) in England & Wales. The founding | |
partners will be: | |
* Tav (Vageesan Sivapathasundaram) | |
* Inderpaul Johar | |
* James Arthur | |
* Mamading Ceesay | |
* Nick Ierodiaconou | |
For purposes of collecting payments through U.S. merchant accounts as provided | |
by the likes of [Braintree](http://www.braintreepayments.com), we may need to | |
incorporate a U.S. subsidiary. Perhaps a | |
[C-Corp](http://en.wikipedia.org/wiki/C_corporation) would be suitable for this. | |
Setting up such a subsidiary would require advice on issues like [transfer | |
pricing rules](http://en.wikipedia.org/wiki/Transfer_pricing) and [avoiding | |
double | |
taxation](http://en.wikipedia.org/wiki/Tax_avoidance_and_tax_evasion#Tax_avoidance). | |
We may even be able to get advice from the [IRS](http://www.irs.gov/) directly. | |
",https://www.pivotaltracker.com/story/show/19594627 | |
19441331,Design Overview,#design:overview,,,,feature,,unscheduled,"Oct 9, 2011",,,tav,,"The design is going to be awesome! | |
",https://www.pivotaltracker.com/story/show/19441331 | |
19400945,Togethr Overview,:overview,,,,chore,,unscheduled,"Oct 7, 2011",,,tav,,"Togethr is the future and it is going to be powered by | |
[Ampify](http://ampify.it), a decentralised application platform. This planfile | |
documents the initial release. | |
If you find this interesting and enjoy hacking on open source projects, do join | |
us on the `#esp` channel on `irc.freenode.net`. | |
",https://www.pivotaltracker.com/story/show/19400945 | |
18913101,Node Track Usage & Logging,"",,,,feature,,unscheduled,"Sep 27, 2011",,,James Arthur,,n.b.: S3 PutObject permission,https://www.pivotaltracker.com/story/show/18913101 | |
18660599,Payment API Client,"",,,,feature,,unscheduled,"Sep 22, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18660599 | |
18480029,"""Fast Switch"" User","",,,,feature,,unscheduled,"Sep 19, 2011",,,James Arthur,,"Cumulative logged in: you're authenticated as multiple users at any time. The current/active user is specified *per tab* by: | |
* adding an id to the end of the #hash (interpretable on a refresh) | |
* sending the id along with the xsrf token | |
Keep auth users list in sync between tabs. Retain remaining duration of cookie when updating. | |
On reload: | |
* if token matches auth user, use it to apply state | |
* if not, strip it out (replace with first auth user) | |
In api handler: | |
* make sure id matches one of the authenticated users",https://www.pivotaltracker.com/story/show/18480029 | |
18481215,Connect social media accounts.,"",,,,feature,,unscheduled,"Sep 19, 2011",,,James Arthur,,"We allow user to connect TW, FB, Google Calendar: | |
* pull in data when signing up / setting profile | |
* ingest social graph & suggest connections | |
* option to post out messages / set event | |
* authorise apps to access post out functionality",https://www.pivotaltracker.com/story/show/18481215 | |
18474779,Incoming Replies,"",,,,feature,,unscheduled,"Sep 19, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18474779 | |
18474229,Email Notifications,"",,,,feature,,unscheduled,"Sep 19, 2011",,,James Arthur,,"http://sendgrid.com/ | |
",https://www.pivotaltracker.com/story/show/18474229 | |
18473259,Upload files via S3,"",,,,feature,,unscheduled,"Sep 19, 2011",,,James Arthur,,"Raw files on S3. | |
Cache thumbs / previews (etc.) in disk cache, e.g.: Haystack / bitcask. | |
Force mimetypes.",https://www.pivotaltracker.com/story/show/18473259,"They recently added automated encryption support. (tav - Oct 6, 2011)" | |
18481207,Avatar select from connected services.,avatar,,,,feature,,unscheduled,"Sep 19, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18481207 | |
18471113,Avatar resize / cache / serve.,avatar,,,,feature,,unscheduled,"Sep 19, 2011",,,James Arthur,,"Use `user.key()` and `user.modified` to generate an image serving url. This is served with a 2 week max-age header and cached in the browser. | |
When we do a query / any server side api function that gets items, we do:: | |
:::python | |
for item in results: | |
accumulate(by, from, refs) # refs e.g.: `~tav/thruflo` | |
for item in accumulated: | |
get_pref_nick_and_modified(item) | |
Return the data to the client side where the js api function we provide to the apps generates a serving url. | |
The handler for the serving url knows: | |
* user.key() | |
* user.modified | |
* x | |
* y | |
Does:: | |
user = cache.get or db.get | |
serve cache resize user.avatar | |
invalidate `user/*` cache on user.put. | |
",https://www.pivotaltracker.com/story/show/18471113 | |
18470177,Optimise db package field names,"",,,,feature,,unscheduled,"Sep 19, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18470177 | |
18394891,Node.js OpenSSL,"",,,,feature,,unscheduled,"Sep 16, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18394891 | |
18208507,Aliases,"",,,,feature,,unscheduled,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208507 | |
18208505,Address Book,"",,,,feature,,unscheduled,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208505 | |
18208327,Javascript Big Decimal,"",,,,feature,,unscheduled,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208327 | |
18208287,Braintree Setup,"",,,,feature,,unscheduled,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208287 | |
18208311,Braintree Integration,"",,,,feature,,unscheduled,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208311 | |
18208523,Amp Creds,"",,,,feature,,unscheduled,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208523 | |
18596945,Appreciation,"",,,,feature,,unscheduled,"Sep 21, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18596945 | |
18208517,Subscriptions,"",,,,feature,,unscheduled,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208517 | |
18208295,Terms of Service and Privacy Policy,#legal,,,,feature,,unscheduled,"Sep 13, 2011",,,James Arthur,,"We need to have a decent [terms of | |
service](http://en.wikipedia.org/wiki/Terms_of_service) and [privacy | |
policy](http://en.wikipedia.org/wiki/Privacy_policy) for Togethr. They should be | |
easily readable and focus on giving users as much control as possible while | |
minimising our exposure to litigation. | |
There are a number of resources under the Creative Commons that we could use as | |
a starting point: | |
* [WordPress Terms of Service](http://en.wordpress.com/tos/) | |
* [Automattic Privacy Policy](http://automattic.com/privacy/) | |
But the final version needs to be reviewed by an appropriate law firm — making | |
sure to avoid any [costly | |
punctuation](http://www.theglobeandmail.com/report-on-business/article838561.ece). | |
",https://www.pivotaltracker.com/story/show/18208295 | |
18208481,Usage Tracking,"",,,,feature,,unscheduled,"Sep 13, 2011",,,James Arthur,,,https://www.pivotaltracker.com/story/show/18208481 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment