EIP-7549: Append new committee_bits field to end of Attestation

Introducing new fields in the middle of an existing Container pointlessly breaks merkleization of all subsequent fields. In the case of committee_bits, it is also misleading, as signature only covers data inside Attestation.

The other open question is, that, technically, changing List limits also affects the shape of the Merkle proof...
If we want to stop breaking smart contract verifiers randomly, we have to consider using theoretical limits as the List capacity, and then use a state transition logic to enforce the fork-specific limit, similar to how we do it for the MAX_BLOBS_PER_BLOCK.
With Electra, we get a clean slate and could revisit data types and update limits accordingly. Especially with EIP-7495 StableContainer in mind.

In Lodestar we cache seen attestations by extracting (attestation data + committee bits). Currently it is a convenient one-time slice from the ssz bytes since attestation data and committee bits are together.
This proposal would mean we do slicing twice. Minor annoyance but doable.

We should also consider renaming aggregation_bits to avoid subtle breakage of clients who expect aggregation_bits to have its old meaning. Maybe something like committee_validator_bits, in line with sync_committee_bits for SyncAggregate, as this spans the entire validator set.
Note that with EIP-7688 based forward compatibility (StableContainer), field names get bound to types more strictly and can no longer randomly be changed across forks. The way forward is to stop using the old field and append a new field with the new type. This is in line with how historical_summaries replaced historical_roots in Capella, or how previous_epoch_participation/current_epoch_participation replaced previous_epoch_attestations/current_epoch_attestations in Altair. We should keep this going, and avoid introducing fork specific meanings for field names!

As for naming, one suggestion how it could look:
  Attestation(Profile[StableAttestation]):
    data: AttestationData
    signature: BLSSignature
    participant_bits: Bitvector[
        MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT]  # [New in Electra:EIP7549]
    committee_bits: Bitvector[MAX_COMMITTEES_PER_SLOT]  # [New in Electra:EIP7549]

  IndexedAttestation(Profile[StableIndexedAttestation]):
    data: AttestationData
    signature: ValidatorSig
    participant_indices*: List[uint64,
        MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT]  # [New in Electra:EIP7549]

Rationale:

The phase0 aggregation_bits and attesting_indices have length MAX_VALIDATORS_PER_COMMITTEE, so are insufficient to cover the new list lengths.

Removing them prevents any subtle bugs where code assumes the old length.
Removing them also ensures that existing clients using the fields (smart contracts etc) _will_notice that a software update / redeployment is required. Better than have them deal with subtle bugs.
Therefore, remove the fields.

As this burns aggregation_bits and attesting_indices field names, we need new names. Use participant_bits / participant_indices for the new lists to align naming with Altair's sync_committee_bits (identify who signed the message with the field name, instead of identifying what the bits represent - all of them are aggregates).

Also append to the end, as they are new fields.

Consider whether participant_indices even makes sense or whether it should also become participant_bits. We only have 8 attestations now so switching to bitfield may be more efficient.

Consider whether participant_indices even makes sense or whether it should also become participant_bits. We only have 8 attestations now so switching to bitfield may be more efficient.

Switching to a bitfield in this case would require to obtain the state in order to process attester slashing which i don’t think is desirable.
Do I understand correctly that if we use StableContainer for Attestation then we will have to append participant_bits and leave aggregation_bits? Is the name of the field or its position within the container is important in this case? Can we rename the old one to phase0_attestation_bits? Alternatively, can stable container implementation read the type of the aggregation_bits and conclude that this field has changed?

My comment on the naming was independent of StableContainer, and backed by aforementioned reasons, namely reducing the potential for subtle bugs, and communicating clearly that client logic consuming the field needs updating.
Existing field names cannot be easily renamed, because JSON is used on the builder API, so, it is not possible to suddenly transition existing aggregation_bits to phase0_aggregation_bits.
You are correct that if we already had StableContainer back in Deneb, that it would force the clean transition of deprecating the old field and introducing a new one, when the field type changes. However, StableContainer is not in Deneb, so there are no technical requirements to follow such standards at this time.
I cannot recall a past fork, though, where a field retained its name across type changes (except when inner containers got extended, which is also still allowed as today in a StableContainer world).
If people don't like renaming to participant_bits/participant_indices and would prefer to go with the PR as is, that's also fine by me. I only have a weak opinion on the naming aspect.

require to obtain the state in order to process attester slashing

How would an attester slashing be processed without access to the state?
You are right, though, IndexedAttestation is only used in AttesterSlashing, indeed, so possible gains would not scale. I confused this type with the one for the actual Attestation, where the bitfield is already used.

How would an attester slashing be processed without access to the state?

IndexedAttestation makes slashing processing rely on index -> pubkey mapping only which is available in a recent state copy. If it were bits instead then shuffling in the exact epoch would be required which is much harder to compute. I should have mentioned the access to the states of the epochs where each attestation belongs to.

OK, let's keep the indices as is then.
Only remaining question then is whether the lists that changed capacities should be renamed to participant_indices / participant_bits to ensure that any software using these lists gets a proper update for the new logic.

Only remaining question then is whether the lists that changed capacities should be renamed to participant_indices / participant_bits to ensure that any software using these lists gets a proper update for the new logic.

Aren’t implementations introduce a new type whenever the struct is changing? Wouldn’t this mean that they also check where the old version is used and change the logic of those places accordingly? If the new type would name the bitfield differently it doesn’t allow to avoid checking where the old one is used in the code.

Aren’t implementations introduce a new type whenever the struct is changing?

Yes, they have to be aware of the change though and make sure to actually update all of the logic. That extends beyond CL full node implementations to any clients of beacon-API or smart contract.

Wouldn’t this mean that they also check where the old version is used and change the logic of those places accordingly? If the new type would name the bitfield differently it doesn’t allow to avoid checking where the old one is used in the code.

It forces more oversights to be compilation errors instead of runtime errors, as the entire category of bugs where someone accidentally uses parts of the phase0 logic post Electra is ruled out.
It also discourages shortcut-taking. For example, an implementation may switch logic depending on the capacity of aggregation_bits and use phase0 if it's MAX_VALIDATORS_PER_COMMITTEE and electra if it's MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT because of it being slightly more effort to properly route fork information through the code base. Which may lead to random bugs in edge cases such as network with MAX_COMMITTEES_PER_SLOT = 1 when the types suddenly start aliasing.

Wouldn’t this mean that they also check where the old version is used and change the logic of those places accordingly?

Ultimately, implementations have to adjust logic everywhere to be correct / compliant. Forcing new field names when the type / semantics change reveals oversights sooner, but the overall work required is obviously still the same.
One aspect to keep in mind is that this also affects non-CL implementations. For example, validator reward smoothing pools may track attestation performance of each validator for computing their share of the pooled funds. If they continue consuming the existing aggregation_bits field on beacon-API with existing logic, it breaks; they have to know that suddenly they have to start also looking at the slot number of the surrounding block to determine if existing or new logic is necessary. If they don't change anything due to lack of awareness, the existing logic is used, possibly breaking the code in weird ways. With a new field name, e.g., participant_bits, it is guaranteed that the existing code breaks in a clean way and that existing logic cannot be used by accident.
How highly to prioritize these aspects I'm not sure. Generally, forward / backward compatibility issues have a tendency of only getting attention once something blew up.
Personally I'd accept both 'keeping names as is' and 'rename the fields that got new semantics', with slight preference for the latter but also no strong opposition for the former.

Introducing new fields in the middle of an existing Container pointlessly breaks merkleization of all subsequent fields

Does this have any practical consequences?

In the case of committee_bits, it is also misleading, as signature only covers data inside Attestation.

aggregation_bits are also not signed over and they come before the signature field
Actually, if we are to change the field's position, then the type definition would be the most readable to me if both bits fields are next to each other.

Does this have any practical consequences?

Not for Ethereum CL and EL implemenations, but it affects smart contracts that verify beacon state proofs using EIP-4788.

aggregation_bits are also not signed over and they come before the signature field

Yes, the order is misleading, it's this way for historical reasons, and incorrectly suggests that the signature signs over them.

Actually, if we are to change the field's position, then the type definition would be the most readable to me if both bits fields are next to each other.

