11,258 karma · joined July 31, 2009
Currently at Mistral.
Previous things I've been involved with:
https://docker.com ( past) -- via acquisition of http://unikernel.com. Still working on unikernel adoption but with the leverage of Docker's ecosystem. First product is Docker for Mac/Windows.
http://unikernel{.org|.com} (past) -- Working towards wider adoption of unikernels.
http://nymote.org (dormant|side-project) -- FOSS, OCaml-based toolstack for connected devices and personal clouds. Just as the LAMP stack enabled the modern web, the Nymote stack (aka MISO stack) will enable the 'Internet of Everything'.
https://mirage.io (past) -- MirageOS is the 'M' in the MISO stack. A new approach to the Operating System where developers compose their applications by pulling in OS components as libraries (e.g networking, etc) and let the compiler deal with optimisation to produce lean, single-purpose VMs (aka Unikernels). The 'I' in MISO is the Irmin, git-like data storage system.
http://www.cl.cam.ac.uk/projects/ocamllabs (alum) -- Co-created this group to push OCaml forward and make it more effective by working on tooling, documentation and a Platform. I herded cats here.
http://www.springboard.com (spun out, later acquired) -- Accelerator programme I set up in Cambridge in 2009. Worked with neilgd. Teams included PagerDuty (agmiklas, bpuvanathasan & alexsolo) and TidePowerd (profquail) among others. Now being run by jdbradford. Merged with Techstars in Q1 2013.
http://www.tidepowerd.com (board member) -- One of the Springboard teams that Red Gate invested in (profquail). Makes GPU computing accessible to .NET devs. Now shut down.
http://www.svc2uk.com -- Student run series of events with folks from the Valley. Chaired by Sherry Coutu and Reid Hoffman.
http://www.go-test.it (now sold) -- Red Gate acquisition. I worked with the founder, martinkl, who moved on to Rapportive (YC S10) with rahulvohra and samstokes. The assets were sold on.
---------------------------------
I'd say the best thing is to actually try a few of them out. MirageOS has tutorials and I'm sure some of the others do too. I doubt enough people (outside the teams themselves) have had a chance to build useful things with each approach.
There's also a good series of unikernel articles that give more background. http://www.linux.com/news/enterprise/cloud-computing/821243-...
Exactly. I'm always surprised when people think it's the ads themselves that matter. It's the behavioural data and profiling that's valuable. With that information, you can place targeted ads elsewhere.
I'm sure most users still don't realise that WhatsApp is an FB product now.
I think it's worth drawing a distinction between the algos/maths and attempts at implementations. Otherwise we wouldn't have things like OCaml-TLS and others.
At some point you have to put your ideas/implementation/whatever out into the open (you might even have to advertise its existence). At that point, anyone better resourced than you can probably just mimic your work.
What alternative does anyone really have?
And what on earth does 'organic growth' of mailing lists even mean in this context?
Had you been commenting about mailman specifically, then I guess I could see your point (it's one product in this space) -- generalising to all mailing lists ever seems absurd.
Regarding commercial uptake, the nice thing about the library approach is that companies get to pick and choose the components they want (without even going 'full Unikernel'). For example, I'm aware of the cohttp library having commercial users. The real issue is legacy code but I mostly sidestep that when I write (but we're well aware of it).
Interesting that you mention MirageOS in containers. I don't see any reason the two can't be compatible but it would good to hear more about what you'd like to achieve (or how you'd expect it to be in terms of workflow).
[1] http://openmirage.org/blog/introducing-irmin (I think it's time we put together an overview page with all the links).
However, I disagree with the point that moribund projects could be revitalised this way. If the people writing the code have little interest in explaining to other people like themselves how to use it then IMHO writing additional text for less involved people is not going to be very impactful.
Your second point about myopic docs is spot on, though. A human-readable summary can be invaluable but it involves getting your head around what already exists first -- that requires some will from the developers in the first place.
The main difference from my perspective is that the bar for 'Minimal' and 'Viable' in hardware is much higher than for software.
This is an excellent question. I doubt that anyone is going to turn you away but there are some things you should probably consider. I'm drawing this from my experience with MirageOS [1] and OCaml-related projects I've been involved with.
1. Why are you doing this?
After you've figured out what you care about you should still ask yourself why. Is it CV points? New experiences? Specific project goal? To stretch yourself? Accolades?
If you can be upfront with yourself about what you're hoping to get from contributing then it makes it a little easier to frame what it is that you can offer. As I said above, no-one's going to deny a new contributor but having a flaky contributor is also frustrating. Most projects won't have any kind of 'onboarding' process so knowing why you want to do this at all will help you create your own.
In my case, I can see how a new method of building software (with unikernels) could be transformational. I also want to know that I'm helping to promote the creation of better software for distributed systems. There's a specific use-case I want to be able to highlight too (see point 2).
2. What do you actually care about?
This matters more than you might think. If you're only peripherally interested in a project it'll be difficult to remain motivated, especially if you already have a full-time job. This is more than buying into a project's wider goals (assuming it even has any stated goals) but more about what would actually drive you to continue contributing. It's somewhat related to the above point but a little more specific.
Do you like writing docs? How about blog posts or giving talks? Or doing tests? Triaging bugs? Helping users with issues? Organising stuff (community/devs)? Small project or a large one? Move fast or be considered?
Can you match any of these up with gaps you see in the project?
From my point of view, I want to work towards distributed systems that empower users [2] and I can see how parts of the project can get me there [3]. I wanted to write more (personally), I care about good organisational practices/structures/communication and onboarding new people. Those are the things I tend to think about and it's led to me coordinating fortnightly calls, curating a set of Pioneer Projects and writing a lot more.
3. How will you build credibility?
Since you're not contributing code, it's almost inevitable that you'll end up in bike-shed territory (though even code has plenty of bike-shedding). Everyone has an opinion so why would anyone listen to yours?
I think this is why 'documentation' (inc tutorials) gets touted as the first, semi-technical way to get involved with a project. It's rarely threatening to the existing team and provides immediate value. Many of the other things you mention in your list provide long-term value but they need to welcomed. Again, no-one will state that they don't need these things but that doesn't mean that any offering will be accepted. If you're willing to believe that customers can't always articulate what they really want, then the same applies to any open-source project :)
I don't have a pithy answer for this. I think it just takes consistent behaviour over time. Be reasonable and try and back up any claims but don't be afraid to stand firm.
4. Just start!
All of the above points may seem cautionary but it's best to just get involved. Open source projects can be pretty awesome and there's nowhere else where I've been able to be as transparent about what I'm working on. There's probably a useful blog post in this comment so I may write my thoughts up properly some day (as opposed to this brain dump).
With that mini-rant out of the way, the really interesting thing will be examining the differences between Unikernel approaches. So far, there hasn't been scope to do that as it's been more about rasing awareness of the space in general.
It's still separated from the the domUs via the hypervisor. So an exploit in one place isn't easy to escalate into a breach of the whole system. This is a security benefit.
From the rest of your comment, I get the impression that you care more for speed/convenience (even the post you link to is about speed). That's a perfectly reasonable position and the examples you provide are perfectly valid for different threat models (i.e. running your own trusted code on your own trusted server). Deployments to the cloud (or large scale teams) do need to consider different threat models.
As avsm points out in a sibling comment, you can target numerous back-ends with MirageOS -- meaning that you can compose a system that suits your particular needs.
-----
The nice thing with multiple Unikernel approaches is that you get to choose your trade-offs. MirageOS takes a clean-slate approach and generally concerns itself with safety and security. OSv allows you to work with legacy code, and Rump Kernels help to break up the existing stacks. There are also others that have a preference for speed etc. Depending on the task at hand, you could choose whichever suits your needs/problem-domain.
The upfront cost you refer to only comes from having to port legacy code. However, building new services this way doesn't carry that cost (apart from potentially learning a new language -- but I hope people see that as a useful skill, regardless).
Upcoming paper: http://anil.recoil.org/papers/2015-nsdi-jitsu.pdf
Although there are many applications of the unikernel approach, a longer term goal that I'm particularly keen to work towards is the idea of distributed personal clouds. Enabling people to run their own infrastructure, without becoming sysadmins, would be pretty cool [3]. Of course, there are other ways to achieve this but unikernels offer certain benefits.
[1] http://openmirage.org (I'm involved with the project).
[2] https://news.ycombinator.com/item?id=9263146
[3] http://nymote.org/blog/2015/brewing-miso-to-serve-nymote/
I recall at least two vulnerabilities that GitHub was exposed to. The mass-assignment one from Rails (which they didn't fix until after they were the poster-child for it), and the cross-site one, which prompted them to use github.io.
I suspect their security teams are better now but you're still taking it on faith. By using 3rd-party services, you are increasing your exposure, not diminishing it. Someone who wants to attack you specifically will do so regardless.
In the current scenario, all those instacarts, eat24s, etc are also looking to get paid first, so this advantage should evaporate (leaving only those which are systemic -- ie banks, processors, etc).
Indeed. I didn't realise that Docker/Container folks had ever said VMs were too heavyweight. Is this linked anywhere?
> "Would these fine-grained unikernels also run well on KVM, VMware ESXi, Hyper-V, or bhyve (FreeBSD's new VMM)?"
We've been asked this before and for KVM at least, it just boils down to someone suitably motivated to write the boot and VirtIO code [1, 2]. If anyone's interested in this, we'd love to hear about it [3]!
[1] http://lists.xenproject.org/archives/html/mirageos-devel/201...
[2] http://lists.xenproject.org/archives/html/mirageos-devel/201...
[3] http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageo...
This kind of fast experimentation is going to lead to some really cool things happening with unikernels.
I'm impressed by the product/service but I'm so jaded about 'being gamed' that I'm always cynical when I buy online.
If you want the short version, read the 6 principles that Cialdini reduced them to.
http://en.wikipedia.org/wiki/Robert_Cialdini#6_key_principle...
> "Observing this, and portraying it as something new and abusable is just silly."
Err... no, it is not silly. Techniques like these are routinely used to separate people from their money -- and in the digital age to get people to share ever more information about themselves. Being aware that this is a 'thing' means you can come up with counter-techniques to cope with it. Or just let yourself be manipulated (I guess that should be counted as an option).
Also worth looking at the list of cognitive biases as they're commonly exploited too.