Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Using functional programming within an industrial product group: perspectives and perceptions

1,736 views

Published on

We present a case-study of using OCaml within a large product development project, focussing on both the technical and non- technical issues that arose as a result. We draw comparisons between the OCaml team and the other teams that worked on the project, providing comparative data on hiring patterns and cross-team code contribution.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Using functional programming within an industrial product group: perspectives and perceptions

  1. 1. Using Functional Programming within an Industrial Product Group: Perspectives and Perceptions<br />presenter<br />
  2. 2. XenServer: an operating system virtualisation platform<br />Why is XenServer interesting?<br />It is widely distributed<br />50k companies; largest customer >20k physical machines<br />It is low-level mission-critical infrastructure<br />Hypervisor, kernel, management stack, Windows GUI<br />It is written in C,OCaml, Python, C#<br />Around 11 full-timeOCamldevs; 130kLOC ofOCaml<br />About Us<br />
  3. 3. Why did we chooseOCaml?<br />Several of us used it before and trusted it.<br />We believed it would make us more productive.<br />As a startup, there was a culture of risk-taking and innovation.<br />… and no-one was able to stop us <br />
  4. 4. A mix of programming styles <br />Imperative<br />Most I/O, Xen and OS syscalls. “A type-safe C”<br />Functional<br />Bin packing algorithms for failure planning<br />Combinators for domain communication<br />wait_for (<br />any_of<br /> [ ‘OK, value_to_appear “/path1”;<br /> ‘Failed, value_to_become "/path" v<br /> ] )<br />Meta Programming<br />Database accessors, RPC stubs, API specification<br />
  5. 5. What (some) people said<br />“the tool-chain is not mature enough”<br />“we will not be able to hireOCamlpeople”<br />“no-one will buy the company”<br />“people in other teams will not be able to contribute any code”<br />
  6. 6. “the tool-chain is not mature enough”<br />In 4.5 years of heavy use, we found one (obscure) compiler bug<br />It was already fixed in CVS when we reported it<br />The binaries are subjected to 2,000 machine-hours of testing every night, with regular week-long soak stress tests<br />Last seg-fault was over 3 years ago<br />There was a missing “%s” in our custom C bindings<br />… and an extra “%s” in some Python code<br />
  7. 7. “we will not be able to hireOCamlpeople”<br />FromOctober 2006 –April 2010, 12OCaml engineers hired (25% of engineering hires, as planned)<br />Only 2 had previousOCamlexperience<br />Training time was dominated by learning the product, not the language<br />Advertising on caml-list, haskell-café got great candidates<br />
  8. 8. “no-one will buy the company”<br />Argument: in the due-diligence phase, a suitor will detect the presence of a “non-standard” “research” langage likeOCamland conclude we’re not serious<br />Reality: on 22nd October 2007, Citrix paid $500M for XenSource after a comprehensive code review.<br />
  9. 9. “people in other teams will not be able to contribute any code”<br />
  10. 10. “… what about contribution size”<br />
  11. 11. Concerns<br />Foreign Function Interface<br />Requires much knowledge of the GC, and bugs can be subtle. But we like how fast it is!<br />Profiling support<br />More of a generic UNIX issue, but interactions of threads, process and hypercalls can be “interesting”.<br />
  12. 12. Conclusion<br />We’re very happy withOCaml !<br />Great tools<br />Nice language<br />Excellent people<br />Our code is open-source (LGPL), check it out: http://www.xen.org/products/cloudxen.html<br />Questions?<br />

×