diff --git a/content/contributors-summit-2019.article b/content/contributors-summit-2019.article
new file mode 100644
index 0000000..df0b47a
--- /dev/null
+++ b/content/contributors-summit-2019.article
@@ -0,0 +1,394 @@
+Contributors Summit 2019
+15 Aug 2019
+Tags: community
+
+Carmen Andoh and contributors
+
+* Introduction
+
+For the third year in a row, the Go team and contributors convened
+the day before GopherCon to discuss and plan for the future of the Go project.
+The event included self-organizing into breakout groups,
+a town-hall style discussion about the proposal process in the morning,
+and afternoon break-out roundtable discussions
+based on topics our contributors chose.
+We asked five contributors to write about their experience
+in various discussions at this year’s summit.
+
+.image contributors-summit-2019/group.jpg _ 800
+
+_(Photo_by_Steve_Francia.)_
+
+* Compiler and Runtime (report by Lynn Boger)
+
+The Go contributors summit was a great opportunity
+to meet and discuss topics and ideas with others who also contribute to Go.
+
+The day started out with a time to meet everyone in the room.
+There was a good mix of the core Go team
+and others who actively contribute to Go.
+From there we decided what topics were of interest
+and how to split the big group into smaller groups.
+My area of interest is the compiler, so I joined that group
+and stayed with them for most of the time.
+
+At our first meeting, a long list of topics were brought up
+and as a result the compiler group decided to keep meeting throughout the day.
+I had a few topics of interest that I shared and many that others suggested
+were also of interest to me.
+Not all items on the list were discussed in detail;
+here is my list of those topics which had the most interest and discussion,
+followed by some brief comments that were made on other topics.
+
+*Binary*size*.
+There was a concern expressed about binary size,
+especially that it continues to grow with each release.
+Some possible reasons were identified such as increased inlining and other optimizations.
+Most likely there is a set of users who want small binaries,
+and another group who wants the best performance possible and maybe some don’t care.
+This led to the topic of TinyGo, and it was noted that TinyGo was not a full implementation of Go
+and that it is important to keep TinyGo from diverging from Go and splitting the user base.
+More investigation is required to understand the need among users and the exact reasons
+contributing to the current size.
+If there are opportunities to reduce the size without affecting performance,
+those changes could be made, but if performance were affected
+some users would prefer better performance.
+
+*Vector*assembly*.
+How to leverage vector assembly in Go was discussed for a while
+and has been a topic of interest in the past.
+I have split this into three separate possibilities, since they all relate to the use of vector instructions,
+but the way they are used are different, starting with the topic of vector assembly.
+This is another case of a compiler trade off.
+
+For most targets, there are critical functions in standard packages
+such as crypto, hash, math and others, where the use of assembly is necessary
+to get the best possible performance; however having large functions
+written in assembly makes them difficult to support and maintain
+and could require different implementations for each target platform.
+One solution is to make use of macro assembly or other
+high-level generation techniques to make the vector assembly easier to read and understand.
+
+Another side to this question is whether the Go compiler can
+directly generate SIMD vector instructions when compiling a Go source file,
+by enhancing the Go compiler to transform code sequences to “simdize”
+the code to make use of vector instructions.
+Implementing SIMD in the Go compiler would add complexity and compile time,
+and might not always result in code that performs better.
+The way the code is transformed could in some cases depend
+on the target platform so that would not be ideal.
+
+Another way to leverage vector instructions in Go is to provide a way
+to make it easier to make use of vector instructions from within the Go source code.
+Topics discussed were intrinsics, or implementations that exist in other compilers like Rust.
+In gcc some platforms provide inline asm, and Go possibly could provide this capability,
+but I know from experience that intermixing inline asm with Go code adds complexity
+to the compiler in terms of tracking register use and debugging.
+It allows the user to do things the compiler might not expect or want,
+and it does add an extra level of complexity.
+It could be inserted in places that are not ideal.
+
+In summary, it is important to provide a way to leverage
+the available vector instructions, and make it easier and safer to write.
+Where possible, functions use as much Go code as possible,
+and potentially find a way to use high level assembly.
+There was some discussion of designing an experimental vector package
+to try and implement some of these ideas.
+
+*New*calling*convention*.
+Several people were interested in the topic of the
+[[https://golang.org/issue/18597][ABI changes to provide a register based calling convention]].
+The current status was reported with details.
+There was discussion on what remained to be done before it could be used.
+The ABI specification needs to be written first and it was not clear when that would be done.
+I know this will benefit some target platforms more than others
+and a register calling convention is used in most compilers for other platforms like Power.
+
+*General*optimizations*.
+Certain optimizations that are more beneficial for some platforms other than x86 were discussed.
+In particular, loop optimizations such as hoisting of invariants and strength reduction could be done
+and provide more benefit on some platforms.
+Potential solutions were discussed, and implementation would probably be
+up to the targets that find those improvements important.
+
+*Feedback-directed*optimizations*.
+This was discussed and debated as a possible future enhancement.
+In my experience, it is hard to find meaningful programs to use for
+collecting performance data that can later be used to optimize code.
+It increases compile time and takes a lot of space to save the data
+which might only be meaningful for a small set of programs.
+
+*Pending*submissions*.
+A few members in the group mentioned changes they had been working on
+and plan to submit soon, including improvements to makeslice, and a rewrite of rulegen.
+
+*Compile*time*concerns*.
+Compile time was discussed briefly. It was noted that phase timing was added to the GOSSAFUNC output.
+
+*Compiler*contributor*communication*.
+Someone asked if there was a need for a Go compiler mailing list.
+It was suggested that we use golang-dev for that purpose,
+adding compiler to the subject line to identify it.
+If there is too much traffic on golang-dev, then a compiler-specific mailing list
+can be considered at some later point in time.
+
+*Community*.
+I found the day very beneficial in terms of connecting with people
+who have been active in the community and have similar areas of interest.
+I was able to meet many people who I’ve only known by the user name
+appearing in issues or mailing lists or CLs.
+I was able to discuss some topics and existing issues
+and get direct interactive feedback instead of waiting for online responses.
+I was encouraged to write issues on problems I have seen.
+These connections happened not just during this day but while
+running into others throughout the conference,
+having been introduced on this first day, which led to many interesting discussions.
+Hopefully these connections will lead to more effective communication
+and improved handling of issues and code changes in the future.
+
+* Tools (report by Paul Jolly)
+
+The tools breakout session during the contributor summit took an extended form,
+with two further sessions on the main conference days organized by the
+[[https://github.com/golang/go/wiki/golang-tools][golang-tools]] group.
+This summary is broken down into two parts: the tools session at the contributor workshop,
+and a combined report from the golang-tools sessions on the main conference days.
+
+*Contributor*summit*.
+The tools session started with introductions from ~25 folks gathered,
+followed by a brainstorming of topics, including:
+gopls, ARM 32-bit, eval, signal, analysis, go/packages api, refactoring, pprof,
+module experience, mono repo analysis, go mobile, dependencies, editor integrations,
+compiler opt decisions, debugging, visualization, documentation.
+A lot of people with lots of interest in lots of tools!
+
+The session focused on two areas (all that time allowed): gopls and visualizations.
+[[https://golang.org/wiki/gopls][Gopls]] (pronounced: “go please”) is an implementation of the
+[[https://langserver.org][Language Server Protocol (LSP)]] server for Go.
+Rebecca Stamber, the gopls lead author, and the rest of the Go tools team were interested
+in hearing people’s experiences with gopls: stability, missing features, integrations in editors working, etc?
+The general feeling was that gopls was in really good shape and working extremely well for the majority of use cases.
+Integration test coverage needs to be improved, but this is a hard problem to get “right” across all editors.
+We discussed a better means of users reporting gopls errors they encounter via their editor,
+telemetry/diagnostics, gopls performance metrics, all subjects that got more detailed coverage
+in golang-tools sessions that followed on the main conference days (see below).
+A key area of discussion was how to extend gopls, e.g., in the form of
+additional go/analysis vet-like checks, lint checks, refactoring, etc.
+Currently there is no good solution, but it’s actively under investigation.
+Conversation shifted to the very broad topic of visualizations, with a
+demo-based introduction from Anthony Starks (who, incidentally, gave an excellent talk about
+[[https://www.youtube.com/watch?v=NyDNJnioWhI][Go for information displays]] at GopherCon 2018).
+
+*Conference*days*.
+The golang-tools sessions on the main conference days were a continuation of the
+[[https://golang.org/wiki/golang-tools][monthly calls]] that have been happening since the group’s inception at GopherCon 2018.
+Full notes are available for the
+[[https://docs.google.com/document/d/1-RVyttQ0ncjCpR_sRwizf-Ubedkr0Emwmk2LhnsUOmE/edit][day 1]] and
+[[https://docs.google.com/document/d/1ZI_WqpLCB8DO6teJ3aBuXTeYD2iZZZlkDptmcY6Ja60/edit#heading=h.x9lkytc2gxmg][day 2]] sessions.
+These sessions were again well attended with 25-30 people at each session.
+The Go tools team was there in strength (a good sign of the support being put behind this area), as was the Uber platform team.
+In contrast to the contributor summit, the goal from these sessions was to come away with specific action items.
+
+*Gopls*.
+Gopls “readiness” was a major focus for both sessions.
+This answer effectively boiled down to determining when it makes sense to tell
+editor integrators “we have a good first cut of gopls” and then compiling a
+list of “blessed” editor integrations/plugins known to work with gopls.
+Central to this “certification” of editor integrations/plugins is a well-defined process
+by which users can report problems they experience with gopls.
+Performance and memory are not blockers for this initial “release”.
+The conversation about how to extend gopls, started in the
+contributor summit the day before, continued in earnest.
+Despite the many obvious benefits and attractions to extending gopls
+(custom go/analysis checks, linter support, refactoring, code generation…),
+there isn’t a clear answer on how to implement this in a scalable way.
+Those gathered agreed that this should not be seen as a blocker for the
+initial “release”, but should continue to be worked on.
+In the spirit of gopls and editor integrations,
+Heschi Kreinick from the Go tools team brought up the topic of debugging support.
+Delve has become the de facto debugger for Go and is in good shape;
+now the state of debugger-editor integration needs to be established,
+following a process similar to that of gopls and the “blessed” integrations.
+
+*Go*Discovery*Site*.
+The second golang-tools session started with an excellent introduction to
+the Go Discovery Site by Julie Qiu from the Go tools team, along with a quick demo.
+Julie talked about the plans for the Discovery Site: open sourcing the project,
+what signals are used in search ranking, how [[http://godoc.org/][godoc.org]] will ultimately be replaced,
+how submodules should work, how users can discover new major versions.
+
+*Build*Tags*.
+Conversation then moved to build tag support within gopls.
+This is an area that clearly needs to be better understood
+(use cases are currently being gathered in [[https://golang.org/issue/33389][issue 33389]]).
+In light of this conversation, the session wrapped up with
+Alexander Zolotov from the JetBrains GoLand team suggesting that the gopls and
+GoLand teams should share experience in this and more areas, given GoLand
+has already gained lots of experience.
+
+*Join*Us!*
+We could easily have talked about tools-related topics for days!
+The good news is that the golang-tools calls will continue for the foreseeable future.
+Anyone interested in Go tooling is very much encouraged to join: [[https://golang.org/wiki/golang-tools][the wiki]] has more details.
+
+* Enterprise Use (report by Daniel Theophanes)
+
+Actively asking after the needs of less vocal developers will be the largest challenge,
+and greatest win, for the Go language. There is a large segment of programmers
+who don’t actively participate in the Go community.
+Some are business associates, marketers, or quality assurance who also do development.
+Some will wear management hats and make hiring or technology decisions.
+Others just do their job and return to their families.
+And lastly, many times these developers work in businesses with strict IP protection contracts.
+Even though most of these developers won’t end up directly participating in open source
+or the Go community proposals, their ability to use Go depends on both.
+
+The Go community and Go proposals need to understand the needs of these less vocal developers.
+Go proposals can have a large impact on what is adopted and used.
+For instance, the vendor folder and later the Go modules proxy are incredibly important
+for businesses that strictly control source code and
+typically have fewer direct conversations with the Go community.
+Having these mechanisms allow these organizations to use Go at all.
+It follows that we must not only pay attention to current Go users,
+but also to developers and organizations who have considered Go,
+but have chosen against it.
+We need to understand these reasons.
+
+Similarly, should the Go community pay attention to “enterprise”
+environments it would unlock many additional organizations who can utilize Go.
+By ensuring active directory authentication works, users who would
+be forced to use a different ecosystem can keep Go on the table.
+By ensuring WSDL just works, a section of users can pick Go up as a tool.
+No one suggested blindly making changes to appease non-Go users.
+But rather we should be aware of untapped potential and unrecognized
+hindrances in the Go language and ecosystem.
+
+While several different possibilities to actively solicit this information
+from the outside was discussed, this is a problem we fundamentally need your help.
+If you are in an organization that doesn’t use Go even though it was considered,
+let us know why Go wasn’t chosen.
+If you are in an organization where Go is only used for a subsection of programming tasks,
+but not others, why isn’t it used for more? Are there specific blockers to adoption?
+
+* Education (report by Andy Walker)
+
+One of the roundtables I was involved in at the Contributors Summit
+this year was on the topic of Go education,
+specifically what kind of resources we make available
+to the new Go programmer, and how we can improve them.
+Present were a number of very passionate organizers, engineers and educators,
+each of whom had a unique perspective on the subject,
+either through tools they’d designed,
+documents they’d written or workshops they’d given to developers of all stripes.
+
+Early on, talk turned to whether or not Go makes a good first programming language.
+I wasn’t sure, and advocated against it.
+Go isn’t a good first language, I argued, because it isn’t intended to be.
+As Rob Pike [[https://talks.golang.org/2012/splash.article][wrote back in 2012]],
+“the language was designed by and for people who write—and read and debug and maintain—large software systems”.
+To me, this guiding ethos is clear: Go is a deliberate response to perceived flaws
+in the processes used by experienced engineers, not an attempt to create an ideal
+programming language, and as such a certain basic familiarity with programming concepts is assumed.
+
+This is evident in the official documentation at [[https://golang.org/doc/][golang.org/doc]].
+It jumps right into how to install the language before passing the user on to the
+[[https://tour.golang.org/][tour]], which is geared towards programmers
+who are already familiar with a C-like language.
+From there, they are taken to [[https://golang.org/doc/code.html][How to Write Go Code]],
+which provides a very basic introduction to the classic non-module Go workspace,
+before moving immediately on to writing libraries and testing.
+Finally, we have [[https://golang.org/doc/effective_go.html][Effective Go]],
+and a series of references including the [[https://golang.org/ref/spec][spec]],
+rounded out by some examples.
+These are all decent resources if you’re already familiar with a C-like language,
+but they still leave a lot to be desired, and there’s nothing to be found
+for the raw beginner or even someone coming directly from a language like Python.
+
+As an accessible, interactive starting point, the tour is a natural first target
+towards making the language more beginner friendly,
+and I think a lot of headway can be made targeting that alone.
+First, it should be the first link in the documentation,
+if not the first link in the bar at the top of golang.org, front and center.
+We should encourage the curious user to jump right in and start playing with the language.
+We should also consider including optional introductory sections on coming
+from other common languages, and the differences they are
+likely to encounter in Go, with interactive exercises.
+This would go a long way to helping new Go programmers in mapping
+the concepts they are already familiar with onto Go.
+
+For experienced programmers, an optional, deeper treatment should be given
+to most sections in the tour, allowing them to drill down into more
+detailed documentation or interactive exercises enumerating the
+design decisions principles of good architecture in Go.
+They should find answers to questions like:
+
+- Why are there so many integer types when I am encouraged to use `int` most of the time?
+- Is there ever a good reason to pick a value receiver?
+- Why is there a plain `int`, but no plain `float`?
+- What are send- and receive-only channels, and when would I use them?
+- How do I effectively compose concurrency primitives, and when would I _not_ want to use channels?
+- What is `uint` good for? Should I use it to restrict my user to positive values? Why not?
+
+The tour should be someplace they can revisit upon finishing the first run-through
+to dive more deeply into some of the more interesting choices in language design.
+
+But we can do more. Many people seek out programming as a way to design
+applications or scratch a particular itch, and they are most likely to want
+to target the interface they are most familiar with: the browser.
+Go does not have a good front-end story yet.
+Javascript is still the only language that really provides
+both a frontend and a backend environment,
+but WASM is fast becoming a first-order platform,
+and there are so many places we could go with that.
+We could provide something like [[https://github.com/gopherjs/vecty][vecty]]
+in [[https://goplay.space/][The Go Play Space]],
+or perhaps [[https://gioui.org/][Gio]], targeting WASM, for people to get
+started programming in the browser right away, inspiring their imagination,
+and provide them a migration path out of our playground into
+a terminal and onto GitHub.
+
+So, is Go a good first language?
+I honestly don’t know, but it’s certainly true there are a significant
+number of people entering the programming profession
+with Go as their starting point, and I am very interested in talking to them,
+learning about their journey and their process,
+and shaping the future of Go education with their input.
+
+* Learning Platforms (report by Ronna Steinberg)
+
+We discussed what a learning platform for Go should look like
+and how we can combine global resources to effectively teach the language.
+We generally agreed that teaching and learning is easier with visualization
+and that a REPL is very gratifying.
+We also overviewed some existing solutions for visualization with Go:
+templates, Go WASM, GopherJS as well as SVG and GIFs generation.
+
+Compiler errors not making sense to the new developer was also brought up
+and we considered ideas of how to handle it, perhaps a bank of errors and how they would be useful.
+One idea was a wrapper for the compiler that explains your errors to you, with examples and solutions.
+
+A new group convened for a second round later and we focused more on
+what UX should the Go learning platform have,
+and if and how we can take existing materials (talks, blog posts, podcasts, etc)
+from the community and organize them into a program people can learn from.
+Should such a platform link to those external resources?
+Embed them?
+Cite them?
+We agreed that a portal-like-solution (of external links to resources)
+makes navigation difficult and takes away from the learning experience,
+which led us to the conclusion that such contribution cannot be passive,
+and contributors will likely have to opt-in to have their material on the platform.
+There was then much excitement around the idea of adding a voting mechanism to the platform,
+effectively turning the learners into contributors, too,
+and incentivizing the contributors to put their materials on the platform.
+
+(If you are interested in helping in educational efforts for Go,
+please email Carmen Andoh candoh@google.com.)
+
+* Thank You!
+
+Thanks to all the attendees for the excellent discussions on contributor day,
+and thanks especially to Lynn, Paul, Daniel, Andy, and Ronna
+for taking the time to write these reports.
+
+
diff --git a/content/contributors-summit-2019/group.jpg b/content/contributors-summit-2019/group.jpg
new file mode 100644
index 0000000..4c7a2ee
--- /dev/null
+++ b/content/contributors-summit-2019/group.jpg
Binary files differ
