Re: [Wikitech-l] From Node.js to Go

2015-01-30 Thread James Douglas
I wonder whether Go's lack of parametric polymorphism might make it a
pretty tough sell.  Given the potential benefit of introducing a statically
typed language, it might be interesting to investigate and compare some of
the different options.

Regarding Yuri's point about tools, what would it take to integrate Hack
into the current MediaWiki build processes?  It *seems* like it wouldn't be
a huge diversion, but I'm quite unfamiliar with what's in place now.  Have
we dabbled in Hack since the HHVM switch?

On Thu, Jan 29, 2015 at 9:18 PM, Yuri Astrakhan yastrak...@wikimedia.org
wrote:

 Language fragmentation is always fun, but, as with any new one, my concerns
 lie in the environment - is there enough tools to make the advertised
 benefits worth it, does it have a decent IDE with the smart code
 completion, refactoring, and a good debugger? Does it have a
 packaging/dependency system? How extensive is the standard library, and
 user contributed packages. How well does it play with the code written in
 other languages? The list could go on.  In short - we can always try new
 things as a small service ))  And yes, Rust also sounds interesting.
 On Jan 29, 2015 7:22 PM, Ori Livneh o...@wikimedia.org wrote:

  (Sorry, this was meant for wikitech-l.)
 
  On Thu, Jan 29, 2015 at 7:20 PM, Ori Livneh o...@wikimedia.org wrote:
 
   We should do the same, IMO.
   http://bowery.io/posts/Nodejs-to-Golang-Bowery/
  
  ___
  Wikitech-l mailing list
  Wikitech-l@lists.wikimedia.org
  https://lists.wikimedia.org/mailman/listinfo/wikitech-l
 ___
 Wikitech-l mailing list
 Wikitech-l@lists.wikimedia.org
 https://lists.wikimedia.org/mailman/listinfo/wikitech-l

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Re: [Wikitech-l] From Node.js to Go

2015-01-30 Thread Erik Bernhardson
On Fri, Jan 30, 2015 at 11:23 AM, Brion Vibber bvib...@wikimedia.org
wrote:

 Hmm, IIRC using Hack means you can't use xdebug with Zend PHP ... is
 debugging with HHVM in PhpStorm possible yet/soon? (I just figured out the
 debugger setup with Zend PHP and MediaWiki-Vagrant, and it's wonderful to
 have a debugger in PHP :D )

 -- brion


The xdebug remote debugging was unstable in 3.3, as of 3.4 it has now
considered stable.  I have not actually  tried it myself though.  It looks
like the hhvm version we are packaging is 3.3.1, so in vagrant it will be a
bit unstable atm.

Erk B.

On Fri, Jan 30, 2015 at 11:14 AM, Chad innocentkil...@gmail.com wrote:

  On Fri Jan 30 2015 at 10:04:39 AM Bryan Davis bd...@wikimedia.org
 wrote:
 
   On Fri, Jan 30, 2015 at 7:18 AM, James Douglas jdoug...@wikimedia.org
 
   wrote:
I wonder whether Go's lack of parametric polymorphism might make it a
pretty tough sell.  Given the potential benefit of introducing a
   statically
typed language, it might be interesting to investigate and compare
 some
   of
the different options.
   
Regarding Yuri's point about tools, what would it take to integrate
  Hack
into the current MediaWiki build processes?  It *seems* like it
  wouldn't
   be
a huge diversion, but I'm quite unfamiliar with what's in place now.
   Have
we dabbled in Hack since the HHVM switch?
  
   I'm not aware of any WMF/MediaWiki work being done in Hack yet.
   Putting Hack into MediaWiki's core would be controversial but a stand
   alone service/app could easily choose to use it I think.
 
 
  Yeah, I'd -2 anything that required Hack in core.
 
  However if an extension wants to experiment they probably
  could. I was already thinking of trying some Hack in something
  WMF-specific like a Wikimedia* extension.
 
  -Chad
  ___
  Wikitech-l mailing list
  Wikitech-l@lists.wikimedia.org
  https://lists.wikimedia.org/mailman/listinfo/wikitech-l
 
 ___
 Wikitech-l mailing list
 Wikitech-l@lists.wikimedia.org
 https://lists.wikimedia.org/mailman/listinfo/wikitech-l

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Re: [Wikitech-l] From Node.js to Go

