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

Write a General Data Protection Regulation complaint privacy policy


According to the GDPR. Every organization that collects user data should inform the user on what data is collected and how it is being used. Any time a company collects personal data of an EU citizen, it will need consent from that person. Users also need a way to revoke that consent. That means a feature that will allow user to delete data that was collected while registering the user.

Updated 27/05/2018 15:43

Add QAQC auto reporting tool


As we work toward making releases, I believe it would be valuable to have a tool that automatically runs the benchmarks and plots/docs the results for the new version. It doesn’t need to be exhaustive for all objects / results - maybe the top differences.

What this tool should use:

PyLaTex - Python / Matplotlib - LaTeX

What we should show:

  • scatter plots of totalized and average values for all object / results.
  • time series plots for object results (top X number of differences)
  • numerical fitness between benchmark and new release (some examples: Nash-Sutcliffe, Logaritmic Nash-Sutcliffe, Percent Bias, Kling-Gupta).
Updated 27/05/2018 13:38 3 Comments

Feature/121 2



  • Ranking agora exibe os jogadores e ordem de posição do Ranking
  • Agora ao clicar no botão de “perfil” de algum usuário no ranking
  • Se o botão de perfil clicado for o do usuário logado, o botão de exibir perfil é exibido

Qual tipo de mudança o Pull Request introduz?

Adiciona a opção do usuário acessar o perfil de outras pessoas

Qual é o comportanto atual?

O usuário pode apenas acessar seu próprio perfil

Qual é o novo comportamento?

O usuário consegue acessar o perfil de qualquer jogador presente no ranking

Quais as issues o Pull Request finaliza?


Uso do avaliador

  • [ ] Mensagens de commits seguem a guideline proposta;
  • [ ] Os testes foram adicionados mantendo ou aumentando a cobertura de testes;
  • [ ] Documentos necessários foram atualizados ou adicionados;
Updated 27/05/2018 01:34 1 Comments

Display absolute path to the download directory instead of relative path


What is the purpose of your issue?

  • [ ] Bug
  • [ ] Feature Request
  • [ ] Question
  • [x] Other


When running the tool with log level set to debug, we display the directory where track is supposed to be downloaded relative to our current directory. So it appears something like this: DEBUG: Saving to: ../download_directory/Track-Title.ext

It would be more helpful if it were to display an absolute path instead of a relative one.

We can fix this by modifying to use absolute path (geez, I don’t remember why I used a relative path in the first place)

Updated 26/05/2018 08:22

Output error details when a track download fails from a list file


What is the purpose of your issue?

  • [ ] Bug
  • [ ] Feature Request
  • [ ] Question
  • [x] Other


At the moment, we just output WARNING: Failed to download song. Will retry after other songs when a track being downloaded from a list file fails without displaying any further details on error. A better way to do it would be to also display the error message.