True, but field order determines the "shape" of the Merkle proofs. While appending new fields is fine to some extent (it doens't move existing fields), inserting things in the middle is breaking.
As for readability, that could be solved by implementations. e.g., you could implement it by semantically grouping the field accessors (while still keeping the memory layout append-only). The order in which fields are pushed to the network / into Merkle proofs does not necessarily have to be linked to the semantic groups.

I don't feel strongly about aggretation_bits to participant_bits, simply because in teku we abstracted away the two attestation types and we will deal with an interface that is going to hide the difference anyway. We will probably adopt the new name on the interface, 'cose I agree it is better.

To clarify, namings have to be aligned on, as they appear in JSON builder API (mevboost) and in beacon API (for developers only, real tools should use SSZ)


JSON Beautify and Minify code tidy operations yield error when input box is empty

JSON Beautify and JSON Minify code tidy operations yield an error message when the input box is empty.
Steps to reproduce the issue (please be as specific as possible)

Visit https://gchq.github.io/CyberChef
Expand the code tidy operations
Double click on the JSON Beautify or JSON Minify code tidy operations

Expected behavior
It should add the operation to the recipe box without error, similar to the other operations.
Actual behavior
The following error message is displayed:

Operating system (Mac OS X Yosemite 10.10.5)
Web browser and version (Chrome 55.0.2883.75 (64-bit))
Date, specific time and time zone when issue was found (Friday, December 2, 2016 8:28a UTC)

Good spot and a comprehensive report, thank you. I've pushed a fix.


*: add pprof flag to grpc proxy

Fix https://github.com/coreos/etcd/issues/7514

Codecov Report

Merging #7653 into master will increase coverage by 0.23%.
The diff coverage is 5%.

@@            Coverage Diff             @@
##           master    #7653      +/-   ##
==========================================
+ Coverage   73.24%   73.48%   +0.23%
==========================================
  Files         327      328       +1
  Lines       26635    26645      +10
==========================================
+ Hits        19510    19579      +69
+ Misses       5650     5604      -46
+ Partials     1475     1462      -13

Impacted Files
Coverage Δ

embed/etcd.go
66.66% <0%> (ø)
:arrow_up:

pkg/pprofutil/pprofutil.go
0% <0%> (ø)

embed/serve.go
64.54% <0%> (+3.86%)
:arrow_up:

etcdmain/grpc_proxy.go
19.83% <20%> (ø)
:arrow_up:

auth/simple_token.go
86.84% <0%> (-7.9%)
:arrow_down:

clientv3/txn.go
96.36% <0%> (-3.64%)
:arrow_down:

rafthttp/msgappv2_codec.go
71.3% <0%> (ø)
:arrow_up:

etcdserver/v3_server.go
70% <0%> (+0.47%)
:arrow_up:

clientv3/watch.go
95.38% <0%> (+0.51%)
:arrow_up:

... and 16 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 63c6824...6eb0d2e. Read the comment docs.

@heyitsanthony fixed.


Add documentation

To be continued...

Do you want me to merge it or should I wait?

Let's merge. I keep underestimating the time needed to write the docs.

It has no end. :p Thanks!


Add build_args support in buildconfig

now args provided under build in docker-compose file can be available in buildconfig.
it solves #406

@surajnarwade  Please run gofmt on pkg/transformer/openshift/openshift.go .

cc: @cdrage @kadel @containscafeine @surajssd

@surajnarwade works for me, good stuff :)
Let's add some unit and functional tests now.
For the functional ones, you can refer to the other tests in https://github.com/kubernetes-incubator/kompose/blob/master/script/test/cmd/tests.sh, should be straighforward.
For the unit tests, this can be covered under func TestInitBuildConfig(t *testing.T) in openshift_test.go.

I've tested this and it looks good.
Just one small note here, this doesn't solve entire #406 just one part of it.  But that is OK, just don't close #406 yet ;-)
@surajnarwade Can you please add tests to this PR? Mainly Go tests.  Otherwise code looks good.

@containscafeine @kadel , thanks, I am adding tests

@containscafeine @kadel thanks, I am adding tests

cc @cdrage @kadel

Odd error happening:
===> Starting test <===
convert::expect_success_and_warning: Running: 'kompose --provider openshift -f /home/travis/gopath/src/github.com/kubernetes-incubator/kompose/script/test/fixtures/buildargs/docker-compose.yml convert --stdout -j' expected_output: '/home/travis/gopath/src/github.com/kubernetes-incubator/kompose/script/test/fixtures/buildargs/openshift-buildargs.json' expected_warning: 'Buildconfig using https://github.com/kubernetes-incubator/kompose.git::master as source.'
FAIL: converted output does not match

Any idea?

Odd error happening:

 ===> Starting test <===
 convert::expect_success_and_warning: Running: 'kompose --provider openshift -f /home/travis/gopath/src/github.com/kubernetes-incubator/kompose/script/test/fixtures/buildargs/docker-compose.yml convert --stdout -j' expected_output: '/home/travis/gopath/src/github.com/kubernetes-incubator/kompose/script/test/fixtures/buildargs/openshift-buildargs.json' expected_warning: 'Buildconfig using https://github.com/kubernetes-incubator/kompose.git::master as source.'
 FAIL: converted output does not match

Any idea?

I did some digging, and found out that it is caused by this: https://github.com/kubernetes-incubator/kompose/issues/445

blocked - waiting for  https://github.com/kubernetes-incubator/kompose/pull/454

specifically, blocked on this libcompose issue: https://github.com/docker/libcompose/issues/449 which unblocks #454 which then unblocks this PR of #424

All blocking issues/PRs are resolved/merged, ping @surajnarwade

@surajssd yeah, needs review

@surajnarwade
Awesome work! One problem:
Specifying value from the environment doesn't work:
github.com/kubernetes-incubator/kompose  pr_424 ✗                                                                                79d ⚑
▶ export foo=test

github.com/kubernetes-incubator/kompose  pr_424 ✗                                                                                79d ⚑  ⍉
▶ echo $foo
test

github.com/kubernetes-incubator/kompose  pr_424 ✗                                                                                79d ⚑
▶ cat script/test/fixtures/buildargs/docker-compose.yml
version: "2"

services:
    foo:
        build:
          context: "./build"
          args:
            - foo
        command: "sleep 3600"

                                                                                [36/603]
github.com/kubernetes-incubator/kompose  pr_424 ✗                                                                                79d ⚑
▶ ./kompose convert --provider openshift --stdout -f script/test/fixtures/buildargs/docker-compose.yml
INFO Buildconfig using git@github.com:cdrage/kompose.git::pr_424 as source.
apiVersion: v1
items:
- apiVersion: v1
  kind: Service
  metadata:
    creationTimestamp: null
    labels:
      io.kompose.service: foo
    name: foo
  spec:
    clusterIP: None
    ports:
    - name: headless
      port: 55555
      targetPort: 0
    selector:
      io.kompose.service: foo
  status:
    loadBalancer: {}
- apiVersion: v1
  kind: DeploymentConfig
  metadata:
    creationTimestamp: null
    labels:
      io.kompose.service: foo
    name: foo
  spec:
    replicas: 1
    selector:
      io.kompose.service: foo
    strategy:
      resources: {}
    template:
      metadata:
        creationTimestamp: null
        labels:
          io.kompose.service: foo
      spec:
        containers:
        - args:
          - sleep
          - "3600"
          image: ' '
          name: foo
          resources: {}
        restartPolicy: Always
    test: false
    triggers:
    - type: ConfigChange
    - imageChangeParams:
        automatic: true
        containerNames:
        - foo
        from:
          kind: ImageStreamTag
          name: foo:latest
      type: ImageChange
  status: {}
- apiVersion: v1
  kind: ImageStream
  metadata:
    creationTimestamp: null
    labels:
      io.kompose.service: foo
    name: foo
  spec: {}
  status:
    dockerImageRepository: ""
- apiVersion: v1
  kind: ImageStream
  metadata:
    creationTimestamp: null
    labels:
      io.kompose.service: foo
    name: foo
  spec: {}
  status:
    dockerImageRepository: ""
- apiVersion: v1
  kind: BuildConfig
  metadata:
    creationTimestamp: null
    name: foo
  spec:
    nodeSelector: null
    output:
      to:
        kind: ImageStreamTag
        name: foo:latest
    postCommit: {}
    resources: {}
    runPolicy: Serial
    source:
      contextDir: script/test/fixtures/buildargs/build/
      git:
        ref: pr_424
        uri: git@github.com:cdrage/kompose.git
      type: Git
    strategy:
      dockerStrategy:
        env:
        - name: foo
          value: "\0"
      type: Docker
    triggers:
    - type: ConfigChange
    - type: ImageChange
  status:
    lastVersion: 0
kind: List
metadata: {}

@cdrage okay, looking into it

@cdrage , args in build should be mentioned in key: value format

@surajnarwade
You're wrong, you can supply them with just the key and it'll pick it up from the environment: https://docs.docker.com/compose/compose-file/#args

@cdrage my bad, Updated PR for the same

cc @cdrage

After all the changes, this LGTM :+1:

Cool this LGTM!

@surajnarwade thanks for the hard work!

@surajssd, finally :)

thanks everyone!


Prod calc: detailed output missing ERB and sleep duration

Details
No response

same as #221

same as #221

Yes, closing this one, yours is more detailed 👍


[BC\Break][PSR-7] Apply percent-encoding to paths with not percent-encoding

Following the issue #1024 (1K) getPath() are not PSR-7 compliant.
PSR-7 only allows percent-encoding paths as only possible encoding in getPath() method
The PR is breaks the BC because the output changes. However the new outputs should still working transparently on previous implementatins.

Notice that paths with whitespaces encoded with + character won't be unencoded to whitespace, instead have to be unencoded twice.

Just glancing over this, I see that ";" is being percent encoded in the path now. That's an allowed character in a path so this is incorrect I think. IIRC, all of the test cases were yanked from RFC 3896, so they shouldn't need to change (section 5.1 of RFC 3986). If PSR-7's wording conflicts with RFC 3986, then it needs to change.

Sorry, your memory is wrong ;-)

reserved    = gen-delims / sub-delims
gen-delims  = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims  = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="

This wont change in Guzzle v5, and I don't think this change is valid according to RFC 3986. We took the tests that have been modified in this PR directly from RFC 3986.


Use libcudf mixed joins for conditional hash semi and anti joins

Fixes #2441.  This depends on #4477 and rapidsai/cudf#10040.  Updates the join code to use the new mixed semi and anti joins to allow processing conditional left semi and anti hash joins on the GPU.

build


Current GitHub release fails

The current development version seems to be failing, but the CRAN release works.
devtools::install_github('henry090/tfaddons')

Downloading GitHub repo EagerAI/tfaddons@HEAD
√  checking for file 'C:\Local\Temp\RtmpSwGaoM\remotes37a05530796\EagerAI-tfaddons-46ab9d3/DESCRIPTION' ...
-  preparing 'tfaddons': (581ms)
√  checking DESCRIPTION meta-information ...
-  checking for LF line-endings in source and make files and shell scripts (488ms)
-  checking for empty or unneeded directories
-  building 'tfaddons_0.10.1.tar.gz'

