Go&#x27;s import system has tons of problems.<p>1) inconsistent syntax: import &quot;github.com&#x2F;fsouza&#x2F;go-dockerclient&quot;; docker.NewClient...<p>Notice how you import something with the trailing path being &quot;go-dockerclient&quot; but the actual package name is &quot;docker&quot;?<p>In npm, if you type x = require(&quot;foo&quot;), you always refer to it as &#x27;x.something&#x27;. You don&#x27;t have to guess or read docs.<p>2) build flags. What the fuck? 
&#x2F;&#x2F; +build fuckme<p>3) Canonical import paths. Double what the fuck?
For those of you who don&#x27;t know, if you have &quot;github.com&#x2F;foo&#x2F;bar&quot; but write &#x27;package bar &#x2F;&#x2F; import &quot;github.com&#x2F;google&#x2F;bar&quot;&#x27; then a user of your package will not be able to compile it unless they move it to the directory you gave.<p>Yeah, no joke.... I&#x27;m in awe at this stupidity<p>4) Poor project-based importing (something actually worse than virtualenv; nothing near as good as npm).<p>5) init side effects, e.g. look at how pprof works. Literally you do an underscore import and it mutates the behaviour of the http package. Thanks.