Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • S Snowflake
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 71
    • Issues 71
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 4
    • Merge requests 4
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • The Tor Project
  • Anti-censorship
  • Pluggable Transports
  • Snowflake
  • Issues
  • #40063
Closed
Open
Created Aug 19, 2021 by Cecylia Bocovich@cohoshOwner3 of 5 tasks completed3/5 tasks

Restructure snowflake library for v2 release

The next time we bump the version of Snowflake, we have to make a major version bump because of the changes to NewSnowflakeClient needed for the new AMP cache rendezvous method. This is a good opportunity to evaluate our API, which functions/structures are exported, and which API features will be most useful for others who want to use our library. We should also take a look at best practices for library structure and naming mechanics and how much room we have to change there.

Some things to consider:

  • OONI has requested we introduce a way to direct Snowflake logs to a chosen output
  • As discussed in !50 (closed), if we export the RendezvousMethod interface, callers of the library can implement their own rendezvous methods
  • Implementing callbacks for specific events would make it easier for calling programs to debug or react different to different types of connection failures or censorship attempts (see #40062 (closed) for some inspiration for this)
  • Can we get some official Go documentation/reference for this library? Let's at least evaluate if we need to improve what we have
  • We're probably exporting way more things than we need to be. Cutting down on what we export will make documentation and usage of the library simpler, and also might help reduce binary size (though I haven't confirmed this).
Edited Nov 03, 2021 by Cecylia Bocovich
Assignee
Assign to
Time tracking