Installing package into ‘C:/project/renv/library/R-4.0/x86_64-w64-mingw32’
(as ‘lib’ is unspecified)
* installing *source* package 'tfaddons' ...
** using staged installation
** R
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
  converting help for package 'tfaddons'
    finding HTML links ... done
    activation_gelu                         html
    activation_hardshrink                   html
    activation_lisht                        html
    activation_mish                         html
    activation_rrelu                        html
    activation_softshrink                   html
    activation_sparsemax                    html
    activation_tanhshrink                   html
    attention_bahdanau                      html
    attention_bahdanau_monotonic            html
    attention_luong                         html
    attention_luong_monotonic               html
    attention_monotonic                     html
    attention_wrapper                       html
    attention_wrapper_state                 html
    callback_average_model_checkpoint       html
    callback_time_stopping                  html
    callback_tqdm_progress_bar              html
    crf_binary_score                        html
    crf_decode                              html
    crf_decode_backward                     html
    crf_decode_forward                      html
    crf_forward                             html
    crf_log_likelihood                      html
    crf_log_norm                            html
    crf_multitag_sequence_score             html
    crf_sequence_score                      html
    crf_unary_score                         html
    decode_dynamic                          html
    decoder                                 html
    decoder_base                            html
    decoder_basic                           html
    decoder_basic_output                    html
    decoder_beam_search                     html
    decoder_beam_search_output              html
    decoder_beam_search_state               html
    decoder_final_beam_search_output        html
    extend_with_decoupled_weight_decay      html
    gather_tree                             html
    gather_tree_from_array                  html
    hardmax                                 html
    img_adjust_hsv_in_yiq                   html
    img_angles_to_projective_transforms     html
    img_blend                               html
    img_compose_transforms                  html
    img_connected_components                html
    img_cutout                              html
    img_dense_image_warp                    html
    img_equalize                            html
    img_euclidean_dist_transform            html
    img_flat_transforms_to_matrices         html
    img_from_4D                             html
    img_get_ndims                           html
    img_interpolate_bilinear                html
    img_interpolate_spline                  html
    img_matrices_to_flat_transforms         html
    img_mean_filter2d                       html
    img_median_filter2d                     html
    img_random_cutout                       html
    img_random_hsv_in_yiq                   html
    img_resampler                           html
    img_rotate                              html
    img_sharpness                           html
    img_shear_x                             html
    img_shear_y                             html
    img_sparse_image_warp                   html
    img_to_4D                               html
    img_transform                           html
    img_translate                           html
    img_translate_xy                        html
    img_translations_to_projective_transforms
                                            html
    img_unwrap                              html
    img_wrap                                html
    install_tfaddons                        html
    layer_activation_gelu                   html
    layer_correlation_cost                  html
    layer_filter_response_normalization     html
    layer_group_normalization               html
    layer_instance_normalization            html
    layer_maxout                            html
    layer_multi_head_attention              html
    layer_nas_cell                          html
    layer_norm_lstm_cell                    html
    layer_poincare_normalize                html
    layer_sparsemax                         html
    layer_weight_normalization              html
    lookahead_mechanism                     html
    loss_contrastive                        html
    loss_giou                               html
    loss_hamming                            html
    loss_lifted_struct                      html
    loss_npairs                             html
    loss_npairs_multilabel                  html
    loss_pinball                            html
    loss_sequence                           html
    loss_sigmoid_focal_crossentropy         html
    loss_sparsemax                          html
    loss_triplet_hard                       html
    loss_triplet_semihard                   html
    metric_cohen_kappa                      html
    metric_fbetascore                       html
    metric_hamming_distance                 html
    metric_mcc                              html
    metric_multilabel_confusion_matrix      html
    metric_rsquare                          html
    metrics_f1score                         html
    optimizer_conditional_gradient          html
    optimizer_decay_adamw                   html
    optimizer_decay_sgdw                    html
    optimizer_lamb                          html
    optimizer_lazy_adam                     html
    optimizer_moving_average                html
    optimizer_novograd                      html
    optimizer_radam                         html
    optimizer_swa                           html
    optimizer_yogi                          html
    parse_time                              html
    reexports                               html
    register_all                            html
    register_custom_kernels                 html
    register_keras_objects                  html
    safe_cumprod                            html
    sample_bernoulli                        html
    sample_categorical                      html
    sampler                                 html
    sampler_custom                          html
    sampler_greedy_embedding                html
    sampler_inference                       html
    sampler_sample_embedding                html
    sampler_scheduled_embedding_training    html
    sampler_scheduled_output_training       html
    sampler_training                        html
    skip_gram_sample                        html
    skip_gram_sample_with_text_vocab        html
    tfaddons_version                        html
    tile_batch                              html
    viterbi_decode                          html
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
*** arch - i386
Error: package or namespace load failed for 'tfaddons' in library.dynam(lib, package, package.lib):
 DLL 'Rcpp' not found: maybe not installed for this architecture?
Error: loading failed
Execution halted
*** arch - x64
ERROR: loading failed for 'i386'
* removing 'C:/project/renv/library/R-4.0/x86_64-w64-mingw32/tfaddons'
* restoring previous 'C:/project/renv/library/R-4.0/x86_64-w64-mingw32/tfaddons'

I run this installation via renv and installing Rcpp didn't seem to help.

Thanks @henry090 for the build info, strangely this seems to be related to https://github.com/mlverse/torch/issues/577#issuecomment-851391835 as after upgrading the CUDA to v10.2, it also fixed this issue.


Return S3 signed URLs for assets and cached-assets

needed for https://github.com/huggingface/datasets-server/pull/2224.

[x] sign cached-assets URLs: #2298
[x] invalidate the CloudFront cache when an asset is deleted? It has a 1h TTL, so: it will disappear at some point anyway
[x] for /first-rows: sign assets URLs. It's a bigger change because the response is not generated on the fly.

option 1: we could let it unchanged, but documenting that it requires the client to sign the assets URLs, which means that the images and audio in /first-rows could only be accessed by the Hub, since it requires knowing the private key. And this option would require adding code in moon-landing.
option 2a: we could get all the URLs in the response using a regex, then sign them and replace in the JSON. It would be simpler than parsing the JSON completely (the asset URLs can be nested)
option 2b: we could traverse the split-first-rows-from-* content object, find the assets URLs (starts with https://datasets-server.huggingface.co/assets/), and sign them. Question: maybe we should ensure it's a URL we created, ie: in an image or audio feature column, to avoid people creating this kind of URLs in a string column (low probability, and low impact anyway).
option 2c: we visit the "features" field in split-first-rows-from-* content objects, find the Audio and Image features (they can be nested), then visit the "rows" and sign the sources.   <- implementing this option in https://github.com/huggingface/datasets-server/pull/2315 + https://github.com/huggingface/datasets-server/pull/2365

Done


Discussion: Include "Unit" as a textbox or keep it part of the description?

I'm not sure which to do here, if it should be part of the description textbox or it's own thing?

We decided to start the web app from scratch after the major design/architecture decisions and changes we made. No longer relevant.


Sequence more than one elements

I have an issue as Sequence more than one elements  on this line when using Disctionary<string, string> for the entity property type.

Oops! and what's your type?

property type could be anything!
public virtual Dictionary<TKey, TValue>  MyField {get; set;}

Not all property types are supported in Dto classes. To use Dictionary<string,object>, you can implement IOpenType as following:
public class MyDto : IDto, IOpenType
{
    public int Id {get;set;}
    public Dictionary<string, object> Properties { get; set; }
}


Sync mempool from other nodes on start

Should help nodes to quickly catchup on start and start rejecting doublespends asap. Should also improve UX in qt wallets (users will see unconfirmed txes they received before wallet start). The only potential downside I see is that if mempool is filled with lots of txes this may cause new blocks to be relayed with some delay. However, even in the worst case scenario with 2MB blocks and mempool limit 300MB it's basically the same as syncing yet another 150 blocks which should not be a big deal.

Sorry for the noise abour editing the title, had a misunderstanding of the code :see_no_evil:
But...maybe we should actually change this to only request from masternodes?
Also, the current code will request the full mempool from all connected nodes, which is probably overkill as it can easily increase the load by a factor of 8.

@codablock

maybe we should actually change this to only request from masternodes?

Any full node is capable of serving such requests, why requesting it only from masternodes?

the current code will request the full mempool from all connected nodes, which is probably overkill as it can easily increase the load by a factor of 8.

Yes, but we don't request txes themselves 8 times from other nodes, we request only invs this way (which we would otherwise receive from all our peers too if we would be online at the time txes were propagated the first time). On the other hand, invs are 36 bytes and 8x36=288 bytes which is comparable to the size of the smallest tx, so it's kind of up to 2x the load 🤔 Could probably sync from say up to 2 nodes instead to ensure some consistency while avoiding too much load? Thoughts?

@codablock

maybe we should actually change this to only request from masternodes?

Any full node is capable of serving such requests, why requesting it only from masternodes?

My thought was that only masternodes give at least some guarantee that they have watched the network long enough to have the full mempool. But maybe it's enough to limit this to outbound connections, as then the likelihood of them operating for a longer period is higher then for inbound connections.

the current code will request the full mempool from all connected nodes, which is probably overkill as it can easily increase the load by a factor of 8.

Yes, but we don't request txes themselves 8 times from other nodes, we request only invs this way (which we would otherwise receive from all our peers too if we would be online at the time txes were propagated the first time). On the other hand, invs are 36 bytes and 8x36=288 bytes which is comparable to the size of the smallest tx, so it's kind of up to 2x the load  Could probably sync from say up to 2 nodes instead to ensure some consistency while avoiding too much load? Thoughts?
Hmm, thinking more about it it's probably fine to do it with all 8 outgoing connections. If we ever get to the point where the load gets too high, we should consider implementing a new type of mempool sync message which allows to specify a bloom filter consisting of locally present TXs, so that we can do the mempool sync with multiple peers but with each additional peer resulting in less bandwidth usage.

How about a cmd-line option to be able to disable this functionality on demand? 256206e6f

cmd-line sounds good :+1:
I'd still prefer to only do the sync on outbound connections. See https://github.com/dashpay/dash/commit/042f2210190bc4095610bc81b4275ad23f80cf48


Add C++20 to the CI to be sure that EnTT doesn't break with the last revision of the stantard

See the title. What else? 🙂

Available on branch wip. Soon on master ™. 😅


AST: Look through missing imports in OverriddenDeclsRequest

If OverriddenDeclsRequest fails to find any overridden declarations, query again ignoring missing imports to find declarations that were excluded due to the MemberImportVisibility feature being enabled.

@swift-ci please smoke test


Constrain conv_bool optimization to improve correctness.

Due to my recent change to the unsigned compare peep, the conv_bool
optimization was causing instructions to be generated in a way that
the some registers could have two overlapping lifetimes. This fixes
the issue by checking for these ByteCodeUses instructions, and then
placing the conv_bool after them.

Hi @Penguinwizzard, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Derek Morris). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