For example, this output is not very helpful (Refer #236): ``` INFO: Preparing to download 3 songs

INFO: 1. Tito ‘'El Bambino’‘ Ft Zion Y Lennox - Mi Cama Huele a Ti [El Patrón] ( WARNING: Failed to download song. Will retry after other songs

INFO: 2. el amor tito el bambino lyrics ( WARNING: Failed to download song. Will retry after other songs

INFO: 3. LO APRENDÍ DE TI - HA ASH- PRIMERA FILA- HECHO REALIDAD ( WARNING: Failed to download song. Will retry after other songs ```

Instead, we could have something like this:

INFO: Preparing to download 3 songs

INFO: 1. Tito ''El Bambino'' Ft Zion Y Lennox - Mi Cama Huele a Ti [El Patrón] (
ERROR: .....
WARNING: Failed to download song. Will retry after other songs

INFO: 2. el amor tito el bambino lyrics (
ERROR: .....
WARNING: Failed to download song. Will retry after other songs

ERROR: .....
WARNING: Failed to download song. Will retry after other songs
Updated 26/05/2018 07:47

Syntax Highlighting Improvements


I’ve done a survey of syntax issues of some things I think can be highlighted better. Syntax highlighting can be subjective so it’s not always clear how things should work. I’m thinking it would be preferred to try to address issues with individual PRs rather than trying to do massive changes, however, that might cause a lot of merge conflicts and may be a pain for @jasonwilliams to review (thoughts?). @dten would you be willing to help, or at least review changes or make suggestions?

  • [ ] type-any-identifiers not referenced.
  • [ ] Global const and static values don’t show up in goto symbol.

      const VERSION: u32 = 1;
      static NEXT_ID: AtomicUsize = ATOMIC_USIZE_INIT;

    Const identifier should include (and possibly variable.other.constant.?) and add to RustSymbols.

    I’m not sure what scope static identifiers should have. Most other syntaxes don’t seem to have special support.

  • [ ] Turbofish calls don’t get colored the same as regular calls. They get assigned meta.path.rust instead of support.function.rust.

      // vs
  • [ ] mut highlights weird when part of the type of a trait impl. rust impl<A> Thing for &'a mut A {} I think it should be storage.modifier, not part of the name.
  • [ ] Function and closure parameters don’t highlight irrefutable patterns as regular parameters. I think it looks weird. rust let c = |(foo, bar)| {}; fn f((a, b): (i32, i32)) {}
  • [ ] Newlines in closure arguments breaks highlighting. rust let c = |foo, bar| {};
  • [ ] Comments in strange places doesn’t always work. rust let c = |foo, // weird, but should work bar| {};
  • [ ] Macro calls should not break highlighting on unusual tokens. It would be nice to retain some Rust-like expression handling within macros since that is the common case, however, it shouldn’t break down when given invalid syntax since macros can contain almost anything. I hit this most frequently with serde’s macro where the struct keyword breaks highlighting until the next block closes. rust forward_to_deserialize_any! { f32 f64 char str bytes byte_buf unit unit_struct struct enum identifier ignored_any }
  • [ ] Add support for dyn trait object type keyword. See for some valid/invalid examples.
  • [ ] Hex codes above 0x7f are invalid in string escapes. rust let s = "\xff"; // should be invalid
  • [ ] Unicode escape sequences can include underscores. rust let s = '\u{10_FFFF}';;
  • [ ] Tuple indexes show up with float highlighting. I don’t think the dot should be highlighted (like a field access expression), but I’m uncertain if the number should be highlighted (probably not?). rust t.0;
  • [ ] super and self when used as a path highlight differently, although they are generally the same thing. I think they should be the same (although self should probably stay as variable.language.rust when used as a method parameter/variable). rust pub(super) pub(self) super::foo self::foo use std::collections::hash_map::{self, HashMap}; use super::*;
  • [ ] Support attributes for type or lifetime parameters. rust unsafe impl<#[may_dangle] T: ?Sized> Drop for Box<T> { }
  • [ ] where clauses tend to avoid highlighting much, leaving large blocks of unhighlighted text. Here are some examples, but there are probably many more. rust fn f<F>(func: F) -> usize where F: Fn(usize) -> usize {} fn f<L, R>(lhs: L, rhs: R) where L: IntoIterator<Item=(&'a i32, &'a i32)>, R: IntoIterator<Item=(&'a i32, &'a i32)>, {} // Bounds in generic parameters seem better. fn f<F: Fn(usize) -> usize>(func: f) {} fn f<L: IntoIterator<Item=(&'a i32, &'a i32)>>(lhs: L) {}
  • [ ] for as a trait bound does not highlight as a keyword in a few situations. rust fn f<F: for<'c> Fn(&'c mut Self)>(&mut self, f: F) {} // `unsafe` doesn't correctly highlight here, either. fn f(a: for<'a, 'b> unsafe fn() -> String) {}
  • [ ] Visibility modifiers on struct/union fields doesn’t seem to support anything besides plain pub. rust struct S { // `crate` should highlight here. pub(crate) f1: i32, }
  • [ ] enums don’t highlight any generics. rust enum E<'asdf> {} enum C<T> where T: Copy {} // many other examples
  • [ ] Trait definitions don’t highlight bounds or type parameters. rust trait Foo<'a>: Sized {} trait IntoCow<'a, B: ?Sized> where B: ToOwned {}
  • [ ] Opt-out trait impls highlight weird. rust impl !Send for MyStruct {}
  • [ ] Type parameters in paths (not sure what they are called) highlight as less-than/greater-than operators when they shouldn’t. rust let some_constructor = Some::<i32>; let push_integer = Vec::<i32>::push; let slice_reverse = <[i32]>::reverse;
  • [ ] break/continue labels are highlighted as lifetimes, but probably should be rust 'outer: loop { break 'outer; }

Grammar references: - - - - - -

Currently tested on Rust Enhanced 2.11.0.

Updated 27/05/2018 10:30 4 Comments

Code samples for Naming Checks


update xdoc files with code examples for all checks at sources are at

Good example is sources are at

Updated 25/05/2018 19:53 4 Comments

CoreCLR failed when build in conformance mode (/permissive-)


I build CoreCLR with Visual studio 15.7.1 in conformance mode (/permissive-) on Windows, it failed with error C4596, The changes involved by

Could you help remove the redundant “LinearScan::” on BuildRMWUses. The compiler complains about this in conformance mode (/permissive-)

Failures: d:\coreclr\src\src\jit\lsra.h(1590): error C4596: ‘BuildRMWUses’: illegal qualified name in member declaration

Updated 25/05/2018 06:11

Expand tilde in resource file path


If the resource file path starts with a “~” it will be expanded to the process owner’s home directory (the environment variable HOME must be set correctly). Calling the resource command with a path that started with a tilde would previously result in an error that the “$FILENAME is not a valid resource file”.


  • [ ] Create a simple resource file: echo "workspace -v" > ~/Downloads/res_test.rc
  • [ ] Start msfconsole
  • [ ] Run the command resource ~/Downloads/res_test.rc
  • [ ] Verify that the resource script commands are run and that workspaces are listed verbosely
  • [ ] Run the resource command again using the absolute path to the resource file
  • [ ] Verify that the resource script commands are run and that workspaces are listed verbosely
Updated 25/05/2018 01:19

Change cv default to 5


I think it’s commonly accepted that kfold cross-validation should be done with k=5 or k=10. We do 3 fold by default. Actually in a recent talk Max Kuhn said “never do threefold” and I think he was not even aware that this could have been a jibe.

Again, not sure if we should tag this 1.0 and make it a breaking change or just deprecate it because really no-one should have been using the default anyway.

If someone wants to see data, I’m not opposed to collecting data on this. Actually I think @GaelVaroquaux has some pretty in-depth studies of cross-validation, maybe he even has data.

Updated 26/05/2018 21:54 7 Comments

Change default n_estimators in RandomForest (to 100?)


Analysis of code on github shows that people use default parameters when they shouldn’t. We can make that a little bit less bad by providing reasonable defaults. The default for n_estimators is not great imho and I think we should change it. I suggest 100. We could probably run benchmarks with openml if we want to do something empirical, but I think anything is better than 10.

I’m not sure if I want to tag this 1.0 because really no-one should ever run a random forest with 10 trees imho and therefore deprecation of the current default will show people they have a bug.

Updated 26/05/2018 00:42 5 Comments

Documentation unclear about KernelPCA `X_transformed_fit_`


<!– If your issue is a usage question, submit it here instead: - StackOverflow with the scikit-learn tag: - Mailing List: For more information, see User Questions: –>

<!– Instructions For Filing a Bug: –>


The documentation of KernelPCA is not clear about the X_transformed_fit_ attribute. This attribute is not available when fit_inverse_transform param is False (default). Its only available when its explicitly set True.

Steps/Code to Reproduce

from sklearn.datasets import make_classification
from sklearn.decomposition import KernelPCA

X, y = make_classification()
kpca = KernelPCA()
X = kpca.fit_transform(X)

Actual Results

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'KernelPCA' object has no attribute 'X_transformed_fit_'


Clarify the description string of X_transformed_fit_ just like the dual_coef_ attribute above it, by adding:

Set if fit_inverse_transform is True.


Linux-3.16.0-77-generic-x86_64-with-Ubuntu-14.04-trusty (‘Python’, ‘2.7.6 (default, Nov 23 2017, 15:49:48) \n[GCC 4.8.4]’) (‘NumPy’, ‘1.14.2’) (‘SciPy’, ‘1.0.1’) (‘Scikit-Learn’, ‘0.19.1’)

Updated 24/05/2018 15:18 4 Comments

LeetCode 69. Sqrt(x)

shui/leetcode image

很简单的二分查找题。 java public int mySqrt(int x) { int low = 0, high = x; while (low <= high) { int mid = low + (high - low) / 2; if ((long) mid * mid == x) { return mid; } else if ((long) mid * mid < x) { low = mid + 1; } else { high = mid - 1; } } return low - 1; } 需要注意的是,循环退出条件以及最后的返回值。

当然,还有别的解法。比如位操作-Solution-using-bit-manipulation)、Newton Method

Updated 24/05/2018 09:02

LeetCode 441. Arranging Coins

shui/leetcode image

O(n)的笨办法: java public int arrangeCoins(int n) { int rows = 0; for (int i = 1, r = n - i; r >= 0; r -= ++i) { rows++; } return rows; }

O(1)的数学解法(我怎么就没想到呢): java public int arrangeCoins(int n) { return (int) ((-1 + Math.sqrt(1 + 8 * (long) n)) / 2); }

还是利用上面的公式,但使用二分查找rows实现O(logn): java public int arrangeCoins(int n) { int left = 0, right = n; while (left < right) { int mid = left + (right - left) / 2; if ((long)mid * (mid + 1) / 2 <= n) { left = mid; } else { right = mid - 1; } } return left; } 不知道为什么TLE,我用IDEA调试可以出结果啊。 贴一个AC,几乎同样的代码,下面的代码使用long防溢出: java public int arrangeCoins(int n) { long l = 0, r = n, t = 2 * (long) n; while (l < r) { long m = (l + r + 1) / 2; if ((1 + m) * m <= t) l = m; else r = m - 1; } return (int) l; }看到计算mid时不溢出的方法:mid=left+(right-left)/2,确实很妙。

Update: 今天早上在看JDK源码,看到Arrays.binarySearch0的实现: ```java private static int binarySearch0(long[] a, int fromIndex, int toIndex, long key) { int low = fromIndex; int high = toIndex - 1;

    while (low <= high) {
        int mid = (low + high) >>> 1;
        long midVal = a[mid];

        if (midVal < key)
            low = mid + 1;
        else if (midVal > key)
            high = mid - 1;
            return mid; // key found
    return -(low + 1);  // key not found.

`` 其中,计算mid使用了int mid = (low + high) >>> 1;,这种方式应该比mid=left+(right-left)/2方便。在<>找到解释: >>>`会将操作数作为无符号数,而两个有符号31位int相加的结果不会大于一个无符号32位int的值。

Updated 25/05/2018 01:50

LeetCode 374. Guess Number Higher or Lower

shui/leetcode image

这是一道浪费时间的垃圾题。注意题干里说的-1 : My number is lower指的是他的pick小于我的guess。我去年买了包,不说清楚,让我懵逼,浪费我时间。 java public int guessNumber(int n) { long low = 1, high = n; while (low <= high) { int mid = (int) ((low + high) >> 1); if (guess(mid) == 0) { return mid; } else if (guess(mid) > 0) { low = mid + 1; } else { high = mid - 1; } } return (int) low; }

Updated 24/05/2018 07:25

LeetCode 367. Valid Perfect Square

shui/leetcode image

题目要求不用库函数判断一个数是不是完全平方数 java // O(n) public boolean isPerfectSquare(int num) { if (num < 0) { return false; } else if (num == 0) { return true; } long p = 1; // 防止溢出 while (p * p < num) { p++; } return p * p == num; }

用二分法可以达到O(logn)。 但是我在递归调用判断退出时错了很多遍,代码写得也很丑(我怎么感觉我写了一个伪二分法): ```java public boolean isPerfectSquare2(int num) { if (num < 0) { return false; } else if (num == 0) { return true; } return helper(1, num); }

private boolean helper(long p, long num) {
    int i = 1;
    for (; p * p < num; i *= 2) {
        p += i;
    if (p * p == num) {
        return true;
    } else if ((p - i + 1) * (p - i + 1) <= num) {
        return helper(p - i, num);
    } else {
        return false;
参考[JAVA code](
public boolean isPerfectSquare(int num) {
    int low = 1, high = num;
    while (low <= high) {
        long mid = (low + high) >>> 1;
        if (mid * mid == num) {
            return true;
        } else if (mid * mid < num) {
            low = (int) mid + 1;
        } else {
            high = (int) mid - 1;
    return false;


/ use solution from 069 - Sqrt(x), compare res * res == num time: O(16) = O(1), space: O(1) / public boolean solution(int num) { int root = 0, bit = 1 << 15; while (bit > 0) { root |= bit; if (root > num / root) { // if root * root > num root ^= bit; // set the bit back to 0 } bit >>= 1; } return root * root == num; } ```

还有用Newton’s method实现。

Updated 24/05/2018 06:33

LeetCode 350. Intersection of Two Arrays II

shui/leetcode image

这题和349差不多,改用HashMap就可以输出所有重复元素。 倒是附加题很有意思。第3题可以看Solution to 3rd follow-up question: * 当nums2无法一次载入内存时,可以分块处理nums2。 * 当两个数组均大到无法载入内存时,则对两个数组进行外部排序,再进行处理。

    // HashMap, O(n)
    public int[] intersect(int[] nums1, int[] nums2) {
        if (nums1 == null || nums2 == null || nums1.length < 1 || nums2.length < 1) {
            return new int[]{};
        if (nums1.length >= nums2.length) {
            int[] temp = nums1;
            nums1 = nums2;
            nums2 = temp;
        HashMap<Integer, Integer> map = new HashMap<>(nums1.length);
        for (int i : nums1) {
            if (!map.containsKey(i)) {
                map.put(i, 1);
            } else {
                map.put(i, map.get(i) + 1);
        LinkedList<Integer> list = new LinkedList<>();
        for (int i : nums2) {
            if (map.containsKey(i)) {
                if (map.get(i) > 1) {
                    map.put(i, map.get(i) - 1);
                } else {
        int[] res = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            res[i] = list.get(i);
        return res;

看到有的解法先排序数组,再遍历数组元素进行比较,时间复杂度为O(nlogn): java Arrays.sort(nums1); Arrays.sort(nums2); int pnt1 = 0; int pnt2 = 0; ArrayList<Integer> myList = new ArrayList<Integer>(); while((pnt1 < nums1.length) &&(pnt2< nums2.length)){ if(nums1[pnt1]<nums2[pnt2]){ pnt1++; } else{ if(nums1[pnt1]>nums2[pnt2]){ pnt2++; } else{ myList.add(nums1[pnt1]); pnt1++; pnt2++; } } } int[] res = new int[myList.size()]; for(int i = 0; i<res.length; i++){ res[i] = (Integer)myList.get(i); } return res; 在处理附加题3时,得使用这种方法。当输入数据为有序数组时,这种方法会比HashMap快。

Updated 24/05/2018 03:26

LeetCode 349. Intersection of Two Arrays

shui/leetcode image

对于求交集的用Set比较方便。 java // HashSet, O(n) public int[] intersection(int[] nums1, int[] nums2) { if (nums1 == null || nums2 == null || nums1.length < 1 || nums2.length < 1) { return new int[]{}; } HashSet<Integer> set = new HashSet<>(nums1.length); for (int i : nums1) { set.add(i); } LinkedList<Integer> list = new LinkedList<>(); for (int i : nums2) { if (set.contains(i)) { list.add(i); set.remove(i); } } int[] res = new int[list.size()]; for (int i = 0; i < list.size(); i++) { // 有什么更好的方法使得List转为基本类型数组? res[i] = list.get(i); } return res; }

Updated 24/05/2018 02:49

LeetCode 167. Two Sum II - Input array is sorted

shui/leetcode image

一定要省题!一定要看给的example和输出! 一定要省题!一定要看给的example和输出! 一定要省题!一定要看给的example和输出! (同样地,在面System Design时,也要问清楚需求和边界。)

首先,我刷到这题毫无思路。我一直在想这个Two Sum有什么区别?直到我看到Python different solutions (two-pointer, dictionary, binary search).)给出的三种解法: 1. two pointers 2. hash table 3. binary search

解法2即是Two Sum的解法,解法1是因为输入数组有序,解法2 将时间复杂度降低到O(logn)。

    // two pointers, O(n)
    public int[] twoSum(int[] numbers, int target) {
        if (numbers == null || numbers.length < 2) {
            return new int[2];
        int left = 0, right = numbers.length - 1;
        while (left < right) {
            int sum = numbers[left] + numbers[right];
            if (sum == target) {
            } else if (sum < target) {
            } else {
        return new int[]{left + 1, right + 1};


Updated 24/05/2018 01:27

Split master and release guide


The guide publlshed under is the guide for master, while the users need the docs for the version released on

This can be solved by publishing a separate guide through an extra deploy block in the travis ci config. The block could either work on a yet-to-create stable branch or publish a guide for every tag.

Updated 24/05/2018 03:41 7 Comments

Document commands that do not work after startup


Various commands in dnsdist only work in the configuration file.

At least newRemoteLogger, newFrameStream*Logger come to mind, but there are others as well.

A list of them somewhere would be good, and/or a warning when used from -c mode.

Or make them work properly (why don’t they in the first place?)

Updated 24/05/2018 15:46 1 Comments

Quite a few build warnings building recursor on Fedora rawhide


<!– Hi! Thanks for filing an issue. It will be read with care by human beings. Can we ask you to please fill out this template and not simply demand new features or send in complaints? Thanks! –> <!– Also please search the existing issues (both open and closed) to see if your report might be duplicate –> <!– Please don’t file an issue when you have a support question, send support questions to the mailinglist or ask them on IRC ( –>

<!– Tell us what is issue is about –> - Program: Recursor - Issue type: Bug report

Short description

<!– Explain in a few sentences what the issue/request is –>

Building the recursor on Fedora 28 generates quite a few build warnings like the following: CXX dnssecinfra.o In member function 'ComboAddress AAAARecordContent::getCA(int) const': warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'union ComboAddress'; use assignment or value-initialization instead [-Wclass-memaccess] memset(&ret, 0, sizeof(ret)); ^ In file included from iputils.hh:85:7: note: 'union ComboAddress' declared here union ComboAddress { ^~~~~~~~~~~~

It’s not a big issue, but the amount of warnings makes it hard to see the important ones.

<!– If this is a bug report, use the following part of the the template and delete the part at the bottom –>


<!– Tell us about the environment –> - Operating system: Fedora rawhide - Software version: recursor 4.1.3, g++ 8.1 - Software source: tarball from

Updated 23/05/2018 16:22 1 Comments

FileNotFoundError: [Errno 2] No such file or directory: './data/QuoraQP/embed_glove_d300_norm'


where I try the ‘python matchzoo/ –phase train –model_file examples/QuoraQP/config/matchpyramid_quoraqp.config’ which you recommended, but it have some things error,such as ‘No such file or directory: ’./data/QuoraQP/embed_glove_d300_norm', I knowe this file is needed but you have not put in, I think you can finshed it, thanks!

Updated 26/05/2018 09:30 1 Comments

LeetCode 35. Search Insert Position





    public int searchInsert(int[] nums, int target) {
        if (nums == null || nums.length < 1) {
            return 0;
        int left = 0, right = nums.length - 1;
        if (target >= nums[right]) {
            return right;
        int cur = (left + right) / 2;
        while (!(target >= nums[cur] && target < nums[cur + 1])) {
            if (target < nums[cur]) {
                right = cur;
            } else {
                left = cur + 1;
            cur = (left + right) / 2;
        return target == nums[cur] ? cur : cur + 1;

学习My 8 line Java solution的写法: java public int searchInsert(int[] nums, int target) { if (nums == null || nums.length < 1) { return 0; } int low = 0, high = nums.length - 1; while (low <= high) { int mid = (low + high) / 2; if (target == nums[mid]) { return mid; } else if (target < nums[mid]) { high = mid - 1; } else { low = mid + 1; } } return low; } 简直惭愧,这不就是快排的一次排序吗。

Updated 23/05/2018 08:44

Should not have to send a message for opt-out


Currently it’s impossible to opt-out a contact without sending them a final message.

It would be good to allow opt-out without having to send a message. This issue is probably entirely client-side. In src/containers/AssignmentTexterContact:handleOptOut you’ll notice that it sends a message and then createOptOut, etc.

We should have an additional button “Opt out without sending message” or something similar in the interface which createOptOut but without sending a message. Alternatively we could document that if no message content is included, then we don’t send a message, but still opt them out.

Updated 23/05/2018 14:59 1 Comments

Added planning of Sprint 10.



Added planning of Sprint 10 that includes pairing table, Sprint’s changes, how the prioritization was done, risk burndown and priorized features.

Fixes #208



Type of change

  • Adds documentation

How Has This Been Tested?

I read the doc and didn’t find any errors.


  • [x] I have made corresponding changes to the documentation (if applicable)
  • [ ] I have added tests that prove my fix is effective or that my feature works
  • [ ] New and existing unit tests pass locally with my changes
Updated 25/05/2018 17:18

We should update the lifecycle



react-modal uses getSnapshotBeforeUpdate() but also contains the following legacy lifecycles: componentWillReceiveProps componentWillUpdate

The above lifecycles should be removed.

Updated 25/05/2018 00:03 3 Comments

Invalid shares passed to the recovery function




It is possible to select a malformed share plus a quorum of valid shares such that both the valid and invalid shares are passed along to rusty-secrets for processing, which fails.

Steps to Reproduce

From the Recover screen, load an invalid share file (e.g. Beautiful Duck.png). Then, without removing the first file, load a quorum of valid shares (e.g. secret-shard-{1-5}.txt).

Actual Behavior

The Recover button appears, but clicking it causes the invalid shares to be passed along to the recover function, which fails.

Expected Behavior

The Recover button does not appear as long as there are invalid shares present.

Updated 22/05/2018 16:49

git submodule-helper error message wrong


The git submodule--helper relative-path command expects 2 arguments but the argument count in the error message is wrong:

git submodule--helper relative-path js ""–helper.c#L1648

Updated 22/05/2018 12:34

Kivy is using deprecated Cython syntax for properties



  • Kivy: master


According to Cython documentation we are using a “special (deprecated) legacy syntax for defining properties in an extension class”. The new syntax is @property, @propname.setter and @propname.deleter instead of property propname:

The deprecated syntax is used in the files listed below (and maybe elsewhere). It’s not clear if or when the legacy syntax is slated for removal.

Updated 22/05/2018 12:13 4 Comments

Start status-notifier-watcher automatically in SNITray


Forgive my ignorance - I feel like this ought to be debuggable from this repo (, but I’ve spent several hours and would just like my taffybar working again

When running with the example config provided here: I get the following error resulting from the use of sniTrayNew:

MethodError {methodErrorName = ErrorName "org.freedesktop.DBus.Error.ServiceUnknown", methodErrorSerial = Serial 8, methodErrorSender = Just (BusName "org.freedesktop.DBus"), methodErrorDestination = Just (BusName ":1.61"), methodErrorBody = [Variant "The name org.kde.StatusNotifierWatcher was not provided by any .service files"]}
taffybar-linux-x86_64: user error (Pattern match failure in do expression at src/System/Taffybar/Widget/SNITray.hs:31:3-11)

I’m running on Arch Linux with systemd and the last time I had to think about dbus I was fairly sure it is being started for me without dbus-launch. I’m not sure what the guidance in that repo is trying to do, why KDE comes into this, and what a StatusNotifierWatcher is exactly.

Is there any guidance you can provide on what is needed to get that default config working, is there something I am not running as a separate service?

Updated 24/05/2018 19:49 4 Comments

Unable to select HEAD commit after changing it


Issue: After changing the commit in an existing collection it can’t be switched back to the HEAD, which is pretty confusing in my opinion since I am not sure which HEAD was initially referenced and I am not sure how to revert the change in commits if I can’t select the HEAD again.

Expected behaviour: I would expect an entry in the (tag) list of the commits with the label HEAD.

Steps to reproduce:

  1. Create a new collection or select an existing one.
  2. Change the selected commit.
  3. Try changing it back to the HEAD.
Updated 21/05/2018 18:22

Don't use debugging advice by default


This line in magithub-core.el is probably a leftover and should be removed.

(advice-add #'ghub-request :around #'magithub-debug--ghub-request-wrapper)

As a side-note, that advice was pretty confusing when first running into it when debugging a bug in ghub itself, so I am currently removing it in my init file.

Updated 21/05/2018 18:08 4 Comments

Invalid default values for name and description of a new collection


If a user creates a new collection and did at some point in the past already create another collection, the name and description of the old collection will be the default values for the new collection’s name and description. This should not be the case, as it will easily lead to multiple collections with the same name and/or the same description. Instead, we should settle for more generic default values like “name” and “description”.

Updated 21/05/2018 14:28

Move action column of "Selected Projects" table to the left


Right now the action column of the “Selected Projects” on the “Create Collection” page is the rightmost column. It’s visible only if the description is rather short. If the description of the project gets too long, a scrollbar is displayed, which moves the action column out of sight for the user. This can be seen on both screenshots below. selected_collections_overflow_1 selected_projects_overflow_2 This could be avoided by moving the action column to the left. Another way to handle this would be to implement a fixed maximal width for the description column, as it is done in the search result table on the same page.

Updated 21/05/2018 14:19

Be able to hook in shutting down the event loop in response to panics for custom event loop hooks


Currently we have a panic catching mechanism so that if there’s a panic is user code it’s caught before it reaches C. We save the panic and then initiate the shutdown process for the wayland event loop. Once it has shut down we then rethrow the panic since we no longer have any C frames above us.

For Way Cooler this is not possible though because we have a custom event loop. So the wayland event loop shuts down but the other one (in our case glib) does not. To remedy this, you should be able to set a on_terminate function during the CompositorBuilder stage that will be called during shutdown. By default it should be set to the current terminate function.

Updated 21/05/2018 14:06

Don't manually invoke reward() via the CLI if the round is not initialized


If the current round is not initialized, the call to reward() will fail. So we can protect the user’s gas, by not actually submitting the reward() call when invoked via the CLI if the current round is not initialized. We can additionally report an error mentioning that the round needs to be initialized. This caused the error reported in #435.

Updated 21/05/2018 13:32

Add a page number on the "Select a commit"-Frame in the "Create Collection" page


By now, there are ‘Previous’ and ‘Next’-Page Buttons on the “Select a commit”-Frame, but no indication of the current page number or the overall number of pages. Even the ‘Previous’ Button is enabled when the User is on the first page.

To make navigation more intuitive, i would suggest to add both the current page number and the overall number of pages between the two buttons.


Updated 21/05/2018 11:52

Clicking on project should open the corresponding source repository


When selecting projects to create a collection, users should be able to open the project on the corresponding source repository (e.g Github) to get a better insight of the project. This will help the users to make a decision if they want to add that specific project to their collection.

Currently the collection view is not implemented in the new abm-frontend, but this feature request should still be valid once the collection view has been fully implemented.


Issue originates from:

Updated 23/05/2018 17:31

Implement common builder trait


It would be convenient to have a common builder trait for EntityBuilder and LazyBuilder, so entity-building code could be reused regardless of which builder is being used.

trait Builder {
    fn with<T: specs::Component + Send + Sync>(self, c: T) -> Self;
    fn build(self) -> specs::Entity;

The name should probably be a bit more specific.

Updated 24/05/2018 06:17 2 Comments

Document compatible shred version


It would be helpful if the library documention included a .toml example with the currently compatible shred, shred-derive, … versions. The error-messages generated by the compiler in case of an incompatibility don’t make it entirely obvious what the actual problem is, e..g. I ran into issues where my system-data no longer satisfied the SystemData trait.

Updated 20/05/2018 08:18 1 Comments

Matrix @mod 'Bot


So, in the code, and maybe in the spec' is the ability for, AFAIK PL50 Mod’s (probably hardcoded atm), to send messages containing @room to ping/highlight/mention everyone.  ↵↵¶Also, IRC has sonething like, IIRC, /wallchops <message> to write to all room (channel) Moderators (Operators).  Matrix needs something like this for cases when abuses are occuring in a room and Mod' attention is needed.  But it is tedious to go through the userlist even on Riot-Web, and nearly impossible on i.e. Riot-Android, to pick out some Mod’s, especially considering they are not ordered by, PL then AlphaNumeric.  ↵↵¶Ideally any such ‘bot should “ACL Whisper” messages to Moderators, when such functionality comes to Matrix.  Or rather, such functionality for “@mod”, even without but especially with “ACL Whisper”, should be in the spec’.  ↵↵¶However, in the interim a user might send a message i.e. !mod <message>, and the ‘bot would responds with an immediately following message containing all Mod’s Display Names, indicating the triggering room member’s DN & MXID.  There is the possibility of abuse, so the 'bot needs to accept an exclude comnand, i.e. !mod exclude <MXID>.  ↵↵¶At the end of the day, that would be a “good enough” interim solution to ensure room members help keep moderation proactive.

Updated 21/05/2018 19:31 6 Comments

Add missing permissions in app


Some places in the app request data that needs permission without knowing if the permission is granted. Here is the Lint result: image Note: This may not be correct for some cases because Lint doesn’t recognize if you did a permission check in a way that it doesn’t know. In that way we need to suppress the warning

Updated 19/05/2018 21:49

LastPass password fill implementation based off qute-pass code



I started using qutebrowser a week ago and saw this wasn’t available yet (#3909). This script is mostly existing work from the qute-pass implementation by @cryzed with some few changes for the LastPass CLI differences.

Here’s an example of it being used with a lower-quality gif version below: Video of script

Just some notes: - lpass show allows for a regex search on the name of the LastPass entry and can return all matching entries in json so the flow is quite straightforward. - When there are multiple entries, each entry is formatted as LastPass ID, name, url, and username for lack of a better idea - As far as I can tell LastPass CLI doesn’t have any way to search against an entry’s url which makes more sense than searching an entry’s name, which can be provided by the user. If this isn’t the case, this script should be updated to use that method. - lpass will prompt for the master password again after an hour, you can set the environment variable LPASS_AGENT_TIMEOUT or add it to your $HOME/.lpass to the number of seconds you prefer or 0. See man lpass if you need help. - I removed the username/password matching that qute-pass had since it’s not necessary

<!– Reviewable:start –>

This change is <img src=“” height=“34” align=“absmiddle” alt=“Reviewable”/> <!– Reviewable:end –>

[edit by @jgkamat to link issues: closes #3909]

Updated 21/05/2018 01:46 2 Comments

Arbitrary data in hover box


This is currently explicitly looking for key/value pairs with known names, but it would be useful (especially for debug purposes) to just show any and all data.

This also entails #99 because keys will have no special meaning anymore.

Updated 21/05/2018 21:58 3 Comments

Fork me on GitHub