2015-01-30 Thread Stas Malyshev
Hi!

 The last time I saw someone asking if it was faster on #hhvm the
 answer was not yet. Whether strong typing is a pro or a con of Hack
 vs PHP seems like a religious debate that I'll try to stay out of
 until the issue is forced. The bits most likely to be of interest in
 the short term are the `async` and `await` keywords [0] and possibly
 the Continuation class [1] which makes creating generators easier than
 the PHP Iterator interface.

PHP 5.5+ has actual generators:
http://php.net/manual/en/language.generators.overview.php

The typed code would not be faster by itself unless some optimizations
actually using type information would be done (not sure if HHVM has such
optimizer), but that would require writing actually typed code which
would not be PHP of course. And this probably will be useful only for
scalar types, since there's not much happening at runtime with
non-scalar typing that can be eliminated by stronger types (for scalar
types, conversions and type branches in operators, parameter passing,
etc. can be eliminated).

-- 
Stas Malyshev
smalys...@wikimedia.org

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Re: [Wikitech-l] From Node.js to Go

2015-01-30 Thread Brion Vibber
Hmm, IIRC using Hack means you can't use xdebug with Zend PHP ... is
debugging with HHVM in PhpStorm possible yet/soon? (I just figured out the
debugger setup with Zend PHP and MediaWiki-Vagrant, and it's wonderful to
have a debugger in PHP :D )

-- brion

On Fri, Jan 30, 2015 at 11:14 AM, Chad innocentkil...@gmail.com wrote:

 On Fri Jan 30 2015 at 10:04:39 AM Bryan Davis bd...@wikimedia.org wrote:

  On Fri, Jan 30, 2015 at 7:18 AM, James Douglas jdoug...@wikimedia.org
  wrote:
   I wonder whether Go's lack of parametric polymorphism might make it a
   pretty tough sell.  Given the potential benefit of introducing a
  statically
   typed language, it might be interesting to investigate and compare some
  of
   the different options.
  
   Regarding Yuri's point about tools, what would it take to integrate
 Hack
   into the current MediaWiki build processes?  It *seems* like it
 wouldn't
  be
   a huge diversion, but I'm quite unfamiliar with what's in place now.
  Have
   we dabbled in Hack since the HHVM switch?
 
  I'm not aware of any WMF/MediaWiki work being done in Hack yet.
  Putting Hack into MediaWiki's core would be controversial but a stand
  alone service/app could easily choose to use it I think.


 Yeah, I'd -2 anything that required Hack in core.

 However if an extension wants to experiment they probably
 could. I was already thinking of trying some Hack in something
 WMF-specific like a Wikimedia* extension.

 -Chad
 ___
 Wikitech-l mailing list
 Wikitech-l@lists.wikimedia.org
 https://lists.wikimedia.org/mailman/listinfo/wikitech-l

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Re: [Wikitech-l] From Node.js to Go

2015-01-30 Thread Bryan Davis
On Fri, Jan 30, 2015 at 7:18 AM, James Douglas jdoug...@wikimedia.org wrote:
 I wonder whether Go's lack of parametric polymorphism might make it a
 pretty tough sell.  Given the potential benefit of introducing a statically
 typed language, it might be interesting to investigate and compare some of
 the different options.

 Regarding Yuri's point about tools, what would it take to integrate Hack
 into the current MediaWiki build processes?  It *seems* like it wouldn't be
 a huge diversion, but I'm quite unfamiliar with what's in place now.  Have
 we dabbled in Hack since the HHVM switch?

I'm not aware of any WMF/MediaWiki work being done in Hack yet.
Putting Hack into MediaWiki's core would be controversial but a stand
alone service/app could easily choose to use it I think. Changing from
PHP to Hack only requires changing the opening `?php` to `?hh`.
Today what Hack gives you is some syntactic sugar for various common
idioms from the Facebook internal code base and much stronger typing.
The last time I saw someone asking if it was faster on #hhvm the
answer was not yet. Whether strong typing is a pro or a con of Hack
vs PHP seems like a religious debate that I'll try to stay out of
until the issue is forced. The bits most likely to be of interest in
the short term are the `async` and `await` keywords [0] and possibly
the Continuation class [1] which makes creating generators easier than
the PHP Iterator interface.


[0]: http://docs.hhvm.com/manual/en/hack.async.php
[1]: http://docs.hhvm.com/manual/en/hack.continuations.php