@dilijev could you please review?

Had some discussion offline to fully understand this change. AFAICT it does what's advertised. I'd run it by someone who is more familiar with GlobOpt to make sure there are no other cases you might be missing.

If there was a bug you are fixing with this change, distill it into a minimal repro test case and add it to the tests -- otherwise add a test if you can.

LGTM :shipit:

@dotnet-bot test Ubuntu ubuntu_linux_debug_static please


Added Currencies

AppName

[x] Installed and tested by me on my main smartphone and used for about 15 minutes or more.
[x] Has dark theme.
[x] It has 0 trackers on εxodus.
[x] It has 0 F-Droid Anti-Features.
[x] I use the app on a daily basis and I love almost the entirety of it, so I placed next to it a heart.

(I also ordered the entries alphabetically in the Finance group.)

Hi, thanks for pull request.
Awesome find! However, because I did not notice your Pull Request I've already reformatted my MarkDown :/ so, there is a merge conflict. I have some issues with your pull request, but I can fix them.
Do not bother that I close this pull request, just create a new one with current changes. I'm waiting for you. Thanks.


This is required with the latest snapshot.

Without this, s4tf form the command line produces:
s4tf$ swift run
dyld: Symbol not found: _$s11AllKeyPathss0B12PathIterablePTl
  Referenced from: /Library/Developer/Toolchains/swift-tensorflow-DEVELOPMENT-2020-02-04-a.xctoolchain/usr/lib/swift/macosx/libswiftTensorFlow.dylib
  Expected in: /usr/lib/swift/libswiftCore.dylib
 in /Library/Developer/Toolchains/swift-tensorflow-DEVELOPMENT-2020-02-04-a.xctoolchain/usr/lib/swift/macosx/libswiftTensorFlow.dylib
Abort trap: 6

I'm not able to reproduce the dyld: Symbol not found: _$s11AllKeyPathss0B12PathIterablePTl linker error using the February 4, 2020 macOS toolchain:
$ # Download and install the macOS toolchain.
$ wget https://storage.googleapis.com/swift-tensorflow/mac/swift-tensorflow-DEVELOPMENT-2020-02-04-a-osx.pkg
$ sudo installer -pkg swift-tensorflow-DEVELOPMENT-2020-02-04-a-osx.pkg -target /

$ # Try SwiftPM command.
$ /Library/Developer/Toolchains/swift-tensorflow-DEVELOPMENT-2020-02-04-a.xctoolchain/usr/bin/swift run
error: root manifest not found

DYLD_LIBRARY_PATH is not set on my computer, and setting it should not be necessary.
Could you please share more context to help us reproduce the issue? I wonder if you're running macOS Catalina? I'm running macOS Mojave.

Also, you may be interested in swiftenv, the Swift version manager, for managing Swift toolchains. It's easy to use and works nicely with Swift for TensorFlow macOS toolchains - I've personally used it since 2018 and never had any issues.
$ swiftenv versions # list available versions
  tensorflow-DEVELOPMENT-2020-02-04-a
  tensorflow-RELEASE-0.6
  5.1.1
* 5.1.2 (set by /Users/danielzheng/.swiftenv/version)

$ swiftenv global tensorflow-DEVELOPMENT-2020-02-04-a # set global version

$ swiftenv global # print global version
tensorflow-DEVELOPMENT-2020-02-04-a

$ swift # use toolchain set by swiftenv
Welcome to Swift version 5.2-dev.
Type :help for assistance.
  1> import TensorFlow
  2>

https://github.com/tensorflow/swift/issues/360 tracks updating the macOS toolchain installation instructions to use swiftenv.

I am running Catalina indeed - will check this swiftenv thing, looks great!

Has this issue been resolved or is this still needed?

Hi, there hasn't been activity on this PR for a while. We're going to close it to keep our list of open PRs small. Of course, feel free to reopen any time if you have time to come back and work on this!

@migueldeicaza Thank you so much for posting this, I'm finally done with a very frustrating hours-long wild goose chase.
My issue was with running Instruments, I defined DYLD_LIBRARY_PATH the way it is in your commit in 'Edit Scheme' for my Xcode project and it finally worked.


Guildtree Color

This commit adds support for configuring tree_color which sets the background color for the guildtree's cursor, as well as the text color for the guildtree.
A few things to consider:

I'm not quite sure if tree_color is a name that describes what it does properly.
This commit has tree_color set to white by default, making the text hard to read. This is the same as the current behavior, so might be a good idea to switch it to gray or something.
It is possible to change graphics color too. Not sure if I should create a separate option for it, or if tree_color should apply to it.
Preferably the background color and the text color should be separate options, but from my understanding, limitations in tview make the two options the same. I've got very limited knowledge in go, so don't take my word for it.

Either way, this should improve legibility.

Stale


Build script fix for package rename

Realized that the build process was still pulling the version from the old nugets. This should fix it. WinJS will still pull the version for the old name.

Hi @gb92, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (gaben). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;


Example: Recipe Database - !gunzip command not working

Hi,
I am trying to reproduce the code at page 184 of the book (Chapter 3).
!curl -O http://openrecipes.s3.amazonaws.com/recipeitems-latest.json.gz
!gunzip recipeitems-latest.json.gz
the second command to unzip the file gives me the error:
'gunzip' is not recognized as an internal or external command,
operable program or batch file.
How can I unzip the file?
Thanks,
Marco

Actually I just saw the adderss: http://openrecipes.s3.amazonaws.com/recipeitems-latest.json.gz does not contain the correct file.

Yes, it seems that the original file was removed.

See

https://github.com/sameergarg/scala-elasticsearch/blob/master/conf/recipeitems-latest.json.gz

thanks @wulj2

thank you! @wulj2


Could navigate by opening new panel instead of opening new tab?

just like this

Hi, looks like it is possible at least. Will dig into this when time permits
https://stackoverflow.com/questions/56902750/how-to-open-file-into-vs-code-split-window-programatically


Server Error

I download the mod to the server but I get this error and the server is shutting down

Fixed the issue in v1.2.0. Thanks for trying out my mod on a server. :)
https://modrinth.com/mod/beans-backpacks/version/1.2.0-1.20.2


⚠ Bofrost.es has degraded performance

In f9e1c53, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1155 ms

Resolved: Bofrost.es performance has improved in d79458d after 8 minutes.


integrations: aioredis creates coroutines that do not execute for sync operations

Description
In order to record  Redis database transactions via aioredis client library, we upgraded the newrelic python agent from  v<IP_ADDRESS> to v<IP_ADDRESS>
Service degradation was observed as the update was rolled out in production.
The cause was that the newrelic wrapped aioredis functions for Pipelines were failing to execute.
To me, it seems that the new aioredis integration is wrapping all of the functions with async and effectively returning a coroutine while the original implementation returns an Awaitable (Pipeline)  always, that need not be awaited immediately.
Since aioredis supports both sync and async callbacks in the transaction function, the newrelic package should too.
Refer to the reproducible example below.
Expected Behavior
All functions to work the same as without newrelic integrations. The functionality should not break.
Troubleshooting or NR Diag results
This log was printed to stderr when aioredis pipeline set was used in a transaction.
RuntimeWarning: coroutine '_wrap_AioRedis_method_wrapper.<locals>._nr_wrapper_AioRedis_method_' was never awaited

Steps to Reproduce
Instructions and repro here -
https://gist.github.com/vishal-wadhwa/337ff7c7e3146ede0849cbbbfff107b0
Your Environment
Not relevant. Reproducible in all environments.
Additional context
NA

We can reproduce and confirm this is an issue, we'll get a patch out soon to avoid breaking the underlying package functionality.
Unfortunately full transaction support is a bit large for a patch and would be a new feature. It will need some development time so for the time being transactions will function but won't send up any telemetry data while we work to support them.

Is this really fixed? Still seeing this error with latest library release...
I'm using FastApi with aioredis to build a realtime application with pub/sub pattern. On FastApi startup I create an asyncio task that subscribes to a redis channel pattern.
However when using the latest release I'm facing similar issue as @vishal-wadhwa , I get AttributeError: 'coroutine' object has no attribute 'psubscribe' . But if instead I use an older version such as newrelic==<IP_ADDRESS> everything works perfectly!

