diff options
Diffstat (limited to 'content/io2013-chat.article')
-rw-r--r-- | content/io2013-chat.article | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/content/io2013-chat.article b/content/io2013-chat.article new file mode 100644 index 0000000..9b031da --- /dev/null +++ b/content/io2013-chat.article @@ -0,0 +1,160 @@ +# A conversation with the Go team +6 Jun 2013 +Summary: At Google I/O 2013, several members of the Go team hosted a "Fireside chat." +OldURL: /a-conversation-with-the-go-team + +## + +At Google I/O 2013, several members of the Go team hosted a "Fireside chat." +Robert Griesemer, Rob Pike, David Symonds, Andrew Gerrand, Ian Lance Taylor, +Sameer Ajmani, Brad Fitzpatrick, and Nigel Tao took questions from the audience +and people around the world about various aspects of the Go project. + +.iframe //www.youtube.com/embed/p9VUCp98ay4 309 549 + +We also hosted a similar session at I/O last year: +[_Meet the Go team_](http://www.youtube.com/watch?v=sln-gJaURzk). + +There were many more questions from Google Moderator than we were able to +answer in the short 40 minute session. +Here we answer some of those we missed in the live session. + +_Linking speed (and memory usage) for the gc toolchain are a known problem._ +_Are there any plans to address this during the 1.2 cycle?_ + +**Rob:** Yes. We are always thinking about ways to improve performance of the +tools as well as the language and libraries. + +_I have been very pleased to see how quickly Go appears to be gaining traction._ +_Can you talk about the reactions you have experienced working with other_ +_developers inside and outside Google? Are there any major sticking points remaining?_ + +**Robert:** A lot of developers that seriously tried Go are very happy with it. +Many of them report a much smaller, more readable and thus maintainable code +base: A 50% code size reduction or more when coming from C++ seems common. +Developers that switched to Go from Python are invariably pleased with the +performance gain. The typical complaints are about small inconsistencies in the +language (some of which we might iron out at some point). What surprises me is +that almost nobody complains about the lack of generics. + +_When will Go be a first-class language for Android development?_ + +**Andrew:** This would be great, but we don't have anything to announce. + +_Is there a roadmap for the next version of Go?_ + +**Andrew:** We have no feature roadmap as such. The contributors tend to work on +what interests them. Active areas of development include the gc and gccgo +compilers, the garbage collector and runtime, and many others. We expect the +majority of exciting new additions will be in the form of improvements to our +tools. You can find design discussions and code reviews on the +[golang-dev mailing list](http://groups.google.com/group/golang-dev). + +As for the timeline, we do have +[concrete plans](https://docs.google.com/document/d/106hMEZj58L9nq9N9p7Zll_WKfo-oyZHFyI6MttuZmBU/edit?usp=sharing): +we expect to release Go 1.2 on December 1, 2013. + +_Where do you guys want to see Go used externally?_ +_What would you consider a big win for Go adoption outside Google?_ +_Where do you think Go has the potential to make a significant impact?_ + +**Rob:** Where Go is deployed is up to its users, not to us. We're happy to see +it gain traction anywhere it helps. It was designed with server-side software +in mind, and is showing promise there, but has also shown strengths in many +other areas and the story is really just beginning. There are many surprises to +come. + +**Ian:** It’s easier for startups to use Go, because they don’t have an +entrenched code base that they need to work with. So I see two future big wins +for Go. One would be a significant use of Go by an existing large software +company other than Google. Another would be a significant IPO or acquisition +of a startup that primarily uses Go. These are both indirect: clearly choice +of programming language is a very small factor in the success of a company. +But it would be another way to show that Go can be part of a successful +software system. + +_Have you thought any (more) about the potential of dynamically loading_ +_Go packages or objects and how it could work in Go?_ +_I think this could enable some really interesting and expressive constructs,_ +_especially coupled with interfaces._ + +**Rob:** This is an active topic of discussion. We appreciate how powerful the +concept can be and hope we can find a way to implement it before too long. +There are serious challenges in the design approach to take and the need to +make it work portably. + +_There was a discussion a while ago about collecting some best-of-breed_ +`database/sql` _drivers in a more central place._ +_Some people had strong opinions to the contrary though._ +_Where is_ `database/sql` _and its drivers going in the next year?_ + +**Brad:** While we could create an official subrepo (“go.db”) for database +drivers, we fear that would unduly bless certain drivers. At this point we’d +still rather see healthy competition between different drivers. The +[SQLDrivers wiki page](https://golang.org/wiki/SQLDrivers) +lists some good ones. + +The `database/sql` package didn’t get much attention for a while, due to lack of +drivers. Now that drivers exist, usage of the package is increasing and +correctness and performance bugs are now being reported (and fixed). Fixes will +continue, but no major changes to the interface of `database/sql` are planned. + There might be small extensions here and there as needed for performance or to +assist some drivers. + +_What is the status of versioning?_ +_Is importing some code from github a best practice recommended by the Go team?_ +_What happens when we publish our code that is dependent on a github repo and_ +_the API of the dependee changes?_ + +**Ian:** This is frequently discussed on the mailing list. What we do internally +is take a snapshot of the imported code, and update that snapshot from time to +time. That way, our code base won't break unexpectedly if the API changes. +But we understand that that approach doesn’t work very well for people who are +themselves providing a library. We’re open to good suggestions in this area. +Remember that this is an aspect of the tools that surround the language rather +than the language itself; the place to fix this is in the tools, not the +language. + +_What about Go and Graphical User Interfaces?_ + +**Rob:** This is a subject close to my heart. Newsqueak, a very early precursor +language, was designed specifically for writing graphics programs (that's what +we used to call apps). The landscape has changed a lot but I think Go's +concurrency model has much to offer in the field of interactive graphics. + +**Andrew:** There are many +[bindings for existing graphics libraries](https://golang.org/wiki/Projects#Graphics_and_Audio) +out there, and a few Go-specific projects. One of the more promising ones is +[go.uik](https://github.com/skelterjohn/go.uik), but it's still in its early +days. I think there's a lot of potential for a great Go-specific UI toolkit for +writing native applications (consider handling user events by receiving from a +channel), but developing a production-quality package is a significant +undertaking. I have no doubt one will come in time. + +In the meantime, the web is the most broadly available platform for user +interfaces. Go provides great support for building web apps, albeit only on the +back end. + +_In the mailing lists Adam Langley has stated that the TLS code has not been_ +_reviewed by outside groups, and thus should not be used in production._ +_Are there plans to have the code reviewed?_ +_A good secure implementation of concurrent TLS would be very nice._ + +**Adam**: Cryptography is notoriously easy to botch in subtle and surprising ways +and I’m only human. I don’t feel that I can warrant that Go’s TLS code is +flawless and I wouldn’t want to misrepresent it. + +There are a couple of places where the code is known to have side-channel +issues: the RSA code is blinded but not constant time, elliptic curves other +than P-224 are not constant time and the Lucky13 attack might work. I hope to +address the latter two in the Go 1.2 timeframe with a constant-time P-256 +implementation and AES-GCM. + +Nobody has stepped forward to do a review of the TLS stack however and I’ve not +investigated whether we could get Matasano or the like to do it. That depends +on whether Google wishes to fund it. + +_What do you think about_ [_GopherCon 2014_](http://www.gophercon.com/)_?_ +_Does anyone from the team plan to attend?_ + +**Andrew:** It's very exciting. I'm sure some of us will be there. |