Bryan
-- 
Bryan Davis  Wikimedia Foundationbd...@wikimedia.org
[[m:User:BDavis_(WMF)]]  Sr Software EngineerBoise, ID USA
irc: bd808v:415.839.6885 x6855

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Re: [Wikitech-l] From Node.js to Go

2015-01-30 Thread Chad
On Fri Jan 30 2015 at 10:04:39 AM Bryan Davis bd...@wikimedia.org wrote:

 On Fri, Jan 30, 2015 at 7:18 AM, James Douglas jdoug...@wikimedia.org
 wrote:
  I wonder whether Go's lack of parametric polymorphism might make it a
  pretty tough sell.  Given the potential benefit of introducing a
 statically
  typed language, it might be interesting to investigate and compare some
 of
  the different options.
 
  Regarding Yuri's point about tools, what would it take to integrate Hack
  into the current MediaWiki build processes?  It *seems* like it wouldn't
 be
  a huge diversion, but I'm quite unfamiliar with what's in place now.
 Have
  we dabbled in Hack since the HHVM switch?

 I'm not aware of any WMF/MediaWiki work being done in Hack yet.
 Putting Hack into MediaWiki's core would be controversial but a stand
 alone service/app could easily choose to use it I think.


Yeah, I'd -2 anything that required Hack in core.

However if an extension wants to experiment they probably
could. I was already thinking of trying some Hack in something
WMF-specific like a Wikimedia* extension.

-Chad
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Re: [Wikitech-l] From Node.js to Go

2015-01-29 Thread Yuri Astrakhan
Language fragmentation is always fun, but, as with any new one, my concerns
lie in the environment - is there enough tools to make the advertised
benefits worth it, does it have a decent IDE with the smart code
completion, refactoring, and a good debugger? Does it have a
packaging/dependency system? How extensive is the standard library, and
user contributed packages. How well does it play with the code written in
other languages? The list could go on.  In short - we can always try new
things as a small service ))  And yes, Rust also sounds interesting.
On Jan 29, 2015 7:22 PM, Ori Livneh o...@wikimedia.org wrote:

 (Sorry, this was meant for wikitech-l.)

 On Thu, Jan 29, 2015 at 7:20 PM, Ori Livneh o...@wikimedia.org wrote:

  We should do the same, IMO.
  http://bowery.io/posts/Nodejs-to-Golang-Bowery/
 
 ___
 Wikitech-l mailing list
 Wikitech-l@lists.wikimedia.org
 https://lists.wikimedia.org/mailman/listinfo/wikitech-l
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Re: [Wikitech-l] From Node.js to Go

2015-01-29 Thread Ori Livneh
(Sorry, this was meant for wikitech-l.)

On Thu, Jan 29, 2015 at 7:20 PM, Ori Livneh o...@wikimedia.org wrote:

 We should do the same, IMO.
 http://bowery.io/posts/Nodejs-to-Golang-Bowery/

___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Re: [Wikitech-l] From Node.js to Go

2015-01-29 Thread Gabriel Wicke
I'm personally more excited about Rust. It is a true systems language with
a modern type system, does away with the GC for more predictable
performance and generally outperforms Go on CPU-bound tasks. It could
actually become an interesting option for a highly parallel Parsoid 2.0
version once its 1.0 is out of the door. The Mozilla folks have built solid
PEG and DOM libraries, which are important for that task.

In any case, I see little benefit in porting existing Node code to Go right
now. The performance gains are marginal, and the cost of language
fragmentation is real. We have a large number of JS developers, and it
looks like the web is not going to move away from JS any time soon. Modern
JS with promises and generators is also quite a bit nicer than old-style
callbacks, and we are seeing speed-ups of around 10% with io.js.

Gabriel

PS: Wikia are building an auth service in Go
https://github.com/Wikia/helios/, but have otherwise standardized on Java
for now.

On Thu, Jan 29, 2015 at 7:21 PM, Ori Livneh o...@wikimedia.org wrote:

 (Sorry, this was meant for wikitech-l.)

 On Thu, Jan 29, 2015 at 7:20 PM, Ori Livneh o...@wikimedia.org wrote:

  We should do the same, IMO.
  http://bowery.io/posts/Nodejs-to-Golang-Bowery/
 
 ___
 Wikitech-l mailing list
 Wikitech-l@lists.wikimedia.org
 https://lists.wikimedia.org/mailman/listinfo/wikitech-l
___
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l