diff options
Diffstat (limited to 'content')
-rw-r--r-- | content/a-conversation-with-the-go-team.article | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/content/a-conversation-with-the-go-team.article b/content/a-conversation-with-the-go-team.article new file mode 100644 index 0000000..302637f --- /dev/null +++ b/content/a-conversation-with-the-go-team.article @@ -0,0 +1,158 @@ +A conversation with the Go team +6 Jun 2013 + +* Introduction + +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 http://www.youtube.com/embed/p9VUCp98ay4 309 549 + +We also hosted a similar session at I/O last year: +[[http://www.youtube.com/watch?v=sln-gJaURzk][_Meet_the_Go_team_]]. + +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 +[[http://groups.google.com/group/golang-dev][golang-dev mailing list]]. + +As for the timeline, we do have +[[https://docs.google.com/document/d/106hMEZj58L9nq9N9p7Zll_WKfo-oyZHFyI6MttuZmBU/edit?usp=sharing][concrete plans]]: +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 +[[https://code.google.com/p/go-wiki/wiki/SQLDrivers][SQLDrivers wiki page]] +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 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 +[[https://code.google.com/p/go-wiki/wiki/Projects#Graphics_and_Audio][bindings for existing graphics libraries]] +out there, and a few Go-specific projects. One of the more promising ones is +[[https://github.com/skelterjohn/go.uik][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_ [[http://www.gophercon.com/][_GopherCon_2014_]]_?_ +_Does_anyone_from_the_team_plan_to_attend?_ + +*Andrew:* It's very exciting. I'm sure some of us will be there. |