The latest release of the agent should have a fix for this issue.  If this is still an issue for you with the latest version, we can reopen this ticket.


Create README_CN.md

Hi, I am new in GitHub so if I made any mistake, please tell me about it.
I just finished all the Chinese version of readme.md. please have a look about it.
Also, I did it while joining an activity called "hacktoberfest". Should I add some tag into this message?
Thank you so much

You can add a tag if you'd like, I'm unaware of hacktoberfest.


learning-pytorch-geometric-on-ipus/ notebooks have C++ endpoint not connected errors

2_a_worked_example.ipynb cell 11 from tqdm import tqdm ... fails with
Error: In unknown:0: 'std::exception': boost::filesystem::directory_iterator::operator++: Transport endpoint is not connected: "/tmp/exe_cache/pyg-a-worked-example"
Error raised in:
  [0] popart::TrainingSession::createFromOnnxModel
  [1] Compiler::initSession
  [2] LowerToPopart::compile
  [3] compileWithManualTracing

3_small_graph_batching_with_padding.ipynb cell 14 fails with
Error: In unknown:0: 'std::exception': boost::filesystem::directory_iterator::operator++: Transport endpoint is not connected: "/tmp/exe_cache/pyg-padding"
Error raised in:
  [0] popart::TrainingSession::createFromOnnxModel
  [1] Compiler::initSession
  [2] LowerToPopart::compile
  [3] compileWithManualTracing

4_small_graph_batching_with_packing.ipynb cell 20 poptorch_model.train() ... fails with
Error: In unknown:0: 'std::exception': boost::filesystem::directory_iterator::operator++: Transport endpoint is not connected: "/tmp/exe_cache/pyg-packing"
Error raised in:
  [0] popart::TrainingSession::createFromOnnxModel
  [1] Compiler::initSession
  [2] LowerToPopart::compile
  [3] compileWithManualTracing

The remainder of these 3 notebooks are blocked from running.

Hi, I’m unable to reproduce these errors. Can you give me more information on the runtime details? Which image is your container pointing to? Which machine type are you running on?


How to commit changes on form submit?

Right now, when I edit a model, I see on every change (including key presses), the following operations being enqueued:

Right now I'm synchronizing memory with localStorage, so this is kind of free. But when I connect the JSON endpoint it will fire too many HTTP requests. How can I submit all the changes when the editing finishes (let's say, on form submit)?

Hi @dgeb. Thanks for all your work on this!
I was wondering if there's been progress on the editing contexts feature.
Thanks again!

Orbit now supports transactional contexts with immutable data (immutable.js makes creation of transactions extremely cheap).
ember-orbit wraps these capabilities in its own Store and Transaction classes.

so what would be the correct method to use updateRecords so that orbit would identify the changes and only send patch requests for the updated values?
this.store.update(t=>t.updateRecord()) is sending everything that i pass as attributes..
should i implement some method to check this before calling update, or does orbit provide this?

@TheLooseCannon the most common approach used for forms is to fork a store, use the fork to handle form mutations, and then merge the fork back into the base store on submit. See https://github.com/orbitjs/ember-orbit#forking-and-merging-stores

that worked pretty well. i loved that.@dgeb. Thanks for the help.

does this method work with object attributes. i have certain attributes in in my data which are objects. is it possible to track the changes in these types of attributes too?
i am also trying to figure out how if orbit would recognise relations if they are inside the object.
something like
data: {
attributes: {
       address: {
                   type: 'work',
                   address1: 'abc',
                   address2: 'xyz',
                   owner: 'owner-id',
                   residents: ['user1-id','user2-id']
            }
       }
}

or can you suggest a nice work around to handle this objects?

@TheLooseCannon I'm glad that forking worked for you :)
In your example, the address object will be treated as a whole object that will be included in a replaceAttribute operation. If you want relationships to be recognized by Orbit so that it can manage inverses and such, I'd recommend that you normalize your schema - e.g. create models for address, owner, and user and break down the `address object. You can always build it back up at the serializer layer if your API requires this form.
Also, please ask how-to questions over in https://gitter.im/orbitjs/orbit.js  I'm liable to lose track of closed issues here, and this will allow others to pitch in as well.


Two compiler warnings

Compiling pango v0.3.0
warning: unused import: `std::ascii::AsciiExt`
 --> src/input.rs:8:5
  |
8 | use std::ascii::AsciiExt;
  |     ^^^^^^^^^^^^^^^^^^^^
  |
  = note: #[warn(unused_imports)] on by default

warning: method is never used: `new`
  --> src/sys/pango/item.rs:24:5
   |
24 |     pub fn new() -> Self {
   |     ^^^^^^^^^^^^^^^^^^^^
   |
   = note: #[warn(dead_code)] on by default

    Finished dev [unoptimized + debuginfo] target(s) in 167.84 secs
     Running target/debug/deps/nvim_gtk-cc4c834832394e8d

@mcepl You sure that you reported to right repo?
There no input.rs in gtk and in seems in https://github.com/gtk-rs too.
Path src/sys/pango/item.rs also very strange.

Apparently, not. Sorry.


Google_Client::verifyIdToken throws undocumented exception

Environment details

PHP version: 7.2
Package Version: 2.2

Steps to reproduce
Pass an invalid non JWT Token to Google_Client::verifyIdToken.
Code example
try {
    $token = $this->googleClient->verifyIdToken("123");
} catch (\LogicException $ex) {
    throw new \Exception("Could not retrieve user information", $ex->getCode(), $ex);
}
//Uncaught exception UnexpectedValueException

It will throw a UnexpectedValueException but verifyidToken is only hinted to throw LogicException.

Thanks for the report @crtl. I've opened #1592 to fix this.


What's the result of going to /api/login?

Hi,
Thanks for creating this bundle. I'm using it with FOSUser, /api/login_check works as expected and returns the JWT when the correct username and password are POSTed.
But what controller action is /api/login (set in the firewalls section of security.yml) supposed to map to? For me it's going to FOSUser's login form which isn't correct for an API, but this is the default FOSUser behaviour, I haven't defined any custom routes for /api/login, do I need to?
Here's my [security.yml] (https://github.com/riyunoa/gilliblog/blob/master/app/config/security.yml).
Thanks in advance :)

Hi,
Well the sample security config was just provided as a quick example but you're right it might be a little confusing :)
In the context of an API you just need the login_check route, which will receive the user credentials just like submitting a form would. I guess you're safe to limit this firewall to ^/login_check instead of ^/login.
Let us know if it helps !


Add BarProp

Weird one.
The meaning of the visible property changed, but hasn't been implemented everywhere.
The old meaning is still implemented by Apple, so the implementation is not consistent.
Given that incompatibility, leaving this as baseline false provides the best guidance for developers making decisions today.
Cainuse has all green however. If we merge this feature as baseline false, I'll go file an issue there about it.

Cainuse has all green however. If we merge this feature as baseline false, I'll go file an issue there about it.

The caniuse entries are just generated from BCD, so only https://caniuse.com/mdn-api_barprop_visible_returns_popup shows the Safari difference. This is normal; no action required.


[Task]: Create platform structure for adding widget features

Is there an existing issue for this?

[X] I have searched the existing issues

SubTasks
Widgets can be enhanced by the platform using simple configs. To achieve this, widgets need to enhance the following

[ ] Property pane configuration
[ ] Default properties

The following are the subtasks to enable this

[ ] Create a Widget features registry
[ ] Enhance property pane configurations based on feature registry and widget feature configs
[ ] Enhance default properties for widgets based on feature registry and widget feature configs.

To validate this change we'll be using the auto height feature

[ ] Add auto height to widget features registry
[ ] Add auto height default properties to widget features map
[ ] Add auto height property pane enhancements to widget features map
[ ] Add widget helper utilities for auto height

Closing this as implemented.


Updated Validations.py python script file

Updated validations.py python script.
Fixed the behavior of validate_user function in validations.py.
Fixes #<issue_number_goes_here>

It's a good idea to open an issue first for discussion.

[ ] Tests pass
[ ] Appropriate changes to README are included in PR

Updated Validations.py python script file and added code to test the scenarios


(SERVER-1090) Fix race condition in puppet-server-config-test

This commit adds some (gross) logic to the puppet-server-config-test
to eliminate a race condition that was allowing JRuby pool initialization
to happen on a background thread after the test finished executing.
The long-term fix is described in SERVER-1087.

:see_no_evil:

:ship:


fix: setNavigationBar page setconfig error

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.huaizhi.xq seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


New collective setting to select plan

