Matt and Richard discuss the thrilling subject of "Who Owns Java?". Is it Open Source? And why do Oracle think that Google owes them $8billion.
Also, progress on upcoming courses and some musing about the future direction of VPP's support process.
Richard:So, are we going to do a professional introduction this week?
Matt:Well, if we do, what are we going to say?
Richard:We're going to say hello and welcome. This is the third Virtual Pair Programmers Podcast where we're talking all things Java.
Matt:My name is Matt Greencroft.
Richard:And I'm Richard Chesterwood.
Matt:And if you've joined us for the third time, thank you, welcome.
Richard:That wasn't bad, was it?
Matt:It was a pretty good start. It's definitely our best yet, but then, three out of three.
Richard:They have been very poor so far, so just poor is quite an improvement.
Matt:It certainly is, it certainly is. So, what are we talking about this week?
Richard:Well, when we started the idea of doing a podcast, one of the reasons we went for every two weeks was, my thinking was, in a two week cycle, there's going to be plenty of news to report. What we've discovered is in Java, in two weeks, nothing happens. I can't find any interesting news that's happened in the past two weeks.
Matt:I agree with you. I think there's been very little going on out there. Maybe it's quiet because people are waiting for Java 9 to complete.
Richard:It could be the calm before the storm possibly.
Matt:It could be, it could be.
Richard:So, there is a lot up in the air, but when you think of all of the other frameworks that we work with, I've been watching Spring for example, and Spring 5 is, it's been in release candidate stage for a long time. But I'm not sure what their time scale is, but you would think something like that would have dropped in the last two weeks. But alas, no.
Matt:Nothing. So, something I have been reading about, and I know it's not new news as such, but it's the ongoing legal dispute between Oracle. I'm sorry. I'm sorry to make you groan. The ongoing legal dispute between Oracle and Google. Well, I should say, so Google, no, which way around is it? Is it Oracle are ...
Richard:Oracle are suing Google.
Matt:Yes, saying that they have infringed their copyright.
Richard:And they're asking $8.8 billion, I believe.
Matt:So, ignoring the rights and wrongs of it for a moment, how does this even work? Because, is Java open, I'm not sure if it's quite the right word, but is it open source? How can Oracle own something that they can then claim Google's infringed on? How does that work with Java?
Richard:All right, all of this is incredibly complicated. And there are lawyers currently charging more per hour than we earn in a year, working through the ins and outs of this and obviously making very, very good careers out of it. But I think, first of all this bores me rigid the whole thing of who owns what and what are the legal implications, but there are some interesting technical aspects to this. So, effectively what you're asking now I think is, is Java open source?
Matt:Or if not, what's the relationship between Oracle and Java? That might be a good starting point.
Richard:Yeah. Well, actually I think it's instructive to go back in time and go all the way back to the start of Java. So, Java of course was invented at Sun Microsystems, often attributed to James Gosling as being the father of Java. But I think it was actually more a team of people involved and he was kind of their spiritual leader sort of thing.
Matt:Bit like Pythagoras. He had a school of people working with him, but Pythagoras gets all the credit.
Richard:Well, you have a much better education than I had. I'm not familiar-
Matt:Maybe I was awake in that lecture. We were educated together, so.
Richard:Well, you went to a better school than me before then. But no, it was invented at Sun Microsystems for a very commercial purpose. Their intention, I mean Sun were a very hardware centric company, and their plan was to move into the area of set-top boxes. The televisions, that's what they were after. And that was the whole purpose of the Java language originally, was to have a kind of an architectural-neutral platform independent way of deploying code to embedded devices like set-top boxes. So, it was developed at Sun for a commercial reason and was proprietary software. It was not open source. Java was owned by Sun. The thing that confuses things is that right from the very beginning Java was a free download, but it was free as in beer, not as in speech. So, you could download it for free but it didn't mean you could do whatever you wanted with it. You had to agree to the licence conditions.
Richard:Now, it is going back a long, long time. Too far back for me to remember, but for example, as I understand it, the main revenue stream for Java at Sun was licencing Java so that it could run on mobile phones. So, if you were Nokia, for example, and you wanted to put a Java virtual machine on a Nokia phone, you had to pay Sun to do so because the Java virtual machine was proprietary copyright software owned by Sun. As far as I know, and this is where I'm a little bit sketchy for various historical reasons, I'm sketchy on this, but as far as I know, if you wanted to deploy your Java programme to a server to install a Java virtual machine on a server that's running commercially, I believe a licence fee was due to Sun for that as well. I suspect a lot of, I may be wrong on that, it may be that they waived the licence fees for servers.
Matt:But Sun obviously produced at the time a Java virtual machine a runtime, but when did ... so, obviously IBM produced a runtime.
Richard:So, the way it worked was ... Again, this is only very roughly. I'm going to get some technical details wrong, but the idea was that a specification was produced of the virtual machine and the Java libraries as well. So in fact, the whole JDK had a kind of a specification and if you as a commercial company wanted to implement that specification, you could do so. And you could sell, as you say IBM did, you could sell a virtual machine. And you put a little Java logo on it if you satisfied what was called the TCK, which was a Technology Compatibility Kit, which is basically a test suite that you bought from Sun that you ran against your implementation and if you got a green bar on every single one of those tests, you've now been certified and you can now sell it as a Java virtual machine or Java libraries.
Matt:Okay, so effectively for IBM to produce their own JVM, they'd have to pay Sun, as it was, a fee to be able to do that.
Richard:Absolutely, and the TCKs were very expensive and prohibitively so. That was the reason why there wasn't a vibrant market in JVMs. Yes, you had IBM, a couple others, but really the Sun virtual machine was the only game in town. That changed around 2006 we think. We get a bit fluffy with the dates. But the then CEO of Sun, Jonathan Schwartz, was kind of a hippie guy and a nice guy. He didn't sort of seem to fit the picture of CEO of a company like Sun. But he announced that we're going to open source Java. I'm not entirely sure why they did that. It was obviously some kind of pressure that they had, but they decided to open source Java, so that's a really important milestone.
Now, one of the problems with all this, as we were talking about on last week's podcast is, what is Java? What does Java mean? There's a Java virtual machine. There's a Java Runtime. There's a Java Class Library. It means different things. And in this context, it meant they were going to open source the development kit. So, they were going to open source compiler, the virtual machine, and the libraries. It was by no means a kind of an overnight thing. Very difficult thing to do because Java extends out into a lot of ... I mean they link with other libraries. So for instance, as of today, you can talk about today, the JDK is open source. It's licenced on the GNU Public Licence, but there're still areas that are not open source. It's minor things like fonts for the graphical user interface. They can't, so if you use the ... I'm not sure I want to get into this really, but there are effectively two versions of the JDK today that are the official ones.
There's the OpenJDK, which is the open source one, and there's the Oracle JDK. The reason I was kind of avoiding this is that they're pretty much the same. The OpenJDK is the reference implementation. So, forget any idea that the OpenJDK's kind of cut down or is lacking in some way or might crash or whatever. The first time I used an OpenJDK in production, I was very nervous but not a problem at all. Since Java 7, that is the reference implementation. The Oracle one has a bit of commercial proprietary licence software wrapped up in it, things like fonts. You get open source alternatives in the OpenJDK.
Matt:Certainly. When we've been creating, as an example, web applications that we're deploying to a server on a Linux, we are going with the OpenJDK-
Matt:... because it's just an easy thing to install. Is that right?
Richard:Yeah. So, if we were deploying an app in 2006, which thankfully is before Virtual Pair Programmers, you had an absolute nightmare in installing Java to a Linux server was a nightmare for that reason. It certainly wasn't available in any of the repositories for Linux because it wasn't free. And as I say, what I'm not clear about is ... I mean thankfully 2006, I wasn't responsible for deploying or managing any Java Runtimes. I've got a feeling, I would need to check this but, I've got a feeling that licence fees would have been due. I bet a lot of serious big names were running Java virtual machines in production and they probably should've been paying for them, but they weren't. I'm not sure about that but certainly for mobile phones you absolutely had to licence the virtual machines running the mobile phone.
Matt:Okay. I'm just, in case it’s relevant, so Oracle bought Sun in 2010 I think.
Richard:I thought it was earlier. 2008, I've got in my head.
Matt:Okay, well, but did that change anything or ...
Richard:There is a suggestion that possibly the reason that Oracle bought Sun was for exactly this reason. If you want a bit of background on this, there's an interview with James Gosling, the founder of Java. He's quite a nice, softly spoken Canadian guy. He's very gentle and warm to listen to. But he stuck through the whole process. He stayed with Sun when they were acquired by Oracle, and he stayed with them for a considerable period of time. And he talks very interestingly about ... He was at the meetings where the lawyers were meeting. And he said their eyes were sparkling with glee, this is Oracle's lawyers, when they realised about the patent situation with Google. So, there is a suggestion from him that possibly that was the entire reason for the acquisition, that there is a lot of untapped revenue from patents that were not paid for by Oracle, by Google, sorry.
Matt:Right. I see. So, if ... Sorry, I'm stuttering a bit. At the time that Google was creating Android, Java wasn't open source at that time?
Richard:Correct. That's important.
Matt:So that's why there was no question that it would've had to pay a licence.
Richard:They were supposed to pay a licence, so they had discussions with, it would've been Sun at the time I think, so they had discussions with Sun. And the figure that's in my head, and again very sketchy but, it was going to be something like $26 million to licence, which chicken feed. I mean, nothing. And as James Gosling said, after the fact the lawyers' fees alone since then have been way more than that, so they should've just paid. But they didn't. They walked away from the deal, and what they did was they went and implemented their own virtual machine called Dalvik, which they claim was a clean room implementation of the JVM.
I know you know about how clean room implementations work but for the benefit of listeners out there, it's quite a common ... Most famously this was done with the IBM PC BIOS. So, IBM invented PCs. I mean the idea was so the manufactures would be able to plug in to IBM PCs, but they own the copyright on the BIOS. The underlying, the lowest-level bit of software running basically the firmware. And I can't remember the name of company, it might've been Phoenix. Do you remember the Phoenix BIOS?
Matt:I do remember the Phoenix. Yeah, okay.
Richard:Might be Phoenix or AMI BIOS. One or the others worked out, well what we could do, they did a very clever trick. It's called clean room implementation. They got together some of their most senior engineers who were nearing retirement, and they got them to open up the BIOS software, look at it in detail, how it's implemented and so on. And they got those engineers to write down the API, not the implementations, but the APIs. So, these engineers designed an API spec and then these engineers were immediately rewarded with either lucrative retirement or management positions, so they're never going to do any technical work again. And then, they throw this API document to some junior engineers who crucially have no connection whatsoever, cannot possibly have seen the internals of that original implementation. And then, they go and build a brand new implementation just from the APIs. And then, they argue in court that we haven't copied anything. It's quite an argument. It's quite a dodgy argument in many ways, but they won. And that's why suddenly you could get other manufacturers making PCs without breaking IBM's copyright.
Matt:Is that effectively what's happening here is Google are claiming they've done a-
Richard:They only were ... The only difference here is the API is published because it's just the Java docs. We've all seen the APIs. So and ... Sorry. And the specifications are available for the virtual machine as well. So that's what Google did. They reverse engineered from the published APIs, but we did not foul your implementation at all. And they won the argument in court many years ago now. This is why this whole subject bores me rigid. They won this argument many years ago in court, but as is often the case with legal battles, they then went and had another go two years later. And the second time around the judge sided with, I've got lost now, the judge sided with ... I've lost track. Sided with the other side anyway. And it keeps just going backwards and forwards. So the latest one I think was, the late is going down basically.
Matt:It's in court again now but. So if you were coming along today as a brand new company wanting to create your own virtual machine, your own embedded device, the new whatever thing is going to replace mobile phones and tablets 10 years time, would you need, today, to go and get a licence from Oracle to do that?
Richard:So the difference is, now you can ... The OpenJDK is open source. It's licenced under the GNU Public Licence, the GPL. So, we'll go into detail about what that entails. Crucially, it's with the, what's called the linking exception. So, we can talk a little bit about how GPL works, the GNU Public Licence. So, I'm sure a lot of our listeners will be using libraries that are licenced under the GNU licences. The full version of the GNU Licence is a very powerful licence. It's called a viral licence. What it means is, if you take a library that is licenced under the GPL, you are free to do whatever you like with it. You can extend it, you could just resell it. But what you can't do is ever close it. You can't change that licence. Any derivative work that you make from it, you must also licence under the GPL.
Richard:Now, the problem with that has always been that ... so, the OpenJDK is licenced through the GPL. What if I write, I'm going to write a Java programme now that uses the Java Class Libraries. Are you saying that every single Java programme now has to be GNU Public Licence? But you don't because there's this thing called the linking exception. So if a product's licenced under the GPL with the linking exception, it's okay for you to write things on top of that library. You can then licence your code in any way you like. You don't get infected by the GPL Licence because that exception is built-in. So in your specific question which was, can we implement our own virtual machine and put it into our Virtual Pair Programmers' mobile phones that we're manufacturing next week? Yes is the answer, but we would have to maintain the GPL on our implementation of the virtual machine.
Matt:Right. Okay. But actually there's nothing to stop us using the JDK. We don't have to create our own one.
Richard:Correct. We don't have to create our own, or we could use theirs and extend it. But again, it goes back to ... There's so many facets to this. It's very complicated to understand it all. But again, it comes down to what does Java mean? Now one thing we would not be able to do, is put on the front of that mobile phone the Java logo. So you all know the Java logo, the little steaming coffee cup. Very 1990s. They really should update that. That coffee cup logo is a registered trademark owned by Oracle, as is the name Java. So if you wanted to say your mobile phone was Java compatible ... you would have to pay Oracle. My understanding is you would have to pay Oracle to do that. You would have to run your code against that TCK.
Matt:So, how does that work with things like other languages that are compatible with the Java enterprise like Scala and Clojure.
Richard:Again, they're fine because of that linking exception. They are running ... They have written their own compiler that is compiling bytecode that will run on the virtual machine. But that's fine. The linking exception-
Matt:Oh, I see. Okay. Yes.
Richard:... keeps you separate from ... so, forgive me, but I forget what licence Scala was licenced, but it certainly doesn't have to be the GPL.
Richard:So, this trademarking and copyright issues around how you would then brand that, you could say it's OpenJDK compatible or something like that. Now, I'm fairly certain I've got some of that wrong. I'm not a lawyer and I don't care enough about this, to be honest. But as a thought experiment, try. Put on your website. If any listeners have your own private website, put the Java logo, the steaming coffee cup, on your website, and I bet you'll get a cease and desist from Oracle within a fortnight.
Richard:I think so.
Matt:That's fascinating because I've noticed when you look at ... If you're searching for, and I've looked at a number of consultant websites over time who would offer expertise on things like Scala, or Angular. And they've always got the logos on for things like ... The Angular logo's everywhere. Certainly, I haven't noticed the Java logo.
Richard:You used to be able to when you passed the Java certification exams, which we'll definitely talk about on a future podcast. That's a good topic. But one of the, you used to get from that when you passed was, you got sent a little JPEG that you were allowed to put on your business cards, which was that logo.
Matt:Which was the logo. Interesting.
Richard:But again, under licence. I believe that is all still controlled to this day, but it does mean we're in the much nicer position now than when we deployed Virtual Pair Programmers' website. We can download virtual images, which have OpenJDK's built in and open Runtimes, and we don't have to worry about licencing it, is my understanding. If I'm wrong on that, then we might get a call from a lawyer next week.
Matt:Well, let's hope you're right.
Richard:Well, we will port across to Microsoft within a fortnight if that happens.
Matt:This is your platform.
Richard:So, it is quite a dry thing to talk about, but it is interesting to you know, who owns Java? And it bothers me a bit that it is still effectively owned by a corporate entity.
Richard:I mean isn't ... I don't know if you want to talk about the Java Community Process, the JCP, this week. Maybe it's one for another week. But effectively, the future direction of Java and what libraries are added to Java, the things like Jigsaw, are all done through what's called the Community Process, which is theoretically open to anybody who wants to join. But the likes of Oracle are very, very powerful on that.
Matt:Yeah. I guess the interesting point for me, or the point that might be interesting for our listeners is that if you're running a company that is creating your own software and selling it, and yet you're not having to pay for the underlying resources to be able to generate that software, you're not currently paying a licence to anyone because you've got this assumption it's open source. It's, I guess, having that validity and that clarification can be useful.
Richard:Yeah, absolutely. That use to be the case with desktop software developed in Java. It isn't done very often these days, but used to be a huge problem. You could not put on your distribution CD, the Java Runtime needed to run that software. So, your customers either had to get it themselves. There was technology called Web Start, which was ... I really like Web Start. I'd love to do a course on it, but no one uses it, so we ... It was lovely. It's really good. But actually, Web Start's not open source today, I think, as I understand it. But yeah, that used to be a huge problem, but now yeah, absolutely you can package the Java Runtime with your application if you're in the field of desktops. Of course, that's partly what the new Jigsaw, the new Jlink is going to enable you to do. You could put on a CD a cut down version of the JRE, the Java Runtime, and that makes it easier to deploy your apps.
Matt:Do people still produce CDs?
Richard:Exactly, exactly. That's my point, yeah. Welcome to the '90s. I suppose there is somebody out there doing it.
Matt:Well, actually yes. I bought some. I won't name them, but they're rather major accounting company. I've recently bought a new version of their software, and I've resisted the online subscription version. So, they've sent me a DVD. Yeah, a DVD honestly, even so yes, it does feel like old technology.
Richard:But related to this is, I think it's a bit of a shame that in Java we don't really have a figurehead. I mean we work in Java all the time. If I asked you, "Matt, who's in charge of Java? Who's the ..." There isn't really. Scott Reinhold is the kind of chief architect of Java. He's certainly been very visible because he's the spec lead for Jigsaw. I honestly, I don't know if I'd recognise him in the street. It's just other languages have the benevolent dictator for life model, and I like that, where there's one person who will always be there as the kind of founding figure of your language. Might be a figure of hate sometimes, but at least someone that you recognise. We just don't have that in Java. James Gosling was the closest we've got.
Matt:And where's he now?
Richard:He, very interestingly, has just joined Amazon Web Services in a major hire. It's unclear what his role is going to be there. Maybe it'll be some kind of roving ... I'm not sure how well that's going to go. He's a proper engineer you know. I don't think he liked ... He's an introvert. He likes being in his office, working on code. So as an evangelist, I'm not ... He's very softly spoken. This might be one of the reasons why Java has quite a bad PR record really. There isn't someone doing that evangelist job, fighting its corner. So, Perl has Larry Wall. Scala's Martin Odersky, and we've got Rich Hickey in Clojure, your favourite language, but-
Matt:You can stop name-dropping now.
Richard:Yeah, and all of those people you can identify. David Heinemeier Hansson, of course, in Ruby on Rails. They're forceful figures. You can strongly disagree with them, but at least you know where you are with them. And yet, Java has this kind of weird, complicated Community Process that's sort of difficult to love.
Matt:Yes, interesting. Okay. Shall we move on to-
Richard:Yeah, I'm not sure I really answered your questions there, but it's ...
Matt:Well, I guess part of the reason I thought it would be easier to talk about this is that this isn't something that programmers generally talk about. And actually, it's one of those things that it's good to have a little bit of an understanding, a bit of background knowledge, just in terms of being that fully-rounded professional to understand the position of the underlying frameworks that you're using, really. I mean, but let's not do this today. But my next question will be, "Okay, how does the Spring Framework work then with ..." In terms, it's not an open source, but let's save that for another week.
Matt:And let's talk about, I guess, what we're doing at the moment?
Richard:Yeah, the usual progress report, which might be ... So, you're very close to releasing Thymeleaf now.
Matt:I am actually. Yeah. So, Thymeleaf is almost all recorded. Actually, it's all recorded but then I've realised I've missed out a topic that I'd like to cover. So, I want to go back and review the chapter on creating forms, and it's actually about re-presentation, so that's probably very boring because you haven't yet seen the course, but it's around how you use Thymeleaf to display errors on a form, when your user’s done something that would break your validations, so I'm just going to go and be doing some editing, putting a few extra bits in to make that work, and then that will be ready for editing. This is a very brave thing to say, but I'm going to hope we'll have that out towards the end of next week.
Richard:Yep, that feels about right.
Matt:That should be right.
Richard:That feels about right.
Matt:So, that's the plan.
Richard:So, next week for that. And I'm still working on Docker. Probably not a lot to report. I mean I've got the usual little tension of ... Let's be honest there are plenty of resources on Docker out there. There's even a pretty good tutorial on the Docker website. As usual, at Virtual Pair Programmers, we've got to find an angle. We've got to do something that other people are not doing. The usual thing is we're going to tie it in to like a serious practical list. Something that you would be doing at work rather than just Hello World type examples.
So, the obvious thing is the system that we built on the microservice deployment course. I love that course, microservice deployment. But it's horrible as well in that, well, you've got to run, just to get quite a basic system running, you've got to run 10 virtual machines. I mean if you're at the start of the session, you've just got one chapter to go or something, you've got to spend like half an hour starting up every single machine and getting everything working. It's obviously untenable to do that in real life, but for training course, it's what you have to do. You got to keep things simple, so Docker's a perfect solution for that. So that's, I think, going to be the core of this course is we're going to make that production system. We're going to manage it through Docker. So-
Matt:Is that the vehicle tracking?
Richard:Yeah, the vehicle tracking system.
Matt:Interesting concept, and quite a nice sort of case study really, I think.
Richard:Yeah, it works well, so that's probably what's going to take the time. It might be that I release ... I think I said this on the last podcast, so I'm really just repeating but, I think it might be that I'll just do a Docker 101, which will take me two days to record. Very basic and will not be amazing, but it will get everyone started and then we can move on. The huge problem I've had, and I need your help on this, is Docker is Linux only. That's a simple fact because Docker is all about sharing a Linux kernel with containers. So the way it always works on Windows is, you install a virtual machine. Not a problem.
I've discovered, luckily through chance, I just upgraded to ... We record on Windows for historical reasons. My development laptop is a Linux box, and I've just had endless problems installing. I've discovered that, luckily because my recording machine has just been upgraded to Windows 10, a completely different process for installing Docker on Windows 10. Windows 10 Professional as opposed to Windows 10 Home. I didn't even know there was a Home and Professional. It doesn't tell you that on start up anymore. Now, we have a corporate subscription basically for Windows, so we're on the Pro. I didn't realise that what I'm doing on my recording machine is going to be totally different, to I'd guess 80% of our customers.
Matt:If they're using Windows Home.
Richard:So, this is something I've been kind of kicking around in my head this week, and I want you to be the arbitrator on this. We've always, I think on every single course we've ever done at VPP, we always take you through the installation steps in detail. We really care about that. I mean we don't want a flood of support calls basically. We want you to be able to do every step that we've done on our ... when we were doing it. I'm kind of thinking, to record, I would have to record it on a Mac. I'd have to record it on a Linux box, on a Windows 10, Pro, on a Windows 10 Home, all Windows. I'm not sure now. We've got to the level of using Docker. A large part of me is thinking anyone watching the Docker course is at a pretty good standard of being used to dealing with these things. I'm sort of tempted to say, "There's the installation guide. Go off and do it." Obviously give us a support call if you have problems.
Matt:I guess if we go down that route, if we find we're getting inundated support calls, then we go back and record a installation chapter. Yeah, I mean the Hadoop course was the first one where we ... Again, the Hadoop course, the version used for Hadoop, we were using, you had to do it on Linux. So, we went through the process of showing you if you're a Windows user, it was fine if you're a Mac user. If you're a Windows user, how to install a virtual machine, how to then install Ubuntu on that machine. And actually, what we learned from that, from the support calls at the time was that some computers are not capable of running those machines because of the hyper…...
Richard:Yeah. There are extensions in to, in particularly Intel chips for virtualization. Now, I've got a very weak development machine almost by design. I don't like having an uber fast machine for development because that kind of puts me at an advantage that I don't want to have. I'm lying. I'm just too mean to buy an expensive machine. If it were for gaming, I'd have the biggest rig imaginable with water cooling and everything.
Matt:For those who don't know Richard, actually he does have that but it's got to do with music technology rather than gaming, but anyway.
Richard:No, I actually use my music computer's actually my development machine as well.
Richard:And it's quite underpowered. It's actually an AMD chip that I've got, not an Intel chip, so what I'm not clear about at all is, I think in theory, I should be having problems running these virtual machines performantly. It seems okay actually, but you've hit the nail on the head there. The problem with virtualization is yeah, it's incredibly resource-hungry, and we don't know what problems our users are going to face.
Matt:I guess the other alternative, and I don't know how practical this is, is to say, "Well, if you're going to do this course, expect to be doing it on some sort of cloud infrastructure like Amazon Web Services. Bear in mind that you're going to therefore have to pay for that if it's not part of their free tier."
Richard:Well, most people doing Docker, I think, would've done the cloud deployment course, etc. which was quite a ... You're looking at probably $20 spent with Amazon to do that course, for the things like load balancers. Quite expensive. This would be on a single EC2 Instance and you'd do it on the free tier, so.
Matt:Maybe that's the way to go for this one. Something just to keep at the back of your head, and I have no idea if this is going to be useful or a complete red herring, but I believe that it's currently in beta and what will be coming out in one of the future Windows 10 updates, possibly only for Windows 10 Professional, is something called the Windows Subsystem for Linux feature. I don't know if you've heard of this.
Richard:Oh, I haven't. But I know it's going to cause me pain. I can feel it.
Matt:I've only glanced at a couple of things about this. It seems to be actually, it's not about, well no, it allows you to run certainly Ubuntu under Winux, I'm sorry, under Windows without having set up a separate virtual machine. How they've implemented it, how would that work I don't know. They're talking a lot about it being part of the creator's update for Windows. I'm not really up to speed with any of that stuff, but it's something to be aware of. That it may, in due course, become easier to run Linux stuff on Windows. But it's certainly not there right now, and it's certainly not in every version of Windows.
Richard:Also, there’s Hyper-V in my version of Windows, which is ... It's a hypervisor, so you don't need Oracle VM Box necessarily to do Docker development. So, this is nasty and it's not necessarily our expertise area and we care a lot about ... I mean I always have in my head somebody excitedly starting a course and when you can't even install the basic software, we're going to get the blame and the course will get binned, and it's a shame.
Matt:But I'm looking back and chuckling to myself, if you go to our Java fundamentals course, we show you how to download Java from Oracle's website and how to install it, which is two clicks. I mean we don't ... A customer who's got as far as, sorry one of our learners, has got as far as learning about Docker, yeah they shouldn't need that I would expect. I guess we'll see what support calls we get.
Richard:Absolutely. I'll keep thinking about that one. It's a bit difficult, but just talking about support, we normally do kind of 10 minutes on future developments for the business. I realise that if you're tuning into this podcast because you want to listen to all things Java, this isn't necessarily the sort of thing you want to hear. But I know a lot of customers listen to the podcast. It's worth doing sort of Virtual Pair Programmers news. And it's been on our radar for some time that we could do with improving the way we do support, and I think this is a good forum for discussing that.
So I mean, my starting point is I think support is one of our best marketing functions. When we help somebody complete a course successfully, we've got a friend for life there, and they're going tell other people. But at the same time, I've got to tread very carefully here because I'm talking publicly, but we are a small company. If we're working on support calls all day, we're not going to record any new courses. So, we've got to get that balance right. I think what we did when we moved to subscriptions two years ago, we were a little bit, we were quite firm in basically saying, "If you're a subscriber then support will be very limited."
Matt:I'll just add in, a lot of our customers would've been subscribers and won't have been customers prior to that… because in order to be a customer who wasn't a subscriber, you have to have been with us for more than two years. And at least half of our customer base have joined us the last two years. So it might be useful…. just a bit of history, when we actually launched Virtual Pair Programmers, we were charging a reasonably high price for each course. The idea being was, what you bought was the ability to download and keep this course forever, but also the ability to contact us when you got stuck.
That was definitely, yes, a big selling point is that unlike if you were buying a book or if you were even going to a face-to-face course, actually you could come back to us six weeks later and say, "I really don't understand this point," or ... And I guess that's what support was about. It was about I haven't understood something you have said, or I've tried doing this and I'm getting some kind of error that I can't solve. They would give examples. And we weren't ... I guess, yeah, maybe when we moved to subscriptions, part of the pricing model for that was that we would not be able to afford to provide that level of support.
Richard:Yeah, and we're going to have a lot more subscribers than we had purchases, so we would just be overwhelmed with support calls if we gave that level of support. I think what we did, perhaps we went a bit too far, almost threw the baby out with the bath water. Does that phrase travel? We kind of lost the fundamental a little bit. So, for example, if you're a subscriber and you have a technical problem, you can't easily raise a technical support call. Actually the way around it, I'll say if ... You're going hate me for doing this. I could feel it, but-
Richard:Anyone listening to this cares enough about us to listen to us, so the way around it was people go on and say, "Well, I bought a DVD course," and that kind of gets you through the process.
Matt:We haven't sold DVD courses for at least three years by the way, but you can still put it in.
Richard:Yeah, so it's a way around. And actually, it's a huge thing that, as I said, if somebody started a course, and I mean the classic problem we have at the minute is the old courses use older versions of Tomcat. There's huge problems running Tomcat on Java 8, masses of problems. So I imagine a new subscriber comes in, starts that course, can't even get Tomcat running. They don't see an easy way to contact us through the site. I mean it's not that difficult, but it's certainly not ... we're not welcoming it. And they give up, unsubscribe, and we've lost a good friend forever. So, I think we need a better way of getting that balance. The obvious idea is to open up the support, make it more forum-like. An open Q&A section for every course, for example, would be quite welcome.
Matt:Yes. To be fair, we do have an internally built system that we use for managing our support calls, so although there's no public website for that, if you raise a support call, you'll get an email. You can respond to that email. It goes into this system we've built, but that actually means we have the history, at least for the last three or four years because we did change the system. I don't know if we have the old database, but we certainly have the history for the last three or four years of all the support calls that'd been raised. And one of the things that we probably should be doing is going through that and pulling out some of the more common questions and answers and using that as a starting point for this.
I know you've used the word forum and yes, that is what it's going be. But I'm picturing here that actually when you're on a course page, there'll be a link to the questions and answers for that course. And actually that you won't be able to post in to that forum, but if you raise a support call, which we're going to make easier.
Richard:Oh, I would like to make it open.
Richard:So, it would be something like ... Because it gives an easier route for a customer to-
Richard:With more direct, so if anyone posts anything offensive ...
Matt:Well if, yeah.
Richard:You'd need an account to do it. So, you post something but that can also hook it in to the support system, so there's a formal ticket raised against it maybe, I don't know about that. But I've done a little bit of work investigating this. The common software now for doing forums is Discourse, which is Jeff Atwood's. So, Jeff Atwood was the founder of Stack Overflow. He then moved on for strange reasons. He moved away from Stack Exchange and he started his own project to improve support forums. It's called Discourse. It's one of those things where you can pay them quite a lot of money for them to host Discourse for you, or it's open source, so you can download it and host it for yourself. So, my idea was if we could get Discourse and somehow embed it. Because we don't want to reinvent the wheel, we do too much of that. So, we'll use Discourse but embed it, I think it's possible to do that, on to the course pages.
Matt:Have I seen Discourse in terms of certain websites? If they, say, got a news article on, and then people are commenting on that news article, they can use that as a way to do it.
Richard:Yes, exactly. It was Disqus, wasn't it? That was common way of doing it, but Discourse-
Matt:It's taking over that.
Richard:... it's being used in quite a lot of places to take that over. So it's the embedding that's difficult, but just as a starter for ten, I wanted to see if I could get Discourse up and running. I mean have some interesting parallels with the Docker course because they give you a Vagrant file. I confess I have done no production work in Vagrant.
Matt:I was just about to ask, what on Earth is Vagrant?
Richard:It's been on my radar for a long time. So, if I back up a little bit and talk about what the ... We all know this problem. You need to run some software and before you can run that software you've got to install a database, or you've got to install a Java virtual machine, or you got to install something, configure things, environment variables, put this there, put that there, blah, blah, blah, blah. You do all this stuff. You can't remember what you did. Awful.
On the cloud deployment course, if I go back to that, it was always on my to-do. Just to work through that course, you've got so many things to set up. You got to start virtual machines, and you've got several repositories. Very difficult to work with. So what Vagrant does, it's a lovely way of working really. Very, very similar to Docker. So when you download Discourse, you get a Vagrant file. As long as you've installed Vagrant, which is an open source product managed by commercial company, usual thing, but as long as you've got Vagrant installed you just go to the root of that repository that you've just checked out. You type 'Vagrant up,' and it downloads and starts a full virtual machine, completely configured, all that software that you want to run. So, it's just virtual machine manager really. Actually, if you're using open VM Box-
Richard:If you're using VirtualBox from Oracle, then it just talks to that behind the scenes. So it fires up virtual machines, you get pre-configured images and all the rest of it. It is a lovely way of working. The only problem with it is that's obviously resource-heavy. Everything's a virtual machine. You need a lot of RAM to do this. It's always been on my radar to do it, and that was actually going to be the last chapter of the cloud deployment course. And because that course massively overran, I had to cut it out. So, I've realised just in doing this work that we should definitely do a course on Vagrant. And effectively, end of the day, it's the same thing that you're doing with Docker. Docker's just doing it in a more lightweight way in that your containers are not entire virtual machines, they're just processors. And all those processors are sharing one kernel, so it's the same principal, same results, but sort of more resource-effective. So Vagrant, I think, is going to be a course in a few weeks.
Matt:Okay, and that's also about how to create your own Vagrant files, so if you've-
Matt:... created your own software that you want to distribute, people can do it.
Richard:Yeah, and it's dead easy too. The Vagrant files' written in Ruby. Bizarrely. And it does look pretty ugly. The Docker equivalent is a nice text file. Anyone can read that. The Vagrant file is nasty, but it's a lovely principal. It's just something that's not crossed my bows up until now. So, it was in doing that research for the support system we might do that forced me to do that. So, the point of that then is we're going to improve the front end of support. We'll keep the back end as it is, but we'll make it friendlier, more accessible. But we'll also make it clear. If you're a subscriber, we can't have longer extended discussions with you about the architecture of your system. That's your job. Our job is to make the courses understandable. If you’ve got to chapter two and something's stopping you getting to chapter three, we absolutely need to be helping you. That's always been true. I just don't think we solved that very well in the last two years or so.
Richard:So, we'll improve that.
Matt:That's absolutely going to be an improvement that will hopefully then be coming in the next couple of months?
Matt:We'll get to with it.
Richard:Sounds about right.
Matt:That sounds good. I'm going to say, does that bring us full circle because Vagrant, in a way then, is a way of making it easier to distribute your application-
Matt:... which is what Web Start was when ... Or have I missed some-
Richard:Sort of. Sort of. Web Start just gave you a Java environment.
Matt:I was trying to give us a nice round up actually. To end the podcast.
Richard:That'd be a nice round. What we could do, so a big problem we have at the minute is a lot of people trying to do Java web development. They're on Java 8. Doesn't run with Tomcat we give you. Actually, it doesn't run with a lot of Tomcats. Really for training courses, we should just give people a Vagrant file. And then, that Vagrant file downloads a full environment, completely configured for that course that cuts out everything you don't need to know for that course. The problem is you’ve got to know Vagrant. You've got to install Vagrant, and it involves virtual. So, we have come full circle in the ... Yeah, that can be more complicated. Just installing Tomcat. So yeah, in future, certainly for courses like cloud deployment. If I had my time again, I probably would do that using Vagrant, but I'm going to do it the other way around. We'll put Vagrant on the end of it, and say, "Hey, this is how we could've done it. Look it's all done with a click of a button now."
Matt:Okay. That's something for us to think about.
Richard:Not much Java on this podcast, and which I feel a bit bad about, apart from that political discussion about Java. But in two weeks time, we are going to the Amazon Web Services Summit in London. We are that important. We're special guests of Amazon, and we're planning to record a podcast from there. It's going to be 'All Things AWS,' 'All Things Cloud,' possibly. So we'll talk about the alternatives to AWS. We're not fanboys of AWS. We're just users. And yeah, we'll report on any developments that we find there. So, we'll try to make it bit more technical, the next podcast.
Matt:Okay. There's the challenge for us then. Thank you for that.
Richard:So, we will see you in "two weeks time." Every two weeks.
Matt:Hopefully, it'll be two weeks. We'll see how we go for the two weeks because we're in London. We're based in the north of England. London, for those who don't know, geography wise is in the south, so-
Richard:Oh, it might as well be the other side of the world.
Matt:Well, it's just ... We'll be taking with us some mobile recording equipment with us. Just assuming everything goes to plan.
Richard:Oh, the sound quality of the next one will be way inferior to the sound quality of this one. It's not going to be ... It's going to probably be better.
Matt:Well, if you've stuck with us, thank you. And we'll hope in a couple of weeks at the next one.
Richard:See you next time.