profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/ekr/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.

bifurcation/mint 192

A Minimal TLS 1.3 Implementation in Go

anantn/gupshup 20

A Simple WebRTC demo

ekr/base-drafts 1

Internet-Drafts that make up the base QUIC specification

ekr/arrow 0

Create sequence diagrams from textual descriptions.

ekr/autograph 0

Digital signature micro-service

pull request commentmozilla/mp4parse-rust

Add support for AMR-NB and AMR-WB.

Do you mean the changes on pr-277 branch will not be used by Firefox (I mean https://github.com/mozilla/gecko-dev/tree/master/third_party/rust/mp4parse and https://github.com/mozilla/gecko-dev/tree/master/third_party/rust/mp4parse_capi)? Will pr-277 branch also be maintained when master branch updating?

I created the pr-277 branch merely as an example of one way to put the code in your PR behind a feature so that we can accept it into the main development branch of this repo without having to include code in Firefox which isn't used. Does that make sense?

However, you're the author of this code and I didn't want to assume the way I did it was exactly what you'd want, so feel free to take whatever you like from the pr-277 branch, or do it some other way that makes sense to you. Also, feel free to use a different name for the feature if there's one that you find more appropriate than 3gpp. The only requirement we have is that the code is behind some feature since we don't want to include it in Firefox, which doesn't need this functionality right now.

For people who have projects base on gecko-dev and also need the features on pr-277 branch , it's a shame that the merging effort of mp4parse-rust could not be reduced if they would like to keep merging the latest version of gecko-dev. I know this might not be the main concern from Firefox's point of view, but do you have any suggestion for this scenario?

The intention is to merge your PR into the main development branch of this repo and eventually the published crate. That way, if someone wants to use it in a fork of geko-dev (or any other rust project) they can enable the 3gpp feature (or whatever you want to call it if you have a name you like better) in the Cargo.toml which adds the mp4parse or mp4parse_capi dependencies.

For gecko-dev in particular, it would be necessary to make some additions to this switch statement to handle the new MP4PARSE_CODEC_AMRNB and MP4PARSE_CODEC_AMRWB cases, but otherwise I think it would just be a matter of turning on the feature in the the mp4parse_capi dependency for gecko.

I tested this out and realized we'll want to have a C/C++ define corresponding to the rust feature for the sake of the generated FFI headers. I've updated the pr-277 branch to show where the change needs to be for cbindgen to generate the appropriate headers, but as I mentioned before, if you want to call the feature something else, feel free.

Really thanks for such detailed explanation! Yes, I understand and agree the intention of pr-277 branch. And I have no concern about this approach. Thanks a again!

I'll continue to complete this PR, thanks.

dreamaniajp

comment created time in a minute

push eventmozilla/fxa-pairing-channel

Ryan Kelly

commit sha cee3fd504b4bcc46d75635319a0837b55de32ce0

Update CircleCI config to keep vaguely with the times.

view details

push time in 3 minutes

push eventmozilla/addons-linter

renovate[bot]

commit sha 2f7fc336d5bea879f91753045693acde9e362e63

chore(deps): lock file maintenance (#3606) Co-authored-by: Renovate Bot <bot@renovateapp.com>

view details

Renovate Bot

commit sha 0749e4a14aab6389310f421383adf94092c864bb

chore(deps): update dependency webpack to v5.24.4

view details

push time in 3 minutes

push eventmozilla/addons-linter

renovate[bot]

commit sha 2f7fc336d5bea879f91753045693acde9e362e63

chore(deps): lock file maintenance (#3606) Co-authored-by: Renovate Bot <bot@renovateapp.com>

view details

Renovate Bot

commit sha 332137fc1b6dd8410760de1b06bbd389d478fab6

chore(deps): update babel monorepo to v7.13.10

view details

push time in 4 minutes

push eventmozilla/addons-linter

renovate[bot]

commit sha 2f7fc336d5bea879f91753045693acde9e362e63

chore(deps): lock file maintenance (#3606) Co-authored-by: Renovate Bot <bot@renovateapp.com>

view details

push time in 5 minutes

delete branch mozilla/addons-linter

delete branch : renovate/lock-file-maintenance

delete time in 5 minutes

PR merged mozilla/addons-linter

chore(deps): lock file maintenance

WhiteSource Renovate

This PR contains the following updates:

Update Change
lockFileMaintenance All locks refreshed

:wrench: This Pull Request updates lock files to use the latest dependency versions.


Renovate configuration

:date: Schedule: "before 8am on Tuesday" in timezone UTC.

:vertical_traffic_light: Automerge: Enabled.

:recycle: Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

:ghost: Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

This PR has been generated by WhiteSource Renovate. View repository job log here.

+294 -278

0 comment

1 changed file

renovate[bot]

pr closed time in 5 minutes

PR opened mozilla/reticulum

Combine CachedFile and underlying asset storage vacuum

Currently, CachedFile records are vacuumed separately from their underlying assets (in the expiring storage directory). This change:

  • Moves CachedFiles from an expiring storage directory to a cached directory.
  • Adds an accessed_at field to CachedFiles which is bumped up to once each day
  • Ties the vacuum task of CachedFile to also remove the files from the cached directory.

TODO: Any files in the expiring storage directory will not be accessible. One way to solve this is to add code to fallback to check the expiring storage directory if the cached file directory doesn't have the desired asset. That way, existing assets do not become inaccessible.

+410 -118

0 comment

11 changed files

pr created time in 6 minutes

push eventmozilla/fxa-pairing-channel

Ryan Kelly

commit sha 8525fab0e03a82326715d2f645034bfa1126b140

Update CircleCI config to keep vaguely with the times.

view details

push time in 6 minutes

push eventmozilla/reticulum

John Shaughnessy

commit sha b492a958b6e8b8710b2bb4ff3f7113249eba9a5e

Fix CachedFile access from file_controller

view details

push time in 8 minutes

PR opened letsencrypt/boulder

Create bouldernext docker-compose alias for db-next migrations
  • Add bouldernext docker-compose alias
  • Drop and create database on every test run
  • Symlink combined current db schema to sa/_db-next/migrations
+21 -25

0 comment

8 changed files

pr created time in 9 minutes

push eventmozilla/fxa-pairing-channel

Ryan Kelly

commit sha c29c3c5e67efb82bb7f58dde3cb68676e7112df6

Update CircleCI config to keep vaguely with the times.

view details

push time in 10 minutes

issue openedmozilla/TTS

Resuming transfer learning causes previous learning to be lost

Just completed 1,000 iterations of transfer learning from the LJSpeech Tacotron DDC data set via this command:

python ./TTS/bin/train_tacotron.py --restore_path /home/guy/my_project/Models/ljspeech-tac2-June-23-2020_01+32PM-ccba431/checkpoint_130000.pth.tar --config_path ./my_project/config.json

Then I tried continuing training with:

python ./TTS/bin/train_tacotron.py --continue_path /home/guy/my_project/Models/my_project/ddc-March-07-2021_11+23AM-547bfc4/

But, instead of continuing from where we left off, it started all over again from the LJSpeech data set, losing the last several hours of training (bad on me for not backing it up...).

Looking at the config.json file, I think I see the problem:

{
"github_branch":"* dev",
"restore_path":"/home/guy/my_project/Models/my_project/ddc-March-07-2021_11+23AM-547bfc4/best_model.pth.tar",
"characters":{"pad": "_", "eos": "~", "bos": "^", "characters": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!'(),-.:;? ", "punctuations": "!'(),-.:;? ", "phonemes": "iyɨʉɯuɪʏʊeøɘəɵɤoɛœɜɞʌɔæɐaɶɑɒᵻʘɓǀɗǃʄǂɠǁʛpbtdʈɖcɟkɡqɢʔɴŋɲɳnɱmʙrʀⱱɾɽɸβfvθðszʃʒʂʐçʝxɣχʁħʕhɦɬɮʋɹɻjɰlɭʎʟˈˌːˑʍwɥʜʢʡɕʑɺɧʲɚ˞ɫ"},
"github_branch":"* dev",
"restore_path":"/home/guy/my_project/Models/ljspeech-tac2-June-23-2020_01+32PM-ccba431/checkpoint_130000.pth.tar",
...
}

It looks like the restore_path from the original LJSpeech file is overwriting the restore_path for the project. Consequently, we lose the data unless we manually edit the file.

created time in 13 minutes

create barnchletsencrypt/boulder

branch : boulder-next

created branch time in 18 minutes

push eventmozilla/reticulum

John Shaughnessy

commit sha aea006d058ef788fca05862fa1f590ac06918115

Coordinate expiration of CachedFiles and underlying storage

view details

push time in 18 minutes

Pull request review commentmozilla/mp4parse-rust

Add support for AMR-NB and AMR-WB.

 box_database!(     H263SpecificBox                   0x6432_3633, // "d263"     MP4AudioSampleEntry               0x6d70_3461, // "mp4a"     MP4VideoSampleEntry               0x6d70_3476, // "mp4v"+    AMRNBSampleEntry                  0x7361_6d72, // "samr" - AMR narrow-band+    AMRWBSampleEntry                  0x7361_7762, // "sawb" - AMR wide-band+    AMRSpecificBox                    0x6461_6d72, // "damr"

Ok, I'll rebase and add the feature gate, thanks!

dreamaniajp

comment created time in 19 minutes

PR opened mozilla/fxa-pairing-channel

Update Karma and related test dependencies to their latest versions.

These appear to work without any code or config changes, which is good news...

+518 -644

0 comment

2 changed files

pr created time in 37 minutes

create barnchmozilla/fxa-pairing-channel

branch : update-karma

created branch time in 37 minutes

Pull request review commentmozilla/fxa-pairing-channel

Update some dependencies with known (but benign) security issues.

     "karma-firefox-launcher": "~1.1.0",     "karma-mocha": "^2.0.1",     "karma-sinon": "^1.0.5",-    "mocha": "^8.0.1",+    "mocha": "^8.3.1",     "sinon": "^7.2.3",-    "webpack": "~4.27.1",-    "webpack-cli": "^3.3.11"+    "webpack": "^4.46.0",

This is the latest release in the webpack v4 series. There is a webpack v5 series, but upgrading to it seems to generate a suspiciously big diff in dist/FxAccountsPairingChannel.js so I don't think we should do that right now.

rfk

comment created time in 43 minutes

push eventmozilla/fxa-pairing-channel

Ryan Kelly

commit sha 2b625f6e5ae6aed973431df446fe50f7a1f4f459

Update some dependencies with known (but benign) security issues.

view details

push time in an hour

push eventmozilla/fxa-pairing-channel

Ryan Kelly

commit sha ea467b5ecb0eb8e7dac0b362b57629d57f8e768e

Update some dependencies with known (but benign) security issues.

view details

push time in an hour

push eventmozilla/fxa-pairing-channel

Ryan Kelly

commit sha 8a1c846139aa970fda733b15f528da30d669615e

Update some dependencies with known (but benign) security issues.

view details

push time in an hour

Pull request review commentmozilla/application-services

Restructure, UniFFI, and document the fxa-client crate.

++++// # Firefox Accounts Client+//+// The fxa-client component lets applications integrate with the+// [Firefox Accounts](https://mozilla.github.io/ecosystem-platform/docs/features/firefox-accounts/fxa-overview)+// identity service. The shape of a typical integration would look+// something like:+//+// * Out-of-band, register your application with the Firefox Accounts service,+//   providing an OAuth `redirect_uri` controlled by your application and+//   obtaining an OAuth `client_id`.+//+// * On application startup, create a [`FirefoxAccount`] object to represent the+//   signed-in state of the application.+//     * On first startup, a new [`FirefoxAccount`] can be created by calling+//       [`FirefoxAccount::new`] and passing the application's `client_id`.+//     * For subsequent startups the object can be persisted using the+//       [`to_json`](FirefoxAccount::to_json) method and re-created by+//       calling [`FirefoxAccount::from_json`].+//+// * When the user wants to sign in to your application, direct them through+//   a web-based OAuth flow using [`begin_oauth_flow`](FirefoxAccount::begin_oauth_flow)+//   or [`begin_pairing_flow`](FirefoxAccount::begin_pairing_flow); when they return+//   to your registered `redirect_uri`, pass the resulting authorization state back to+//   [`complete_oauth_flow`](FirefoxAccount::complete_oauth_flow) to sign them in.+//+// * Display information about the signed-in user by using the data from+//   [`get_profile`](FirefoxAccount::get_profile).+//+// * Access account-related services on behalf of the user by obtaining OAuth+//   access tokens via [`get_access_token`](FirefoxAccount::get_access_token).+//+// * If the user opts to sign out of the application, calling [`disconnect`](FirefoxAccount::disconnect)+//   and then discarding any persisted account data.++namespace fxa_client {+    +};++++// Generic error type thrown by many [`FirefoxAccount`] operations.+//+// Precise details of the error are hidden from consumers, mostly due to limitations of+// how we expose this API to other languages. The type of the error indicates how the+// calling code should respond.+//+//+//  `Authentication`:

Any reason to not put the comments for each error next to the definition?

rfk

comment created time in an hour

Pull request review commentmozilla/application-services

Restructure, UniFFI, and document the fxa-client crate.

 package mozilla.appservices.fxaclient  import android.util.Log-import com.sun.jna.Native-import com.sun.jna.Pointer-import mozilla.appservices.fxaclient.rust.FxaHandle-import mozilla.appservices.fxaclient.rust.LibFxAFFI-import mozilla.appservices.fxaclient.rust.RustError-import mozilla.appservices.support.native.toNioDirectBuffer-import java.util.concurrent.atomic.AtomicLong import org.json.JSONObject  /**- * FirefoxAccount represents the authentication state of a client.+ * PersistedFirefoxAccount represents the authentication state of a client.+ *+ * This is a thin wrapper around the `FirefoxAccount` object exposed from Rust.+ * Its main job is to transparently manage persistence of the account state by+ * calling the provided callback at appropriate times.+ *+ * In future it would be nice to push this logic down into the Rust code,+ * once UniFFI's support for callback interfaces is a little more battle-tested.+ *  */-class FirefoxAccount(handle: FxaHandle, persistCallback: PersistCallback?) : AutoCloseable {-    private var handle: AtomicLong = AtomicLong(handle)+class PersistedFirefoxAccount(inner: FirefoxAccount, persistCallback: PersistCallback?) : AutoCloseable {+    private var inner: FirefoxAccount = inner     private var persistCallback: PersistCallback? = persistCallback      /**-     * Create a FirefoxAccount using the given config.+     * Create a PersistedFirefoxAccount using the given config.      *      * This does not make network requests, and can be used on the main thread.      */-    constructor(config: Config, persistCallback: PersistCallback? = null) :-    this(rustCall { e ->-        LibFxAFFI.INSTANCE.fxa_new(-            config.contentUrl,-            config.clientId,-            config.redirectUri,-            config.tokenServerUrlOverride,-            e-        )-    }, persistCallback) {+    constructor(config: Config, persistCallback: PersistCallback? = null) : this(FirefoxAccount(+        config.contentUrl,

Maybe add the essence of this as comment?

rfk

comment created time in 3 hours

Pull request review commentmozilla/application-services

Restructure, UniFFI, and document the fxa-client crate.

 class FxAccountManagerTests: XCTestCase {     func testAccountRestorationEnsureCapabilitiesNonAuthError() {         class MockAccount: MockFxAccount {             override func ensureCapabilities(supportedCapabilities _: [DeviceCapability]) throws {-                throw FirefoxAccountError.network(message: "The WiFi cable is detached.")+                throw FxaError.Network(message: "The WiFi cable is detached.")

lol @ this error message - I've never seen it before

rfk

comment created time in an hour

Pull request review commentmozilla/application-services

Restructure, UniFFI, and document the fxa-client crate.

 impl From<StateV1> for Result<StateV2> {     } } -// `StateV1` was a previous state schema.-//-// The below is sufficient to read existing state data serialized in this form, but should not-// be used to create new data using that schema, so it is deliberately private and deliberately-// does not derive(Serialize).-//-// If you find yourself modifying this code, you're almost certainly creating a potential data-migration-// problem and should reconsider.-+/// `StateV1` was a previous state schema.

Does this need to exist still? It looks like it's very old and we will never hit this case in the wild. (OTOH, no need to block - maybe another ticket which could be good for onboarding?)

rfk

comment created time in an hour

Pull request review commentmozilla/application-services

Restructure, UniFFI, and document the fxa-client crate.

+# Firefox Accounts Client++The fxa-client component lets applications integrate with the+[Firefox Accounts](https://mozilla.github.io/ecosystem-platform/docs/features/firefox-accounts/fxa-overview)+identity service.++* [Features](#features)+* [Using the Firefox Accounts client](#using-the-firefox-accounts-client)+* [Working on the Firefox Accounts client](#working-on-the-firefox-accounts-client)++## Features++The fxa-client component offers support for:++1. Letting users sign in to your app,+   using either an email-and-password-based OAuth flow+   or a QR-code-based pairing flow.+1. Accessing basic profile information about the signed-in user,+   such as email address and display name.+1. Obtaining OAuth access tokens and client-side encryption keys.+   in order to access account-enabled services such as Firefox Sync.+1. Listing and managing other applications connected to the+   user's account.+     1. Sending tabs to other applications that are capable+      of receiving them.

indentation looks odd here (not clear if it matters when rendered, so feel free to ignore if not)

rfk

comment created time in 3 hours

Pull request review commentmozilla/application-services

Restructure, UniFFI, and document the fxa-client crate.

+/* This Source Code Form is subject to the terms of the Mozilla Public+ * License, v. 2.0. If a copy of the MPL was not distributed with this+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */++import Foundation++/// This class inherits from the Rust `FirefoxAccount` and adds:+/// - Automatic state persistence through `PersistCallback`.+/// - Auth error signaling through observer notifications.+/// - Some convenience higher-level datatypes, such as URLs rather than plain Strings.+///+/// Eventually we'd like to move all of this into the underlying Rust code, once UniFFI+/// grows support for these extra features:+///   - Callback interfaces in Swift: https://github.com/mozilla/uniffi-rs/issues/353+///   - Higher-level data types: https://github.com/mozilla/uniffi-rs/issues/348+///+/// It's not yet clear how we might integrate with observer notifications in+/// a cross-platform way, though.+///+class PersistedFirefoxAccount {+    private var persistCallback: PersistCallback?+    private var inner: FirefoxAccount++    init(inner: FirefoxAccount) {+        self.inner = inner+    }++    public convenience init(config: FxAConfig) {+        self.init(inner: FirefoxAccount(contentUrl: config.contentUrl,+                                        clientId: config.clientId,+                                        redirectUri: config.redirectUri,+                                        tokenServerUrlOverride: config.tokenServerUrlOverride))+    }++    /// Registers a persistance callback. The callback will get called every time+    /// the `FxAccounts` state needs to be saved. The callback must+    /// persist the passed string in a secure location (like the keychain).+    public func registerPersistCallback(_ cb: PersistCallback) {+        persistCallback = cb+    }++    /// Unregisters a persistance callback.+    public func unregisterPersistCallback() {+        persistCallback = nil+    }++    public static func fromJSON(data: String) throws -> PersistedFirefoxAccount {+        return PersistedFirefoxAccount(inner: try FirefoxAccount.fromJson(data: data))+    }++    public func toJSON() throws -> String {+        try inner.toJson()+    }++    public func beginOAuthFlow(+        scopes: [String],+        entrypoint: String,+        metrics: MetricsParams = MetricsParams(parameters: [:])+    ) throws -> URL {+        return try notifyAuthErrors {+            URL(string: try self.inner.beginOauthFlow(+                scopes: scopes,+                entrypoint: entrypoint,+                metrics: metrics+            ))!+        }+    }++    public func getPairingAuthorityURL() throws -> URL {+        return URL(string: try inner.getPairingAuthorityUrl())!+    }++    public func beginPairingFlow(+        pairingUrl: String,+        scopes: [String],+        entrypoint: String,+        metrics: MetricsParams = MetricsParams(parameters: [:])+    ) throws -> URL {+        return try notifyAuthErrors {+            URL(string: try self.inner.beginPairingFlow(pairingUrl: pairingUrl,+                                                        scopes: scopes,+                                                        entrypoint: entrypoint,+                                                        metrics: metrics))!+        }+    }++    public func completeOAuthFlow(code: String, state: String) throws {+        defer { tryPersistState() }

I noticed above that the kotlin bindings previously did tryPersistState() before the call and now do it after - which I thought a little strange, but assumed doing it after was easier to rationalize about, so shrugged. However, here we are doing it before, which seems an unfortunate inconsistency.

rfk

comment created time in 2 hours

Pull request review commentmozilla/application-services

Restructure, UniFFI, and document the fxa-client crate.

+# Firefox Accounts Client++The fxa-client component lets applications integrate with the+[Firefox Accounts](https://mozilla.github.io/ecosystem-platform/docs/features/firefox-accounts/fxa-overview)+identity service.++* [Features](#features)+* [Using the Firefox Accounts client](#using-the-firefox-accounts-client)+* [Working on the Firefox Accounts client](#working-on-the-firefox-accounts-client)++## Features++The fxa-client component offers support for:++1. Letting users sign in to your app,+   using either an email-and-password-based OAuth flow+   or a QR-code-based pairing flow.+1. Accessing basic profile information about the signed-in user,+   such as email address and display name.+1. Obtaining OAuth access tokens and client-side encryption keys.

nit: stray trailing period.

rfk

comment created time in 3 hours

push eventmozilla/fxa-pairing-channel

Ryan Kelly

commit sha 102c5afd05af715f7135b0e5ca6872c9b28493ef

Update some dependencies with known (but benign) security issues.

view details

push time in an hour