This only applies to new "host less" and "self hosted" collectives
Existing collectives are grandfathered
Collectives created under a host (such as through the open source flow) are free accounts since we will be charging the host (which is effectively a collective with the "network plan").
I like the idea of using total amount managed (introduced by @benjam) as a way to separate the different plans. I think it makes sense at the level of a collective and it shows that the cost is only 1%.
I'm introducing here the concept of (sub) collective (open to other name suggestions). It's basically a collective linked to your collective. ie. Webpack is a subcollective of the Open Source Collective. But likewise, XR-Belgium could have a collective for different working groups to keep the budget separated (e.g. a communication working group/collective, a legal working group, etc.)
There is possibly an infinite "hierarchy" of collectives: XR -> XR Belgium -> XR Brussels -> XR Brussels Communication Working Group (and it can be circular, so it's more a graph than a tree, webpack is both part of the open source collective and the javascript foundation for example). So each sub collective's plan could be covered by itself (starting with the free plan) or by one of their parents.

As you'll notice, the concept of host is totally removed. Because this should be a separate conversation. First one is we need a platform to keep track of our budget transparently and record the money that we receive in cash (for most offline groups). Then as we grow, we need to figure out how to open a bank account and self host or find a host. Different stage of the lifetime of the collective.

So even if they have no host and are entering everything manually, we will still charge them the same as Collectives with money actually flowing through the system?
I agree this looks like a good approach for self-hosted and un-hosted Collectives. We will just need to be careful about how people end up on this page, and make sure that Collectives actually joining an existing host do not see this info as it will be very confusing for them.
Sub-Collectives are really confusing this for me. I don't feel comfortable including anything that we haven't fully defined and agreed to include. That whole topic should be a seperate issue. I really don't think we should couple figuring out that complexity to making progress on the business model. It's a big change in how the whole hierarchy or relationships of Collectives works on the platform. If we want to add that later, we can, but it needs its own discussion.
I disagree that this always will come about chronologically:

"First one is we need a platform to keep track of our budget transparently and record the money that we receive in cash (for most offline groups). Then as we grow, we need to figure out how to open a bank account and self host or find a host. Different stage of the lifetime of the Collective."

In fact there are many, many, many Collectives that actually want to join and existing host right away. Almost all Collectives that have been created up to now in fact. The majority of groups do not get money in cash and they need banking services immediately. That's the key reason people come to Open Collective to get started and they value we provide. They find us specifically because they are experiencing this pain point.
I realise you're trying to create space for groups that will record things manually but these groups will be small and hardly have any money, not our priority customers from a business model point of view. What evidence do we have that these groups even exist and want to use such a system? This needs validation before we start building.
I would advocate for focusing on two main pieces of work here:

Fix the whole experience for self-hosted Collectives, including incorporating a pricing model like you've shown here.
Fix the flow for Collectives seeking an existing Host, so they never see this pricing model and are smoothly onboarded into the Host that works best for them. This requires us shifting the business model to the Host-pays concept, so these Collectives only need to consider what the Host charges not any platform fees.

Sub collectives is not a terminology we use today and I don't think we need to. They are all collectives.

Webpack is a subcollective of the Open Source Collective.

No, webpack is a collective hosted by the Open Source Collective Organization. It is not dependent from the OSC.

There is possibly an infinite "hierarchy" of collectives: XR -> XR Belgium -> XR Brussels -> XR Brussels Communication Working Group (and it can be circular, so it's more a graph than a tree, webpack is both part of the open source collective and the javascript foundation for example). So each sub collective's plan could be covered by itself (starting with the free plan) or by one of their parents.

The complexity of this is infinite. Let's come up with an alternative way of seeing this. It can be circular, seems like a particular kind of implementation nightmare.
They are all collectives and they should be differentiated by name. So XR Belgium is a collective and XR-Belgium-Working-Group-A is another collective under the same host.

As you'll notice, the concept of host is totally removed

Yes, but it shouldn't be something in stages of growth.  I agree with @alanna that it won't happen chronologically. It should be in parallel in different flows / steps of the oboarding process

First: Great, I can create a collective, add people, it's up and running, has my images, I can submit expenses, I can manually add funds I already have. Free up to $1000, great I can try it!
Second: I want to raise funds through Open Collective, how can I do this? Oh cool I can connect a Stripe or a PayPal (one day, if the universe allows) account that I own. Done!
Third: hmmm I don't have a paypal account / stripe for my community, I'd like someone else to to do this for me --> Discover a great host for you!

--> https://github.com/opencollective/opencollective/issues/2295#issuecomment-517718687

I would advocate for focusing on two main pieces of work here:
Fix the whole experience for self-hosted Collectives, including incorporating a pricing model like you've shown here.
Fix the flow for Collectives seeking an existing Host, so they never see this pricing model and are smoothly onboarded into the Host that works best for them. This requires us shifting the business model to the Host-pays concept, so these Collectives only need to consider what the Host charges not any platform fees.

I agree.
Final thought: host-less and self-hosted are the same thing in muy view. There's always a host, the difference is if the host accepts donations via stripe or not. But we need to de-link being a host from having a stripe account.
Then you reduce the complexity to two alternatives:
you are self-hosted
you are fiscal sponsored by a different organization .

Thanks for those comments.
Ok let’s not introduce the concept of “sub collectives”. It’s complex enough like this.
And yes, collectives are independent from their host. It’s a very good reminder. Hosts are just contributors whose contribution is “holding (part of the) money” for the community. Hosts (like any contributor) can come and go, but the collective remains. It should be fluid.
I don’t think there should always be a host (at least in the future as you should be able to create a collective and only use it for getting an email address so that people can reach out to your group, for having a GitHub issues equivalent, for having a place to record and publish your expenses transparently, ...) but you are absolutely right to say that we should decouple Stripe from being a host.
So the simplified version becomes:

You can create an open collective without a host
If you want to start collecting money online, you need to connect a Stripe account to a user or an organization (that will effectively act as your host in our current infrastructure).
If you want to record money that you have received “offline”, you need to specify who is holding the money for you (can be again an individual or an organization that will be considered as a “host” in our infrastructure, eventually, you should be able to have “multiple hosts”).

If you reach more than $1,000 of budget managed, you need to start paying $10/m.
If you are a host and you want to access the host dashboard to help you with the fiscal sponsorship process, you pay according to #2251.
There is still the question of the different flow to help hosts onboard new collectives as @alanna rightly pointed out. I would see that in two main ways:

From the website of the host (e.g. womenwhocode.com, oscollective.org) people should be redirected to the create collective flow where the host is already predefined.

From opencollective.com, when you create an open collective, we should offer different “templates”.

A generic one,
One for an open source project,
One for a Women Who Code chapter,
One for an Extinction Rebellion chapter (or working group),
etc.

Based on that template, the host will automatically be defined (and will have to be manually approved by the host or automatically based on some rules such as the 100 github stars one for the OSC).
3- In case you have created a generic open collective without a template, when you reach step 2 (start collecting money online), we should offer you to either connect a stripe account or to use a fiscal sponsor that we can recommend based on tags.

I am very nervous about the multiple hosts idea being slid into this project. I think it introduces way more complexity than you might expect. For example, Collectives in c3 legally may not have multiple hosts and all funds for the project must be held by one entity. I agree it's a cool idea, but we need to step back and think it through and plan it properly, and it's not currently a priority. Can we please treat the multiple hosts idea as a seperate topic and not keep introducing more complexity into this project?
Another thing I think is important but is probably out of scope of this project: Self-hosted Collectives should not need a seperate host entity. Hosts have budgets and teams and updates and everything a Collective has. They should be Collectives themselves, with added functionality. Hosts having to create another Collective for themselves and manually add host fees is confusing. If we're trying to onboard more self-hosted Collectives, this is something we'll need to fix eventually.

If you reach more than $1,000 of budget managed, you need to start paying $10/m.

By "you" you mean "the fiscal host" right? Not the Collective. I thought we were designing the business model so the hosts are the paying customers.

If you are a host and you want to access the host dashboard to help you with the fiscal sponsorship process, you pay according to #2251

Are you implying we will have hosts on the platform without access to the dashboard and normal functionality for hosts? If so, how will that work? They will accept and hold funds but not be able to pay expenses? This seems like a complex duality to design and maintain.

From opencollective.com, when you create an open collective, we should offer different “templates”.

I don't quite understand what this means. Can you explain in more detail how it would work? Like a form question saying "Is your group associated with an organization, network, or movement already on Open Collective? If so, which one?" And then suggest hosts based on their answer?
I would rather take a step back and workshop the host discovery process itself. I think we can do a lot better than how tags currently work. I think that's an important aspect to this onboarding flow project but would be better served by treating it as its own sub-project.

For example, Collectives in c3 legally may not have multiple hosts and all funds for the project must be held by one entity

Good reminder. Thanks. (I'm still not entirely sure why this is the case, I'd love to dig into this at some point, but that's another topic).
We could enforce one host for now to keep things simple, but knowing that this constrain will eventually go away (and must go away to really reflect the nature of a collective which should not belong to any host).

By "you" you mean "the fiscal host" right? Not the Collective. I thought we were designing the business model so the hosts are the paying customers.

Yes but moving forward, anyone can be a host. No need for a Stripe account, no need to host more than one collective.

Self-hosted Collectives should not need a separate host entity (...) Hosts having to create another Collective for themselves and manually add host fees is confusing.

I agree with you that the current situation of having a host create a collective makes no sense. However, money should always be held by a legal person or entity to reflect reality, that means a user or an organization on open collective. A way to simplify this would be to make sure that a user or an organization should be a collective themselves so that we can follow the money coming in and out (such as host fees). The good news is that this is already the case in the background (in the database).
For the rest, I think it's time to move on to wireframes otherwise we will keep turning in circles.
We can gather more feedback at that stage.

After working with @xdamman yesterday, I have done a draft of an onboarding flow. It was too complex to draw on paper so I did clickable mockups in Balsamiq.
View it here.
Goals:

make the self-hosted Collective onboarding experience as simple as possible
introduce the new $10/mo plan for accepting funds outside Stripe (bank transfer payment type and add funds manually)
only show users info they need to be concerned about (esp anything about hosting)
have a clear pathway for Collectives looking to join OSC (and other hosts) as they are still the majority of our new Collectives

Questions:

where does user login or account creation fit in?
is the OSC use case still too obscure if they start from the homepage instead of the OSC page apply button? I'm concerned OSC Collectives won't find their way. I felt like I had to add help text for them which might be a sign the design could be improved for that use case.

@xdamman I know we debated about allowing users to add existing funds before they need to decide if they want to raise more by turning on the $ features. However after thinking about it, I really feel that adds too much complexity. Almost all Collectives come to us because they want to raise $. However, I think we should add a setting so Collectives can turn off the financial contribution option if they want. I suggest we do that and then if that use case turns out to be common, we think about how to address it in onboarding.

I don't see the point of asking the currency so early in the process. Currency should ultimately be the one from the host, otherwise its proved to be highly confusing for everyone - and the system. However, we discussed the ability to define a "cosmetic" currency for the frontend.
Warning on the invitation by email: we need to make sure this doesn't create new accounts by default, and this should ideally primarily be a search with auto-complete.

Currency select: because in this flow they will often be creating a new host in the background as part of the setup, and we need to know the currency. We don't want to emphasise awareness of this whole "host" thing so we'd like to just automatically create it. If they are heading toward joining an existing host, we also need to know the currency they want so we know what host options to show them. If we don't ask currency at the beginning, where do we ask it?
I agree about not creating duplicate accounts. These designs assume the "select existing" module that we need for many things will be in place. If it's not, we might need to rethink the design. I believe that even if you can't select the existing user, you should be able to invite them by email and then if they already have an OC account, the person being invited should be able to click "accept invite" on the email and then log in and associate the new role with their existing account. This is how most other tools I use work.

We should be really careful in the details around currency selection. For example, if I pick "euro" early in the process, I should not be prevented to see "Open Source Collective" as an option. IMHO, by default, we should not even try to filter hosts based on currency, it matters more to have an host that align with your mission, than align with your desired currency. My opinions are based on my experience with the current "host picker" which is currently doing a pretty bad job at surfacing relevant hosts.

Thank you Alanna for putting this into a balsamiq and thanks François for your input.
I have now enough feedback to work on it and come back with a first wireframe proposal.
@alanna I understand your concern. You are right to presencing that today most collectives are joining because they want to raise money. However, the goal of this redesign is to open new avenues for open collectives. I’ll make sure that we don’t negatively impact the OSC through this new flow.

Implementation issue here https://github.com/opencollective/opencollective/issues/2662


[FLOC-2909] Use openshift/busybox-http-app:latest

Fixes https://clusterhq.atlassian.net/browse/FLOC-2909
This is a work-around for a Docker 1.8.1 / Docker hub bug.  Hopefully Docker upstream will fix whatever the underlying problem is.  This avoids us having hanging/failing test suite meanwhile.
Note that BuildBot is still using an older version of Docker - probably around 1.3.3.  Ideally we would have coverage on the CI system for the old and new versions of Docker until we finish the transition.  Failing that, build results against Docker 1.8.1 are available at http://<IP_ADDRESS>/boxes-flocker?branch=http-app-latest-FLOC-2909 (for as long as I happen to be running that alternate master).

I'm seeing red on the linked buildbot...

Yea.  Sorry, my explanation was incomplete.  This is step 1 of 5 or so to get the suite passing against Docker 1.8.1.  See sub-tasks of FLOC-2902 for the other steps.  Maybe http://<IP_ADDRESS>/boxes-flocker?branch=master is a good point of comparison for this work (master against Docker 1.8.1).  Unfortunately those results vs the results I linked to also don't show an obvious improvement either...

Ah, OK. Merge when green.


Add the three emulator debug registers to write characters to the console

Mimics recent additions to x16emu.
2 notes:

I don't know how to translate the behavior of writing to register 8 to box16
I don't know why x16emu goes through the trouble of converting a character before actually printing it? (print_iso8859_15_char)   Just putchar'ing it to the console works fine?

I don't know why x16emu goes through the trouble of converting a character before actually printing it? (print_iso8859_15_char) Just putchar'ing it to the console works fine?

This converts the byte (X16's ISO format) to UTF-8 for display on the console, assuming the console's encoding is expecting UTF-8.

ok I don't know how to do that in box16, I couldn't find a routine like this in the source code and was reluctant to just copy the whole .c file

In x16-emu, this routine is also used to convert filenames for hostfs, as well as for -echo in iso mode.  Box16 appears to have the function available in the iso mode of -echo, see hypercalls.cpp

Yes, I suppose it would make sense to pull the implementation out of there (see lines 331-355) and put it in its own function, perhaps as "print_petscii" in unicode.cpp/.h or something, so it can be called from either the hypercall hook or the memory register.

There was actually  already an existing print_iso8859_15_char function in unicode.cpp already.


post_expoitation_correlation

Details
correlation search for windows post exploitation analytic story
What does this PR have in it? Screenshots are worth 1000 words 😄
Checklist

[ ] Validate name matches <platform>_<mitre att&ck technique>_<short description> nomenclature
[ ] CI/CD jobs passed ✔
[ ] Validated SPL logic.
[ ] Validated tags, description, and how to implement.
[ ] Verified references match analytic.

Minor updates to description!


Only working for some values

Hello,
I tried testH3126SECDED() with Visual Studio 2015.
For d = 16972 it is working fine. But for many other values it is not working.
E.g. for d =99 isCorrect() returns false.
Did you check this code with different values?
best regards,
Wolfgang

@wplatzer
oh my god.
exactly, you're right.
i will fix it. (but i forgot some part of calculation...)
thanks!!

@wplatzer
maybe currently master was fixed!
please check it!!
thanks!

Hi,
now it works fine. I already made the same changes and tested with all possible values.
br,
Wolfgang
From: ISHII 2bit<EMAIL_ADDRESS>Sent: Donnerstag, 01. Juni 2017 11:51
To: 2bbb/ofxHammingCode<EMAIL_ADDRESS>Cc: Wolfgang Platzer<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [2bbb/ofxHammingCode] Only working for some values (#1)
@wplatzerhttps://github.com/wplatzer
maybe currently master was fixed!
please check it!!
thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/2bbb/ofxHammingCode/issues/1#issuecomment-305445784, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AbtsmDnymON8RjLhA3FzHLgeN6U_pN6qks5r_ol5gaJpZM4NqFsf.

@wplatzer
thanks for checking!


build(maven): bump pom.xml to 3.2-SNAPSHOT

As per our workflow, this pull request increases the version of the XSpec release and adds the snapshot suffix.
As usual, this should be the first pull request to be merged into master in order to start the development of XSpec v3.2.

Azure Pipelines with macOS-latest started giving us Java 21 instead of 8 or 17. In that workflow, the Java compilation step had an error
Compile Java
Buildfile: /Users/runner/work/1/s/test/ci/build_java.xml
Note: /Users/runner/work/1/s/test/ant/worker/java/io/xspec/xspec/ant/taskdefs/MakePath.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

At some point, we should avoid using/overriding the deprecated API.
But for now, XSpec doesn't say it supports Java 21 and I'd like to get the workflow passing with a Java version that XSpec supports. ef557eaf5d0d109fa24c9effe551a6fc770e951e selects Java 8, which is what the last-merged PR used for this workflow.
The log https://xspec.visualstudio.com/xspec/_build/results?buildId=5015&view=logs&j=a5e52b91-c83f-5429-4a68-c246fc63a4f7
now says
=== Print JRE version
openjdk version "1.8.0_422"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_422-b05)
OpenJDK 64-Bit Server VM (Temurin)(build 25.422-b05, mixed mode)

=== Print JDK version
javac 1.8.0_422

instead of the following, which was in the log of the earlier, failing run.
=== Print JRE version
openjdk version "21.0.4" 2024-07-16 LTS
OpenJDK Runtime Environment Temurin-21.0.4+7 (build 21.0.4+7-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.4+7 (build 21.0.4+7-LTS, mixed mode)

=== Print JDK version
javac 21.0.4

More about macOS-latest on Azure Pipelines: An announcement dated Oct 1, 2014 about the deprecation of macOS-12 also says, "The macos-latest Hosted pipelines agent image now uses macOS-14 (Sonoma)." This PR was created on Oct. 1, whereas the last-merged one (#2012) was merged on Sep. 30. Maybe the configuration of macOS-latest changed on Oct. 1 and that's why the compilation error appeared in this particular PR.

@cmarchand , do you have any code review feedback on either the routine pom.xml change or the Azure Pipelines configuration change?

I'm going to merge this on Oct. 16 if no one says not to. I believe the change is safe, and if the Azure Pipelines part isn't the best way to react to the macOS change, a subsequent pull request can make adjustments.

As long as Saxon is commited to Java 8, in my opinion, we must continue to build Java Classes with Java 8, to preserve compatibility with our oldest users - well, the one who are still using Java 8.

As long as Saxon is commited to Java 8, in my opinion, we must continue to build Java Classes with Java 8, to preserve compatibility with our oldest users - well, the one who are still using Java 8.

Sounds reasonable to me. Thanks for your code review! I'll merge this PR now.


fix(eslint-plugin): cache access to NODE_ENV

Description
Cache access to NODE_ENV. process.env is apparently a special object and is slow to access. We don't expect NODE_ENV to change here, so we should cache it.
Test plan
n/a

I don't even know how you managed to figure this one out but :shipit:

😅 Someone else did the work: https://github.com/jestjs/jest/pull/14455


Output panel for Python opens automatically when hitting syntax errors.

Environment data

VS Code version: 1.26.1
Extension version (available under the Extensions sidebar): 2018.7.1
OS and version: Ubuntu 16.04 LTS 64-bit
Python version (& distribution if applicable, e.g. Anaconda):3.5.2
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): N/A
Relevant/affected Python packages and their versions: N/A

Actual behavior
Output panel for Python view opens by itself during coding, which iterrupts my work and sometimes the panel covers the line I'm typing.
Expected  behavior
Well, it shouldn't pop up on its own, right?
Steps to reproduce:
Scenario A

Create an empty .py file
Type for n in, the Output panel will pop up right after finishing typing in.

Scenario B

Create an empty .py file with following lines:

class Smallthing:
    def __init__(self, first=None, second=None):
        self.first = first
        self.second = second

class Something:
    def __init__(self, first=None, second=None):
        self.first = first
        self.second = second
        self.small = Smallthing(
            # will insert new line
            second=self.second
        )

Type in first=self. at the line with comment # will insert new line, the Output panel will pop up right after typing ..

Logs
Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)
Scenario A
[Info  - 下午3:58:58] Found 196 completions for file:///home/john/Documents/codes/simplebug.py at (1, 2) after filtering
[Info  - 下午3:58:58] Found 196 completions after hooks
[Info  - 下午3:59:00] Found 196 completions for file:///home/john/Documents/codes/simplebug.py at (1, 8) after filtering
[Error - 下午3:59:00] Exception in Intellicode Python Extension: System.AggregateException: One or more errors occurred. (Object reference not set to an instance of an object.) ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.PythonTools.Analysis.Pythia.ExpressionWalker.PostWalk(ForStatement node)
   at Microsoft.PythonTools.Parsing.Ast.SuiteStatement.Walk(PythonWalker walker)
   at Microsoft.PythonTools.Parsing.Ast.PythonAst.Walk(PythonWalker walker)
   at Microsoft.PythonTools.Analysis.Pythia.PythiaService.GetRecommendationsAsync(CompletionItem[] completionList, PythonAst ast, SourceLocation location, Int32 recommendataionLimit)
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at Microsoft.PythonTools.Analysis.Pythia.LanguageServerExtension.PostProcessCompletion(Object sender, CompletionEventArgs e)
---> (Inner Exception #0) System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.PythonTools.Analysis.Pythia.ExpressionWalker.PostWalk(ForStatement node)
   at Microsoft.PythonTools.Parsing.Ast.SuiteStatement.Walk(PythonWalker walker)
   at Microsoft.PythonTools.Parsing.Ast.PythonAst.Walk(PythonWalker walker)
   at Microsoft.PythonTools.Analysis.Pythia.PythiaService.GetRecommendationsAsync(CompletionItem[] completionList, PythonAst ast, SourceLocation location, Int32 recommendataionLimit)<---

[Info  - 下午3:59:00] Found 196 completions after hooks

Scenario B
[Info  - 下午4:15:30] Found 186 completions for file:///home/john/Documents/codes/simplebug.py at (11, 14) after filtering
[Info  - 下午4:15:30] Found 186 completions after hooks
[Info  - 下午4:15:32] Found 186 completions for file:///home/john/Documents/codes/simplebug.py at (11, 20) after filtering
[Info  - 下午4:15:32] Found 186 completions after hooks
[Error - 下午4:15:32] Request textDocument/completion failed.
  Message: Start and End must be well ordered
  Code: -32000
[object Object]

Output from Console under the Developer Tools panel (toggle Developer Tools on under Help)
Scenario A
  ERR Cannot read property 'map' of null: workbench.main.js:sourcemap:1398
TypeError: Cannot read property 'map' of null
    at asCompletionResult (/home/john/.vscode/extensions/ms-python.python-2018.7.1/node_modules/vscode-languageclient/lib/protocolConverter.js:145:51)
    at <anonymous>

Scenario B
No logs

Ah, just found the fix for this by installing the development build of the extension. Please close this issue!


Problem with uuid in production

You need to run this command inside postgres database that after it I can add uuid, because it give error in production @michielbdejong
I am just back code with uuid, when you have a time run this I think after it I will redeploy code @michielbdejong
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

I gave you access to the Heroku app, did you receive the invitation?

This is about https://time.pondersource.com, right?

Note that I'm adding server admin scripts for that server to https://github.com/pondersource-books/time (to which I also gae you access) so we should be using that for replayable actions we take against the server.


Dockerfile: listen on both IPv4 and IPv6

Follow up for https://github.com/NLnetLabs/routinator/issues/805.
Docker indeed doesn't support IPv6 properly, but a lot of other container runtimes do. This change makes routinator running in a container listen on both IPv4 (if available) and IPv6 (if available) by default.
Should I remove the documentation that was added in 603e44dc72a2b5542684969acdac1a51f0b13478 with this change?

Hi @rissson,
Thanks for the contribution, very appreciated! :clap:
It seems on the surface like a harmless improvement. Howevr, I'm not (yet) convinced that this is a change that we want to make.
The Docker container runtime is the intended target for the Dockerfile and the images we create and I am concerned that it could be misleading to make it appear to work with IPv6 out of the box given that IPv6 is not supported by Docker by default.
Also, we have no experience with other container runtimes and prefer where possible not to maintain solutions which we do not test and/or are not familiar with ourselves.
One possible way forward could be to extend our automated testing in some way to verify that this does indeed (a) not break with stock Docker and (b) works as intended under some other container runtime, but that would also potentially imply that we support such other runtimes, and at present I don't think we have the resources to test this ourselves or to extend our test / packaging processes in such a way.
@partim? @AlexanderBand? What are your thoughts on this? Perhaps I am being too strict and we should just say LGTM?

If Docker doesn't support IPv6 by default, but it could possibly work then I'd rather suggest in the documentation that "[::]:3323" may work on certain (or most?) systems, rather than making it the default.

The Docker container runtime is the intended target for the Dockerfile and the images we create and I am concerned that it could be misleading to make it appear to work with IPv6 out of the box given that IPv6 is not supported by Docker by default.
Also, we have no experience with other container runtimes and prefer where possible not to maintain solutions which we do not test and/or are not familiar with ourselves.

That's fair enough, but one can still use IPv6 with Docker. Either with Docker directly or by using it as a CRI in k8s. I myself have been running Docker with IPv6 turned on, by setting fixed-cidr-v6 and ipv6 in /etc/docker/daemon.json and running the container with --sysctl net.ipv6.conf.all.disable_ipv6=0, and am now in the process of moving stuff over to a dual stack k8s cluster running containerd instead of Docker.
I was banging my head around figuring out why I couldn't reach routinator over IPv6, but could over IPv4, and checking that routinator was listening over IPv6 was the last thing I checked because I assumed that it would. I think most things I run listen on both v4 and v6 if available by default.
On the topic of distributing OCI images, I think it's safe to assume that people will not only run it with the Docker runtime, as they may choose another one because of Docker's (many) flaws.

One possible way forward could be to extend our automated testing in some way to verify that this does indeed (a) not break with stock Docker and (b) works as intended under some other container runtime, but that would also potentially imply that we support such other runtimes, and at present I don't think we have the resources to test this ourselves or to extend our test / packaging processes in such a way.

I have actually tried that change out with Docker and --sysctl net.ipv6.conf.all.disable_ipv6=1 to make sure that it still works in an IPv4-only environment, and it still does indeed.
This change shouldn't break existing installations, and allows for a step less for users. Also, if in the future more arguments are added to the default CMD, they may be missed by users upgrading that are overriding those to enable IPv6 support.

If Docker doesn't support IPv6 by default—but it could possibly work—then I'd rather suggest in the documentation that "[::]:3323" may work on certain (or most?) systems, rather than making it the default.

Just to make sure we're on the same page, [::]:3323 means listen on <IP_ADDRESS>:3323 if IPv4 is enabled on the system and [::]:3323 if IPv6 is enabled on the system. Or rather than system, I should say in the network namespace routinator is running in.

Apologies for the delayed response, it's a bit busy here at the moment. I'm not comfortable making this change at the moment, I'd want to do some testing and I don't have time unfortunately right now.

Just to make sure we're on the same page, [::]:3323 means listen on <IP_ADDRESS>:3323 if IPv4 is enabled on the system and [::]:3323 if IPv6 is enabled on the system. Or rather than system, I should say in the network namespace routinator is running in.

@AlexanderBand: I think this was directed at you?


hyperion-ng on raspberry pi os

Hello I need to install Hyperion 2.0.0 alpha-9 on a raspi 3 with Raspi pi os installed, see https://www.raspberrypi.org/software/
I need that version to use chromium-browser as well
Feature request
I have searched in the Hyperion forum but didn't get the right answer. And its not possible to sign in there, because the forum does not send emails for password management, don't now why.
I'm not sure if my configuration is supported. Any help for a beginner how to install Hyperion-ng and start thereafter  is welcome.
can u help?
best regards
guenni

What problem does this feature solve?
What does the proposed API look like?
How should this be implemented in your opinion?
Are you willing to work on this yourself?

https://docs.hyperion-project.org/


Create a DEMO Environment for Track

Set up a new demo environment
so that
all the latest CODE but a copy of the PROD data so we can check on how it works, but with the caveat that nobody CHANGES the info...
The five (possible) environments for EPIC.system (.track, .inspect, etc.):
DEV:          This environment is mostly for the DEVs for merging new CODE and for UX/UI testing.
TEST:         This is for QA testing and only deviates from the PROD because it doesn’t have the CODE from the current SPRINT.
PROD:       This is the latest QA approved version of the CODE and is the environment where USERs do their actual work.
DEMO:      This environment has an approved version of the PROD code (not necessarily the latest version of the CODE) and either a “safe” dataset (if the DEMO will been seen by viewers that cant see real data) that is kept “clean” for demonstration purposes. The data might be wiped and re-installed on a regular basis to ensure any demos go smoothly.
TRAIN:      This is the same CODE as PROD but with only “list” data so that users can train on any aspects of the application on a clean environment.  There might be different “safe” or “prod” datasets depending on what is being learned.

Please add your planning poker estimate with Zenhub @saravanpa-aot

Added the basic set of configuration/data to start creating works.