Using Functional Programming within an Industrial Product Group: Perspectives and Perceptions<br />presenter<br />
XenServer: an operating system virtualisation platform<br />Why is XenServer interesting?<br />It is widely distributed<br...
Why did we chooseOCaml?<br />Several of us used it before and trusted it.<br />We believed it would make us more productiv...
A mix of programming styles	<br />Imperative<br />Most I/O, Xen and OS syscalls. “A type-safe C”<br />Functional<br />Bin ...
What (some) people said<br />“the tool-chain is not mature enough”<br />“we will not be able to hireOCamlpeople”<br />“no-...
“the tool-chain is not mature enough”<br />In 4.5 years of heavy use, we found one (obscure) compiler bug<br />It was alre...
“we will not be able to hireOCamlpeople”<br />FromOctober 2006 –April 2010, 12OCaml engineers hired (25% of engineering hi...
“no-one will buy the company”<br />Argument: in the due-diligence phase, a suitor will detect the presence of a “non-stand...
“people in other teams will not be able to contribute any code”<br />
“… what about contribution size”<br />
Concerns<br />Foreign Function Interface<br />Requires much knowledge of the GC, and bugs can be subtle. But we like how f...
Conclusion<br />We’re very happy withOCaml !<br />Great tools<br />Nice language<br />Excellent people<br />Our code is op...
Upcoming SlideShare
Loading in …5
×

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

1,607 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
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,607
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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 />

×