Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: Establish SIG Go #407

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions rfcs/20220105-sig-go.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# RFC: Establish SIG Go

| Status | **Proposed** |
:-------------- |:------------------------------------------------------- |
| **RFC #** | [407](https://github.com/tensorflow/community/pull/407) |
| **Author(s)** | William Muir ([email protected]) |
| **Sponsor** | Mihai Maruseac ([email protected]) |
| **Updated** | 2022-01-05 |

## Objective

Establish SIG Go with the objectives of fostering and facilitating community
collaboration around the TensorFlow Go bindings. Community collaboration is
expected to result in improvements to the usability and maintenance of the
bindings.

## Context

Go is a statically-typed, compiled programming language with wide use,
especially in the development of API/RPC services, CLIs and web services and in
data processing [[1](https://blog.golang.org/survey2020-result)]. Go bindings
to the TensorFlow C API were first introduced in TensorFlow v0.11.0 and have
since resided within the main TensorFlow repository, at
[github.com/tensorflow/tensorflow/go](https://github.com/tensorflow/tensorflow/tree/r2.8/tensorflow/go).
These bindings are
[loosely integrated with the build system](https://github.com/tensorflow/tensorflow/pull/50934)
and are presently listed as being both
[unsupported by the community](https://www.tensorflow.org/versions) and
[unsupported by the TensorFlow team](https://github.com/tensorflow/build/tree/master/golang_install_guide).

Significant problems presently exist in the usability of TensorFlow's Go
bindings. Changes to how Go manages dependencies, specifically in the
implementation of [Go Modules](https://blog.golang.org/using-go-modules), have
resulted in a set of installation challenges (see, for instance, GitHub issues
[41808](https://github.com/tensorflow/tensorflow/issues/41808) and
[43847](https://github.com/tensorflow/tensorflow/issues/43847)). To alleviate
these issues, there has been discussion regarding relocation of the Go bindings
to a dedicated repository
([1](https://github.com/tensorflow/tensorflow/pull/44655#issuecomment-725040183),
[2](https://github.com/tensorflow/tensorflow/pull/50934)). A component of this
SIG proposal is a request for TensorFlow team support and collaboration in
migrating the TensorFlow Go bindings to a dedicated GitHub repository.

This request proposes that an opportunity exists to establish a effective SIG
around the Go bindings. In the past, the TensorFlow developer community has
made valuable contributions to the Go bindings, but community contributions
have been sporadic. Implicit in this request is an acknowledgment that the
current approach is unlikely to fully promote community collaboration due, for
instance, to collocation of the bindings with TensorFlow core, methods for
issue assignment/handling, the current state of the bindings in terms of
usability, and the recent shift of the bindings into unsupported status. The
expected outcome of establishing SIG Go is to increase community collaboration
around the Go bindings, leading to the resolution of these issues and a pathway
for long-term maintenance and development activities.

## Goals & Objectives

The SIG proposes a charter focused on conservative aims: engaging the
community, solving current and future usability issues, performing on-going
maintenance, and making incremental improvements to the existing codebase
(e.g., functionality, testing, documentation).

More specifically, SIG Go's initial focus will be on the following set of
problems/objectives:

* Fostering community involvement for the project and membership in SIG Go.
* Migrating TensorFlow/Go source code from the main TensorFlow repository to
a dedicated repository.
* Restoring usability of the bindings, specifically achieving interoperability
with Go tooling for module installation.
* Improving unit testing and the coverage of tests.
* Improving package documentation, including example code.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is also https://github.com/tensorflow/examples not sure if we should link from there or what is the best way to make things discoverable.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking along the lines of testable examples here -- examples demonstrating use of the API. These are conveniently published alongside the package documentation.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good points, these as tests, should definitely live with code. What about bigger examples more like tutorials or end-to-end examples?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These should become a distinct/additional item on the list here (rfc) and corresponding Launch Plan within the SIG Request, imho. Good add. I'm not sure what the best location is.

* Assessing design and functionality of the package, identifying opportunities
and developing a roadmap.

## Membership

Anyone involved in or using or contributing to the TensorFlow Go bindings will
be welcome to join the group. To participate, prospective members will be asked
to join SIG Go's mailing list, once established (e.g., at
[[email protected]](mailto:[email protected])).
51 changes: 51 additions & 0 deletions sigs/go/CHARTER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# SIG Go

## Objective

The purpose of this special interest group is to foster and facilitate
community collaboration around the TensorFlow Go bindings. Community
collaboration is expected to result in improvements to the usability and
maintenance of the bindings.

## Membership

Anyone involved in or using or contributing to the TensorFlow Go bindings is
welcome to join the group. To participate, please join the mailing list
([[email protected]](mailto:[email protected])).

Archives of the mailing list will be publicly available.

## Resources

* Mailing list [SIG Go](https://groups.google.com/a/tensorflow.org/forum/#!forum/sig-go)
* GitHub repository [tensorflow/go](https://github.com/tensorflow/go)
* Vanity import path [tensorflow.org/go](https://tensorflow.org/go)

## Quarterly Meetings

SIG Go will hold quarterly meetings via public Google Video Conference for
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would it be enough especially during the stage of SIG formation?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also any plans for gitter? other SIGs use gitter, but it kind of depends on community preferences

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would it be enough especially during the stage of SIG formation?

Good point. Maybe meetings should be held monthly while the SIG is forming? Lacking some other definition, I'm thinking that this should encompass completion of all SIG launch plan items in the SIG Request along with resolution to initial problems 2 and 3 (migrating bindings to new repository, restoring interoperability with go get tooling).

My hunch when drafting the charter was that, in the long-term, more frequent meetings (e.g., monthly) may be too much.

also any plans for gitter? other SIGs use gitter, but it kind of depends on community preferences

Sure, I can add. It seems that we could just deactivate the channel if it isn't used. Possibly this is referenced generally in the charter ("other third-party communication tools") as to avoid driving a future revision to the charter if preferences change.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's more of ideas than suggestions :) I guess you can also discuss these topics during the first calls with the SIG

discussion related to the TensorFlow Go bindings. Additional meetings may be
scheduled as needed or on a more frequent basis to facilitate SIG launch
activites or to provide timely discussion on one or more topics of interest to
the community. Meeting announcements will be made to the
[[email protected]](mailto:[email protected]) mailing list and all subscribers
will be invited. The primary topics for quarterly meetings will include:

1. Discussion and review of significant decisions and changes.
2. Roadmap discussions.
3. Issues, bugs, and compatibility concerns.
4. Community contributions and opportunities for community involvement.
5. An update on the SIG's status and health, including a review and assessment
of progress toward achieving group goals.

## Contacts

* Project leads:
-
- William Muir [@wamuir](https://github.com/wamuir) - wamuir at gmail
* For administrative questions, contact tf-community-team at google

## Code of Conduct

As with all forums and spaces related to TensorFlow, SIG Go is subject to the
[TensorFlow Code of Conduct](https://github.com/tensorflow/tensorflow/blob/master/CODE_OF_CONDUCT.md).
102 changes: 102 additions & 0 deletions sigs/go/SIG-request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# Request for SIG

## What is this group for?

The purpose of this special interest group is to foster and facilitate
community collaboration around the TensorFlow Go bindings. Community
collaboration is expected to result in improvements to the usability and
maintenance of the bindings.

Go is a statically-typed, compiled programming language with wide use,
especially in the development of API/RPC services, CLIs and web services and in
data processing [[1](https://blog.golang.org/survey2020-result)]. Go bindings
to the TensorFlow C API were first introduced in TensorFlow v0.11.0 and have
since resided within the main TensorFlow repository, at
[github.com/tensorflow/tensorflow/go](https://github.com/tensorflow/tensorflow/tree/r2.8/tensorflow/go).
These bindings are
[loosely integrated with the build system](https://github.com/tensorflow/tensorflow/pull/50934)
and are presently listed as being both
[unsupported by the community](https://www.tensorflow.org/versions) and
[unsupported by the TensorFlow team](https://github.com/tensorflow/build/tree/master/golang_install_guide).

Significant problems presently exist in the usability of the Go bindings.
Changes to how Go manages dependencies, specifically in the implementation of
[Go Modules](https://blog.golang.org/using-go-modules), have resulted in a set
of installation challenges (see, for instance, GitHub issues
[41808](https://github.com/tensorflow/tensorflow/issues/41808) and
[43847](https://github.com/tensorflow/tensorflow/issues/43847)). To alleviate
these issues, there has been discussion regarding relocation of the Go bindings to
a dedicated repository
([1](https://github.com/tensorflow/tensorflow/pull/44655#issuecomment-725040183),
[2](https://github.com/tensorflow/tensorflow/pull/50934)).
A component of this SIG proposal is a request for TensorFlow team support and
collaboration in migrating the TensorFlow Go bindings to a dedicated GitHub
repository.

This request proposes that an opportunity exists to establish a effective SIG
around the Go bindings. In the past, the TensorFlow developer community has
made valuable contributions to the Go bindings, but community contributions
have been sporadic. Implicit in this request is an acknowledgment that the
current approach is unlikely to fully promote community collaboration due, for
instance, to collocation of the bindings with TensorFlow core, methods for
issue assignment/handling, the current state of the bindings in terms of
usability, and the recent shift of the bindings into unsupported status. The
expected outcome of establishing SIG Go is to increase community collaboration
around the Go bindings, leading to the resolution of these issues and a pathway
for long-term maintenance and development activities.

## Who will be part of it?

* SIG Go leads:
-
- William Muir [@wamuir](https://github.com/wamuir) - wamuir at gmail
* Anyone interested in discussing or contributing to the TensorFlow Go bindings is welcome.

## What initial problems will the group tackle?

The SIG proposes a charter focused on conservative aims: engaging the
community, solving current and future usability issues, performing on-going
maintenance, and making incremental improvements to the existing codebase
(e.g., functionality, tests, examples, documentation).

More specifically, the SIG's initial focus will be on the following set of
problems/objectives:

* Fostering community involvement for the project and membership in SIG Go.
* Migrating TensorFlow/Go source code from the main TensorFlow repository to
a dedicated repository.
* Restoring usability of the bindings, specifically achieving interoperability
with Go tooling for module installation.
* Improving unit testing and the coverage of tests.
* Improving package documentation, including example code.
* Authoring and publishing tutorials and other instructional content.
* Assessing design and functionality of the package, identifying opportunities
and developing a roadmap.

## What modes of communication do you intend to use?

* A dedicated mailing list backed by Google Groups.
* As needed, video conferencing on Google Hangouts.
* Other communication platforms, consistent with community preferences.

## Launch plan

1. Identification of any additional group leads and/or initial members.
2. Publication of the proposal and charter for community review and comments.
3. Notification of SIG establishment via TensorFlow general mailing lists
(discuss@, developers ML).
4. Addition of SIG Go to the community pages on
[tensorflow.org](https://tensorflow.org).
5. Creation of a SIG mailing list and development of list discussions about
initial work items.
6. Establishment of [tensorflow.org/go](https://tensorflow.org/go), via
[TensorFlow Documentation](https://github.com/tensorflow/docs) pages, for
use as a [module import path](https://golang.org/ref/mod#vcs-find).
7. Collaboration with the TensorFlow team on establishing a dedicated
GitHub repository for the Go bindings and on migrating the bindings
from the main TensorFlow repository.
8. Creation of a blog post for the TensorFlow Medium.com blog community.

# Charter

Here's the link to the [group charter](CHARTER.md).