Contribute to Open Source. Search issue labels to find the right project for you!

v1.1 - Theming requirements

  • Theme article listing page (options for with image and no image, or combinations thereof).
  • Theme article images (on article page)
    • make header image full-width option (rather than constrained by content width). This could be a separate component, leveraging the v1.1 image component?
  • Fix up alert/page messages
  • Add colours and button variations (outline, secondary, tertiary).
Updated 26/06/2017 02:49

v1.2 - New Component Planning


… any remaining items that are dropped from v1.1, and:

  • Megamenu (rich megamenu with a list of links, but also an optional article stub or product promo?)
  • Testimonial list (and hence ‘testimonial item’), removed from v1.1, but I still think it’s useful eventually. They’re pretty commonly required, and often look different from
Updated 26/06/2017 02:42

Road to 1.0

  • [ ] Components #238
  • [ ] requestAnimationFrame #90
  • [ ] Optimize patch
    • [ ] Bailout when parent is a text node. #216
    • [ ] textContent → nodeValue.
    • [ ] Cache old keys.
  • [ ] Add typings #87
  • [ ] Website #146
Updated 25/06/2017 07:11

All `Del` functions should take a params


Deleting a resource doesn’t technically anything besides an ID in most cases, but a problem with the majority of our Del functions right now is that there’s no way to specify request-level information like Stripe-Account or Idempotency-Key. In other action types, this can be specified using the params type for that resource which inherits fields from stripe.Params.

We should fix this by just adding a params as a second argument to every Del function. It’s going to be an annoying breaking change, but the migration is easy at least, and it’ll leave things in better shape.

Currently we’ve got about five Del functions that take a params and the rest don’t:

$ ag 'func Del'
191:func Del(id string) (*stripe.Account, error) {

52:func Del(id string) (*stripe.ApplePayDomain, error) {

145:func Del(id string, params *stripe.BankAccountParams) (*stripe.BankAccount, error) {

131:func Del(id string, params *stripe.CardParams) (*stripe.Card, error) {

113:func Del(id string) (*stripe.Coupon, error) {

167:func Del(id string) (*stripe.Customer, error) {

18:func Del(customerID string) (*stripe.Discount, error) {
31:func DelSub(subscriptionID string) (*stripe.Discount, error) {

53:func Del(id string) (*stripe.EphemeralKey, error) {

113:func Del(id string) (*stripe.InvoiceItem, error) {

94:func Del(id string, params *stripe.CustomerSourceParams) (*stripe.PaymentSource, error) {

117:func Del(id string, params *stripe.PlanParams) (*stripe.Plan, error) {

234:func Delete(id string) error {

105:func Del(id string) (*stripe.Recipient, error) {

259:func Delete(id string) error {

116:func Del(id string, params *stripe.SubItemParams) (*stripe.SubItem, error) {

Tagging this as future for now.

Updated 23/06/2017 16:42 1 Comments

pmbootstrap fails if the host architecture isn't x86_64


The log output:

(010899) [23:23:01] % sudo mount --bind /home/pi/.local/var/pmbootstrap/cache_apk_aarch64 /home/pi/.local/var/pmbootstrap/chroot_buildroot_aarch64/var/cache/apk
(010899) [23:23:01] % sudo mkdir -p /home/pi/.local/var/pmbootstrap/chroot_buildroot_aarch64/home/user/.abuild
(010899) [23:23:01] % sudo mount --bind /home/pi/.local/var/pmbootstrap/config_abuild /home/pi/.local/var/pmbootstrap/chroot_buildroot_aarch64/home/user/.abuild
(010899) [23:23:03] sigfilename: sbin/
(010899) [23:23:03] sigkey:
(010899) [23:23:03] extracted: /tmp/pmbootstraphob2yzsusig
(010899) [23:23:03] extracted: /tmp/pmbootstrap7dr6xxnuapk
(010899) [23:23:03] Verify apk.static signature with /home/pi/Projects/Other/pmbootstrap/keys/
(010899) [23:23:03] % openssl dgst -sha1 -verify /home/pi/Projects/Other/pmbootstrap/keys/ -signature /tmp/pmbootstraphob2yzsusig /tmp/pmbootstrap7dr6xxnuapk
Verified OK
(010899) [23:23:03] Verify the version reported by the apk.static binary (must match the package version 2.7.1-r1)
(010899) [23:23:03] % /tmp/pmbootstrap7dr6xxnuapk --version
apk-tools 2.7.1, compiled for armhf.
(010899) [23:23:03] sigfilename: sbin/
(010899) [23:23:03] sigkey:
(010899) [23:23:03] extracted: /tmp/pmbootstrapqfd9n7uzsig
(010899) [23:23:03] extracted: /tmp/pmbootstrapxzdo96sdapk
(010899) [23:23:03] Verify apk.static signature with /home/pi/Projects/Other/pmbootstrap/keys/
(010899) [23:23:03] % openssl dgst -sha1 -verify /home/pi/Projects/Other/pmbootstrap/keys/ -signature /tmp/pmbootstrapqfd9n7uzsig /tmp/pmbootstrapxzdo96sdapk
Verified OK
(010899) [23:23:03] Verify the version reported by the apk.static binary (must match the package version 2.7.1-r1)
(010899) [23:23:03] % /tmp/pmbootstrapxzdo96sdapk --version
apk-tools 2.7.1, compiled for armhf.
(010899) [23:23:03] (native) install alpine-base
(010899) [23:23:03] % sudo ln -s /var/cache/apk /home/pi/.local/var/pmbootstrap/chroot_native/etc/apk/cache
ln: failed to create symbolic link ‘/home/pi/.local/var/pmbootstrap/chroot_native/etc/apk/cache’: File exists
(010899) [23:23:03] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(010899) [23:23:03] NOTE: The failed command's output is above the ^^^ line in the logfile: /home/pi/.local/var/pmbootstrap/log.txt
(011078) [23:25:24] % tail -f /home/pi/.local/var/pmbootstrap/log.txt -n 30
(011078) [23:25:24] *** output passed to pmbootstrap stdout, not to this log ***
Updated 26/06/2017 22:54 1 Comments

Think about RESThooks


From the docs:

Minimum Implementation Walkthrough

To comply with the REST Hooks pattern, there is a minimum set of pieces you’ll need to add to have a working implementation. This article will outline those minimums:

  1. Mechanism to store subscriptions
  2. Mechanism to modify subscriptions via API
  3. List and implement event types
  4. Mechanism to send hooks

1 is already implemented (sort of). 2 not yet 3 These are the teamcity build events 4 Already done

Also, take some time to think about retries

Updated 21/06/2017 10:40



Let’s discuss how components could look like in a future version of HyperApp.



const Counter = (props, children) => ({
  state: {
    value: props.value
  view: ({ value }, { inc, dec }) =>
      <button onclick={inc}>+</button>
      <button onclick={dec}>-</button>
  actions: {
    inc: state => state + 1,
    dec: state => state - 1


  state: {
    title: "Hello."
  view: (state, actions) =>
      <Counter value={1} />


All credit goes to @MatejMazur: - -


  • 147

  • 219

Updated 26/06/2017 09:22 12 Comments

Use ETW events


There are many examples how to use ETW in System.Buffer, in RecyclableMemoryStream, etc. It is quite easy and more appropriate for performance monitoring than tracing or logging. Profilers support such events quite well. This will be relevant when real-world big integration tests are done.

However, since we are already using the mentioned libraries and the main enemy is needless allocations that are visible even without any ETW, this is a nicety for now. Should add them only when there are tweakable configs that could have double-digit+ percentage performance impact.

Updated 20/06/2017 20:09

Add video support


Media option

Investigate to see if videos can be added via the entity browser.

Add video media bundle

Add support for: * Youtube * Vimeo * Locally hosted video

Non-media option if the media browser doesn’t work out

Another option is to add the ability to embed third party objects using the URL Embed module ( It allows embedding in WYSIWYG and on an entity field. We could create a component called Component: URL Embed.

Updated 22/06/2017 01:33

Down repository prevents vendoring of other packages


What version of Go (go version) and dep (git describe --tags) are you using?

Go 1.9beta1, v0.1.0-172-gdbd910b (latest as of right now)

What dep command did you run?

dep ensure

What did you expect to see?

The package should have been ensured.

What did you see instead?

solve error: No versions of (some private repo) met constraints:
    master: unable to deduce repository and source type for: ""
ensure Solve(): No versions of (some private repo) met constraints:
    master: unable to deduce repository and source type for: ""

The (some private repo) package depends on That vanity domain is currently down.

But is already vendored, is in the lockfile, is not a dependency of and should not need to be touched at all.

Updated 20/06/2017 13:01 4 Comments

v1.1 - New Component Planning


Current requirements for ‘Coney Island’: * Accordion list (and hence ‘accordion item’) * iFrame * Adaptive Image * Allows the defining of images on a per-breakpoint level * Image Block (contains text, title, CTA) * Tab list (and hence ‘tab item’) * ~Testimonial list (and hence ‘testimonial item’) - this may be too specific~ * Slideshow (contains title, sub-title, CTA link and image) * Row (contains widths {auto, ¼, 1/3, ½, 3-3-3, 4-4, 4-8, 8-4, 3-5, 5-3}, distribution: {around, between}, and alignment: {start, center, end} )

Thoughts @jrhodes-sitback @khadro @mlhoque ?

The outcome of this issue should be tickets raised against v1.1.

Updated 26/06/2017 02:34 4 Comments

Change 'paragraph' label to 'component'


Wherever we have a paragraph reference field, we should be change the below to be ‘Component’ and ‘Components’, respectively:

<img width=“700” alt=“cursor_and_manage_form_display___presto_demo” src=“”>

This should affect the ‘manage form display’ at following places: * Basic page content type * Block with components block type * Icon box list paragraph type (this may need to be ‘Icon box’ and ‘Icon boxes’)

Updated 19/06/2017 04:38

Online algorithms


Spreads library is designed for online algorithms (among other goals). Some of non-trivial ones are already implemented: moving median with fixed length, moving regression (commented out temporarily).

Here is the place to collect links to interesting online algorithms that could be useful and have known implementations.

Online algorithm

75, #82

Online Algorithms in High-frequency Trading

Longest increasing subsequence

Insertion sort (Review: this is the method SortedDeque is waiting to implement and even has/had comments)

Algorithms for calculating variance


Updated 21/06/2017 02:34

Create stores


Stores will hold a reference to which items they sell and at what estimated price compared to the estimated price in the actual item

would probably mean we would pull price right out of item and have item really just be abstract concepts where the groc_item_store table would hold the actual products themselves

Updated 18/06/2017 20:26

Display whole calendar for better overview


Possible to see the whole calendar to get an overview, instead of having to scroll down to the date. Request from beta-tester with iPhone.

It should be specified what such a calendar should include, e.g. should it be possible - to see everyone’s bookings - to see just your own bookings - to see no bookings at all - to book from the calendar overview - other things…

Ask users to elaborate on this or do some user studies.

Updated 17/06/2017 13:34

CMSIS-Driver C++



the goal of our development team is to move to C++ in mid- to long-term time frame and at the same time we want to rely more on standards/APIs. A discussion is going on if we want to use the CMSIS-Driver API and either wrap it by C++ or implement the driver+API itself in C++ and provide some compatibility layer in C if ever needed. Both “solutions” do not seem to be reasonable, because the CMSIS-Driver API introduces an instance pointer to introduce some object like behaviour. This is exactly what C++ already has under the hood.

My question: How would you recommend to integrate these Drivers into a C++ enviroment? Or is there even a C++ Interface planned?

Thank you very much.

Updated 19/06/2017 07:42 2 Comments

"The Mainline Kernel"


One of the goals of pmOS is to unify multiple devices in using one and the same kernel binary. For a few selected devices, this goal is coming unexpectedly close already - in the meaning of: the kernel should boot, and we should get output on the serial interface, allowing further development from there: * nokia-rx51 (N900) (most hardware is actually working!) * lg-hammerhead (Nexus 5) * lg-mako (Nexus 4)? (assuming it is similar enough to the nexus 7, ticket) * “Nexus 7” and more devices listed there in the comments (asus-grouper would be supported?) * QEMU ;)

We won’t be able to use Alpine’s linux-vanilla for these devices, because: * We really need the latest kernel (as support for these devices is being actively developed on) * We will need custom patches, until they are all mainlined * We will need different config options for the kernel.

Tasks: * [ ] Create a linux-postmarketos aport based on linux-vanilla * [ ] Get it working with qemu (should be the easiest) * [ ] Get it working with nokia-rx51 * [ ] Get it working with lg-hammerhead * [ ] Close this ticket and create a wiki page for the mainline kernel packaging

Updated 15/06/2017 16:18

Add functional tests


See tests/src/Functional/StandardTest.php for an example of how the standard profile does it.

What this will require: * Travis setup to run an install as part of the build * Test the following things: * Install without eCommerce * Install with eCommerce * “tarball” install without the extra vendor libraries

Updated 14/06/2017 05:16

React Router 4 Architecture


We need to talk about the ramifications of upgrading to React Router 4 on our recommended architecture.


In the past we’ve used the route manifest in React Router 3 as a way to “wireframe out” the structure of our apps. Each route gets a presenter, that presenter gets a view, etc

export default (
  <Route component={Dashboard} path="/">
    <IndexRedirect to="strategies" />

    <Route path="strategies" component={Strategies}>
      <IndexRoute component={StrategiesAggregate} />
      <Route path="compare" component={StrategiesHistorical} />

    <Route path="factors" section="factors" component={Factors}>
      <IndexRoute component={FactorsAggregate} />
      <Route path="compare" component={FactorsHistorical} />

This has mostly worked well, but there’s a couple of issues I’ve noticed:

  • It’s awkward to split app bundles by route, because there’s a central route config (
  • It requires you to build a static route hierarchy up front, which can make changes hard later

Why we’re talking about this

React Router 4 keeps routing within components. Instead of a route manifest, you use routing components within your normal application component tree. For example, a sidebar presenter in Microcosm might look like:

class UsersSidebar extends Presenter {
  render () {
      <Route path="/:user" component={UserShowPanel}/>
      <Route path="/:user/edit" component={UserEditPanel}/>
        <Link to="/">Go back</Link>

So there’s not a hard distinction between controlling presenters and passive views. This is okay. In our apps, we’ve started to see benefits from using presenters only where they are needed, rather than having a structure that crams presenters in as default “containers” and views for the sake of consistency…

What to do about it

  • [ ] Should we drop the “presenters” directory, and just have “views”?
  • [ ] Could we write a custom router that hooks directly into Microcosm? See
  • [ ] Update the architecture docs, and make better recommendations for structuring apps
  • [ ] Split routes by default on the quick start, and in our internal React boilerplate
Updated 13/06/2017 20:26

Standardized chemical identity and origination/authorship metadata


All of these would probably be in a dedicated METADATA h5.Dataset?

None of these would be required(?) - this effort would just standardize the Dataset names used to access them?

  • [ ] Chemical identity
    • [ ] Chemical name
    • [ ] Chemical formula
    • [ ] SMILES
    • [ ] InChI
    • [ ] InChIKey
    • …?
  • [ ] Dataset characteristics
    • [ ] Identity of the data contained (eldens, spindens, orbitals, etc.), [have to figure out a good way to annotate datasets containing more than one field (multiple values per voxel)]
    • [ ] Parameters used to generate the dataset
      • [ ] trunc
      • [ ] minmax (isovalue is just a special ‘convenience input` case of this)
      • [ ] signed
    • [ ] Software used to create the .h5cube file?
  • [ ] Authorship
    • [ ] Name
    • [ ] Generation date?
    • [ ] Institution
  • [ ] Upstream software
    • [ ] Program used to generate the data
    • [ ] Version of the program
    • [ ] Method (this will be complicated to implement in a Findable way)
      • HF/DFT (functional)/post-HF, basis, ECPs, custom settings, etc.
    • [ ] Entire text of input file, maybe?
Updated 16/06/2017 02:41

Enable modification of single datasets stored in an h5cube


E.g., selectively thresholding only one field stored in the file.

This might only really be used to try to further compress a file – it would require copying all of the data to a new .h5cube file, since I’m pretty sure shrinking a dataset within an existing file doesn’t de-allocate any space within the file. Wouldn’t be that hard to do, though.

Would want to implement both a py API and a command line interface for it.

Updated 13/06/2017 03:20

Feature request: asyncio support


Hi folks,

I was wondering what it would take to get this library to support asyncio. This would mean it would be possible to use Python 3.5+ async/await coroutines with a number of async frameworks.

Looking at the code it would be possible to create a new Http Client with say aiohttp, but it looks like the code would need to be modified in other places in order to support it.

Has the Stripe team considered async support?

Updated 12/06/2017 19:39 1 Comments

Member rep table


Each organisation will have a rep defined as a relationship between the org and the individual in Civi. These need to be displayed in a big table for logged in members to view. Will contact, name, email phone, org etc for each rep. Not sure about extracting this from Civi and displaying in a table in Drupal.

Ideally we would also display the member rep on the member organisation node (only viewable by logged in members).

Estimated at 3 days £1,680

Updated 16/06/2017 12:35 1 Comments

Member to be able to send news to other members (without help from ALNAP)


In the short term, ALNAP will publish this news and tag it to show that it was from a member. See issue #113

If this is used by members, they might want to progress to enabling members to publish this themselves:

  • This news wouldn’t be seen by anyone who’s not logged in as a member.
  • This would be on the account page.
  • May be edited by ALNAP after publishing.
Updated 23/06/2017 15:39 1 Comments

Move Verification / Start Connection into Background


Verification and Start Connection can take a while depending on the server and the state between IntelliJ and the Server.

For that it could be advantageous to have it run in the background to avoid delays in the user’s work.

That said this requires changes to the code, changes to the way we report the outcome and checks to avoid the user to execute the tasks multiple times and to deploy while the connection is established.

Because of the sweeping changes this will not be done soon.

Updated 07/06/2017 17:31

Scoping - Payments for events & jobs (how to work around current setup)



Find out specific details how how this is built so that we can work around it and reuse as much of the current systems as possible.

Currently, ALNAP (via the website) can generate a payment request to WorldPay and once paid the items is automatically published.

From OneNote: - Members post for free and non-members pay per post.  - Can we take payment pending approval?  - Currently, automated email upon being approved with payment request.

Needs to use WorldPay May have a manual process (Maria has confirmed that that would be ok)

Linked to #47 (Build jobs submission)

Updated 22/06/2017 15:47 8 Comments

More analytics


a) how many users total are connected (i.e. users that would be targeted without any segmentation) b) how many calls have users been asked to make across all campaigns c) how many calls did users report making across all campaigns And b & c per-campaign in the campaign table, and per-action in the conversations table on campaign pages.

Updated 08/06/2017 22:23

The TVDB API change


From the TVDB API programming page:

A new version of the API has been written which uses JSON instead of XML files. Documentation for this version can be found at It is highly recommended that any new development be done using the new API. This version of the API will continue to function until October 1st, 2017 at which time it will be discontinued.

Updated 24/06/2017 20:52

Graphical Installer


(Far future, just documenting this here.)

I was asked in IRC about providing binary system images for Android files. The problem with that is, that we would have default passwords, and a default encryption key for the whole system image, which renders the full disk encryption useless.

This is my “vision”: * GNU/Linux live CD (actually, better an usb stick image) based on Alpine, that you can boot on any PC or in a VM and pass your USB devices to * It has a fancy version of pmbootstrap with a pyQT? GUI This shouldn’t be that hard actually, because everything is abstracted well (writing to logs, asking for user input, …). Maybe a bit more like a wizard, and maybe with photos of how to enter the flashing mode etc. properly. * It contains pre-compiled packages. * You could choose the phone interface, that you want to install

Updated 20/06/2017 16:29 5 Comments

Mobile UI


Weston is a cool demo, but far from a usable day-to-day shell people can work with.

We need to provide a sane UI.

Example code/projects:


Please contribute any other code/project you know of.

Updated 14/06/2017 15:12 6 Comments

Use the system and userdata partition on Android


The current layout is using only the system partition, in the following way: /dev/install # system partition (or external sd card) /dev/installp1 # unencrypted boot partition with kernels and initramfs files (not used yet, should be used by a bootloader at some point, so you could select the kernel you want to boot) /dev/installp2 # encrypted root partition

New idea for the non-sdcard-installation, to make more use of the existing partitions, but not changing the partition layout (so it stays compatible with other Android ROMs!): * use lvm over the /dev/installp2 and the userdata partition, so we have one big partition * encrypt that partition with cryptsetup * directly put the root partition on top of that

There has been some discussion in IRC, if we should split up the home and root partition, like in traditional GNU/Linux installations. The advantage is, that you can re-install everything on your root partition without touching /home. The disadvantage is, that you would need to specify the size in advance and can’t change the size of root or home afterwards (except with another lvm layer, which makes it more complicated).

My proposal: do the new layout, with one root partition first. If there is demand for the extra home partition, we could add an option for that later.

As always, this is open for discussion, please share your opinion :)

Updated 04/06/2017 23:18

Generalize transport using an interface


The current implementation supports using a http.Client. As discussed in #1, it would be nice if there is a transport interface, so that users of the package can implement their own transport.

In my case, I am using graphql over GRPC. GRPC is built on top of http.Client and the http.Client is not used directly. Instead, the a GRPC connection is passed to the generated GRPC client. For a simple example see:

I’d imagine that the interface should be quite low level and “close to the wire”. In other words, transports should not have to know too much about how graphql works.

Updated 01/06/2017 17:16 2 Comments

Fork me on GitHub