diff options
-rw-r--r-- | content/contributors-summit.article | 169 | ||||
-rw-r--r-- | content/contributors-summit/IMG_20170712_145844.jpg | bin | 0 -> 594317 bytes | |||
-rw-r--r-- | content/contributors-summit/IMG_20170712_145854.jpg | bin | 0 -> 657852 bytes | |||
-rw-r--r-- | content/contributors-summit/IMG_20170712_145905.jpg | bin | 0 -> 484055 bytes | |||
-rw-r--r-- | content/contributors-summit/IMG_20170712_145911.jpg | bin | 0 -> 511498 bytes | |||
-rw-r--r-- | content/contributors-summit/IMG_20170712_145950.jpg | bin | 0 -> 412069 bytes |
6 files changed, 169 insertions, 0 deletions
diff --git a/content/contributors-summit.article b/content/contributors-summit.article new file mode 100644 index 0000000..815c090 --- /dev/null +++ b/content/contributors-summit.article @@ -0,0 +1,169 @@ +Contributors Summit +3 Aug 2017 +Tags: community + +Sam Whited + +* Introduction + +The day before GopherCon, a group of Go team members and contributors gathered +in Denver to discuss and plan for the future of the Go project. +This was the first ever event of its kind, a major milestone for the Go project. +The event comprised a morning session revolving around focused discussions on a +theme, and an afternoon session made up of round table discussions in small +break-out groups. + +** Compiler and runtime + +The compiler and runtime session started out with a discussion about refactoring +`gc` and related tools into importable packages. +This would reduce overhead in the core tools and in IDEs which could embed the +compiler themselves to do quick syntax checking. +Code could also be compiled entirely in memory, which is useful in environments +that don't provide a filesystem, or to run tests continually while you develop +to get a live report of breakages. +More discussion about whether or not to pursue this line of work will most +likely be brought up on the mailing lists in the future. + +There was also a great deal of discussion around bridging the gap between +optimized assembly code and Go. +Most crypto code in Go is written in assembly for performance reasons; this +makes it hard to debug, maintain, and read. +Furthermore, once you've ventured into writing assembly, you often can't call +back into Go, limiting code reuse. +A rewrite in Go would make maintenance easier. +Adding processor intrinsics and better support for 128-bit math would improve +Go's crypto performance. +It was proposed that the new `math/bits` package coming in 1.9 could be expanded +for this purpose. + +Not being all that familiar with the development of the compiler and runtime, +this for me was one of the more interesting sessions of the day. +I learned a lot about the current state of the world, the problems, and where +people want to go from here. + + +** Dependency management + +After a quick update from the [[https://github.com/golang/dep][dep]] team on the +status of the project, the dependency management session gravitated towards how +the Go world will work once dep (or something dep-like) becomes the primary +means of package management. +Work to make Go easier to get started with and make dep easier to use has +already started. +In Go 1.8, a default value for `GOPATH` was introduced, meaning users will only +have to add Go's bin directory to their `$PATH` before they can get started +with dep. + +Another future usability improvement that dep might enable, is allowing Go to +work from any directory (not just a workspace in the GOPATH), so that people can +use the directory structures and workflows they're used to using with other +languages. +It may also be possible to make `go install` easier in the future by guiding +users through the process of adding the bin directory to their path, or even +automating the process. +There are many good options for making the Go tooling easier to use, and +discussion will likely continue on the mailing lists. + +** The standard library + +The discussions we had around the future of the Go language are mostly covered +in Russ Cox's blog post: [[https://blog.golang.org//toward-go2][Toward Go 2]], so +let's move on to the standard library session. + +As a contributor to the standard library and subrepos, this session was +particularly interesting to me. +What goes in the standard library and subrepos, and how much it can change, is a +topic that isn't well defined. +It can be hard on the Go team to maintain a huge number of packages when they +may or may not have anyone with specific expertise in the subject matter. +To make critical fixes to packages in the standard library, one must wait 6 +months for a new version of Go to ship (or a point release has to be shipped in +the case of security issues, which drains team resources). +Better dependency management may facilitate the migration of some packages out +of the standard library and into their own projects with their own release +schedules. + +There was also some discussion about things that are difficult to achieve with +the interfaces in the standard library. +For instance, it would be nice if `io.Reader` accepted a context so that +blocking read operations could be canceled. + +More [[https://golang.org/wiki/experiencereports][experience reports]] are +necessary before we can determine what will change in the standard library. + +** Tooling and editors + +A language server for editors to use was a hot topic in the tooling session, +with a number of people advocating for IDE and tool developers to adopt a common +"Go Language Server" to index and display information about code and packages. +Microsoft's [[https://www.github.com/Microsoft/language-server-protocol][Language Server Protocol]] +was suggested as a good starting point because of its wide support in editors +and IDEs. + +Jaana Burcu Dogan also discussed her work on distributed tracing and how +information about runtime events could be made easier to acquire and attached to +traces. +Having a standard "counter" API to report statistics was proposed, but specific +experience reports from the community will be required before such an API can be +designed. + +** The contributor experience + +The final session of the day was on the contributor experience. +The first discussion was all about how the current Gerrit workflow could be made +easier for new contributors which has already resulted in improvements to the +documentation for several repos, and influenced the new contributors workshop a +few days later! + +Making it easier to find tasks to work on, empowering users to perform gardening +tasks on the issue tracker, and making it easier to find reviewers were also +considered. +Hopefully we'll see improvements to these and many more areas of the +contribution process in the coming weeks and months! + +** Breakout sessions + +In the afternoon, participants broke out into smaller groups to have more +in-depth discussions about some of the topics from the morning session. +These discussions had more specific goals. +For example, one group worked on identifying the useful parts of an experience +report and a list of existing literature documenting Go user experiences, +resulting in the experience report +[[https://golang.org/wiki/experiencereports][wiki page]]. + +Another group considered the future of errors in Go. +Many Go users are initially confused by, or don't understand the fact that +`error` is an interface, and it can be difficult to attach more information to +errors without masking sentinel errors such as `io.EOF`. +The breakout session discussed specific ways it might be possible to fix some of +these issues in upcoming Go releases, but also ways error handling could be +improved in Go 2. + +* Community + +Outside of the technical discussions, the summit also provided an opportunity +for a group of people from all over the world who often talk and work together +to meet in person, in many cases for the first time. +There is no substitute for a little face-to-face time to build a sense of mutual +respect and comradeship, which is critical when a diverse group with different +backgrounds and ideas needs to come together to work in a single community. +During the breaks, Go team members dispersed themselves among the contributors +for discussions both about Go and a little general socialization, which really +helped to put faces to the names that review our code every day. + +As Russ discussed in [[https://blog.golang.org//toward-go2][Toward Go 2]], +communicating effectively requires knowing your audience. +Having a broad sample of Go contributors in a room together helped us all to +understand the Go audience better and start many productive discussions about +the future of Go. +Going forward, we hope to do more frequent events like this to facilitate +discourse and a sense of community. + +.image contributors-summit/IMG_20170712_145844.jpg +.image contributors-summit/IMG_20170712_145854.jpg +.image contributors-summit/IMG_20170712_145905.jpg +.image contributors-summit/IMG_20170712_145911.jpg +.image contributors-summit/IMG_20170712_145950.jpg + +Photos by Steve Francia diff --git a/content/contributors-summit/IMG_20170712_145844.jpg b/content/contributors-summit/IMG_20170712_145844.jpg Binary files differnew file mode 100644 index 0000000..77c4bff --- /dev/null +++ b/content/contributors-summit/IMG_20170712_145844.jpg diff --git a/content/contributors-summit/IMG_20170712_145854.jpg b/content/contributors-summit/IMG_20170712_145854.jpg Binary files differnew file mode 100644 index 0000000..97e7072 --- /dev/null +++ b/content/contributors-summit/IMG_20170712_145854.jpg diff --git a/content/contributors-summit/IMG_20170712_145905.jpg b/content/contributors-summit/IMG_20170712_145905.jpg Binary files differnew file mode 100644 index 0000000..bd1a950 --- /dev/null +++ b/content/contributors-summit/IMG_20170712_145905.jpg diff --git a/content/contributors-summit/IMG_20170712_145911.jpg b/content/contributors-summit/IMG_20170712_145911.jpg Binary files differnew file mode 100644 index 0000000..b03f0b1 --- /dev/null +++ b/content/contributors-summit/IMG_20170712_145911.jpg diff --git a/content/contributors-summit/IMG_20170712_145950.jpg b/content/contributors-summit/IMG_20170712_145950.jpg Binary files differnew file mode 100644 index 0000000..00f0861 --- /dev/null +++ b/content/contributors-summit/IMG_20170712_145950.jpg |