Huawei 5G Security Ban – I mean the US-China Trade War!

Huawei 5G Security Ban – I mean the US-China Trade War!

Being someone who has a reasonably good grasp of technology, I found it very strange that Huawei is banned from selling 5G networking technology into the US market. The official line from the US government was “China could have back doors into these systems which would create a national security risk” – that’s a great way of scaring people in the general population, but it did not make sense to me from a technical standpoint.

In practice, its quite challenging to sneak stuff like that into a system and hide it away, or to look at it another way, it’s quite easy for the buyers of the equipment to apply more diligence in its inspection and security assessments to avoid such a risk. So I have always had my suspicions about the real reason.

So turning the cynical part of my brain on, I start to think about the world stage for big Chinese tech companies, because they are beginning to gain ground globally, or at least are getting big enough to challenge the USA supremacy in the tech business. The USA is accustomed to being the only home of tech giants. But with the rise of companies like Huawei, Alibaba, and a few other rising stars, it is probably reasonable to think that the US might be getting a bit concerned about their global market stronghold. One aspect of the US economic domination comes from its ability to stay ahead of the game in tech, with the glitz and glamour of the Silicon Valley showboat (the Hollywood of the tech industry) being the shining source of all innovation in tech – at least that is what the marketing suggests.

Anyway, I read today that Donald Trump suggested in recent talks with China that Huawei 5G issues could be part of a deal concerning the escalating US-China trade talks! And this comes after the US declares a severe national security risk if Huawei is allowed to sell their technology for use in 5G networks and strongly encouraged its allies to follow suit and not use their equipment.

So what happened to the security risks then?

If you think about it, had Donald Trump instead said, don’t by Hauwai 5G networking tech because Hauwai are getting too big, and they have essential patents on some 5G technologies which means they will get a bigger slice of the pie from the global 5G roll-out, and we don’t like the fact that Hauwai is not an American company. With that positioning, I don’t think Donald Trump would have gained the support, either domestic or internationally, so it seems the threat of national security is a useful device to gain popular political support for something that would otherwise look somewhat underhanded.

I am generally in agreement with the idea that the US (and other countries) should fight for their rights and position in the global market; there is nothing instinctively wrong with that, and after all, I thought we are all aspiring to be in a free and fair global market. But there seems to be something sinister about misleading the world stage in the pursuit of this agenda and using your power and influence to force other countries to follow suit.

Now in the midst of this, you now have the likes of Google crippling the Android OS capabilities on Hauwai mobile phones. Is this an opportunity for Google to enhance the market opportunity for its range of new Pixel smartphones using the (eh-hem security threat) DT directive! There is that cynicism again! It is a dangerous game to be playing, and I would not under-estimate China’s ability to go-it-alone if they wanted to. There is an unhealthy belief in the US psyche that China needs US tech – I am not sure that’s true, but I am pretty sure that western tech needs China’s manufacturing capabilities and economic labor force.

The quality of tech coming out of China has been steadily getting better, and I am sure China is more than capable of building its own tech, every bit as good as what’s available already if commercial companies are supported/encouraged by a highly motivated government who have a political point to make.

I don’t fully understand the politics or culture in China, but one thing is for sure, over the last 50 or so years, the West has benefitted hugely from the low labor and manufacturing costs in China, huge companies like Apple have flourished because of this very enabling economic model. But as a result of this western consumption, there has been a lot of wealth created that has been flowing towards the far east, because we cannot get enough of the bargain basement stuff that we all love to have.

China is is a closed shop, it seems both complicated and prohibitive for the West to do business in China, easily at least, in the way we are used to at home, so it does feel like very one-way traffic, but you can’t help thinking that we must have anticipated this time would come. I do believe it is a good thing that China is challenged on this point, but I am not sure an outright and aggressively instigated trade war is the best way to go about this, trade should always be mutually beneficial.

Having a challenger to the US dominance in the tech area is a good thing as far as I am concerned, competition is essential, and I expect that the US could quickly lose its stronghold in this area. A country with the size and economic scale that China has, who is willing to make the big bets on rising global tech companies will create competition that to date, the US has thus far enjoyed almost worldwide exclusivity.

It will be interesting to see how the US-China trade war plays out; I expect this will start to dominate the headlines and will have an impactful effect on a lot of people globally. But the new headlines seem a welcome change, giving us in the UK at least, a much-needed distraction from Brexit!

This content is published under the Attribution-Noncommercial-Share Alike 3.0 Unported license.

Are you a Software Developer or Software Engineer?

Are you a Software Developer or Software Engineer?

I recently answered this question on Quora and thought this would make a good blog article, I think the question is quite interesting for anyone who writes software for a living.

Over time, software developers have become specialist language developers, in other words, you get .NET developers, C++ developers, Java Developers, etc… and there are several reasons for this happening. It seems like every week there is a new language that promises to be the solution for all the problems with programming languages that have come before, or a new design pattern that emerges because of a new capability in a given language. On top of that, languages have become so complex and so a fair degree of specialization is required to make good use of what is available.

The problem with this programming language specialization is the focus tends to shift from business focus to language/technology focus and this is what a lot of traditional software developers have become. For example, .NET developers want to use the latest .NET x feature, or C++ developers feel they must use the newest coroutine capability in C++20. Suppose I need to implement a function that takes a file and transforms it into another file, using std::filesystem instead of POSIX filesystem functions, that may well be exciting for me as a C++ developer getting to use some of the new C++17 features for the first time, but the business value of my output is no different. In truth, the business value I deliver would be lower because it will take more of my time while I figure out that new language feature.

Software developers tend to focus on their specialization, “I am a C++ programmer” or “I am a .NET C# developer” is how someone might describe what they do.

Software engineers are a different type of developer. The language one might use is really just a tool, an engineer might have tool(s) of choice, but actually care more (a lot more) about the needs of the business and the problems they are solving, than they do about using the latest language feature and the newest compiler to solve the problem. The output of a Software Engineer is always more aligned with business value delivered than that of a Software Developer (using the above definitions).

In my experience, quite a large portion of software developers get bored of creating the same old business value stuff, and are not “fulfilled” either personally or from a resume/career progression point of view, if the focus is not on using latest compiler features, patterns or new things that will define their skill set. This is because they are more engaged with the technology and specialization domain than the value they are supposed to be creating. The second most common reason for software developers to change jobs (the first being the pay, of course) is to take the opportunity to work on that new cool thing that will excite them. If you fall into this category, then you are a software developer, and you will ultimately be a commodity to the organizations you work for.

Being an engineer is much more about being engaged and aligned with your companies strategic aspirations and goals. If you find yourself believing in your companies mission; and you naturally interact with customers, and immerse yourself in the problems your customers are facing daily – and – you understand the overall systems architecture – and – you are employed primarily to write software; you are almost certainly a Software Engineer – the type that all good software companies aspire to hire.

A good way to think about it is this. If the product you work on is “your product” and you have to not only write it but support it, sell it and evangelize about it, these are the things you would do as a software engineer within a company. Ok, you might not go out and do the selling directly, but you would certainly have a stake in the success of sales activity.

Now you cannot just change your title from Developer to Software Engineer and expect to get more job opportunities or better pay! If you are going to call yourself a Software Engineer, then you need to exhibit the characteristics of one, people that look for software engineers are experienced enough to recognize them, and see through the ones that are only pretending/hoping to be an engineer.

More and more companies are looking to hire Software Engineers and not Software Developers, be honest with yourself and ask yourself the question: –

Are you a Software Developer or Software Engineer?

This content is published under the Attribution-Noncommercial-Share Alike 3.0 Unported license.

Microsoft says – Don’t Use IE!

Microsoft says – Don’t Use IE!

So I read this post and all the comments and think to myself – no one seems to be saying it!  So I will… (obviously)

For more years than I can remember, Microsoft has had a habit of pushing “the enterprise” down its own path, with an obvious (to me anyway) lock-in strategy.  IE over the years has shown this up time and time again.  I thought Chris Jackson’s comments were a little bit dismissive of Microsoft’s responsibilities here, and I wanted to state that the reason why IE/Edge is still required by many customers is that Microsoft’s platform, especially Microsoft’s development environments have made use of the IE-specific quirks, leaving vast swathes of enterprise-developed apps depending on IE. 

Even worse, so many ISV’s have jumped on the “easier to develop” enterprise software platform (started with VB back in the day, right through to .NET and its kin today) building software for sale that organizations have purchased and gotten tied into.  Be it, ASP.NET, or ActiveX or Silverlight (what a mess that was) the numerous browser quirks and non-standard, undocumented esoteric behaviors in the Microsoft browsers.  I think there was a time when Microsoft was trying to be the standard browser of choice, but failed miserably at it.  I do like Chris’s advice though, and as someone that is responsive web software development, I wish I did not have customers DEMAND we support IE11 because that’s their standard browser, it’s annoying and frustrating and not of our own making.  

Three years ago, we relegated development for IE to “best-endeavour” only, that means we will put reasonable effort into fixing anything obvious but have drawn the line and doing IE/Edge specific workarounds/hacks for our software. That has sadly left some of our customers stuck with different browsers for different applications, but we do not accept that is a problem of our making, we used to feel bad when our customers would tell us “well you are not Microsoft so fall in line” – not anymore! 

Now before I start to sound like I am hating on Microsoft, I must make clear that in recent years I think Microsoft has done a remarkable job, a remarkable turn-around even.  Windows 10 is orders of magnitude better than any Microsoft OS before it, Edge is not terrible and mostly works, although it’s still quirky. And hats off, O365 is a winner – very nicely done team Microsoft. 

Dear Microsoft, if it were up to me…

  • You have the capability, the developers, and the financial resources, probably more than most other software companies in the world, go and build a world-class standards-based browser, do for your browser what you already did for C++
  • Or, hurry up and develop your chromium-based browser and get shot of IE and Edge as soon as you can.
  • Go and help your customers remove their technical debt in relation to IE, its not their fault entirely, you created the environment – help your customers fix it

This content is published under the Attribution-Noncommercial-Share Alike 3.0 Unported license.

Why does C still exist, when C++ can do everything C can?

Why does C still exist, when C++ can do everything C can?

This was a question asked on Quora and the top voted answer was airing on the side of it being cultural or personal preference. I don’t think the answer is culture or preference; there is an excellent reason why both C and C++ exist today. C++ is not a good alternative to C in some particular circumstances.

Many people suggest that C++ generates more inefficient code, that’s not true unless you use the advanced features of the language. C++ is generally less popular for embedded systems such as microcontrollers because its code generation is far less predictable at the machine-code level, primarily due to the compiler optimizations. The smaller and more resource-limited the target system, the more likely that C is a better and more comfortable choice for the developer, and this is often the reason people suggest that C++ can not replace C, and that is a very good reason indeed.

However, there’s another even more fundamental reason that C remains a critical tool in our armory. Imagine you create your very own new CPU or computing architecture for which there is no C or C++ compiler available to you – what do you do? The only option you have is to write code using some form of assembly language, just as we did in the early ’80s when programming IBM PC’s and DOS, before even C, became mainstream. (yes there was a time when C was more obscure than x86 assembly!) Now imagine trying to implement a c++17 standards-compliant C++ compiler and STL library in assembly language, that would be a daunting, and unimaginable task for an organization of any size, right?

On the other hand, a C compiler and a standard C runtime library, while still not an insignificant effort, is a hell of a lot more achievable, even by a single developer. In truth, you would almost certainly want to write some form of assembler/linker first to make writing the C compiler simpler. Once you have a standards-compliant C compiler working well enough, then a vast array of libraries and code written in C becomes available, and you build out from there. If your target platform did require a c++17 standards compliance c++ compiler, you would write that in C.

The C language holds quite a unique position (possibly only comparable to early Pascal implementations) in our computer engineering toolbox, its so low level, you can almost visualize the assembly code that it generates, just by reading your C code which is why it lends its self so well to embedded software development. Despite this though, C remains high-level enough to facilitate the building of higher-level application program logic and quite complex applications. Brand new C++ compilers would most likely get written in C, at least for early iterations, you can think of C as an ideal bootstrap for more significant and more comprehensive programs like an operating system or a C++ compiler/library.

In summary, C has its place, and its hard to see any good reason to create an alternative to C, its stood the test of time, its syntax is the founding father of the top modern-day languages (C++, C#, Java, JavaScript, and numerous others, even Verilog). The C language is not a problem that needs to be solved, and the C language does not need to be replaced either. Like oxygen, C is old hat now, but it works well, and in the world of software development, we still need it.

This content is published under the Attribution-Noncommercial-Share Alike 3.0 Unported license.

Virgin Media – The Worst Customer Experience Ever!!! No Seriously Ever…

Virgin Media – The Worst Customer Experience Ever!!! No Seriously Ever…

I just had to write about this one…. I am a VirginMedia customer, I have what they call the full package. Telephone, 200Mb broadband and the full house TV, currently paying around £145/month. I see on their website that I can upgrade my broadband to 350Mb for a monthly cost of an extra £0.14/month … ok seems reasonable, so I upgrade my package on line and I get an email confirmation with my order reference WS5320928 – that was on the 31st March 2018. By the 3rd of May, nothing, so I call them… and they tell me they have no such order on my account – and get this – because its an on-line order they have NO WAY of looking it up! WTF!!!!

OK, so I say thanks and I order on line a second time. And again, I get a confirmation email and a reference number WS5393978 and I wait again.

Today another month later… I call them. I get through to a lady after 8 minutes trying to navigate their press one for this, two for that telephone system – 8 minutes….. and get told I am in a queue and will be answered in less than one minute… 4 minutes later I am talking to a person…

Now you have to remember I am upgrading my broadband or am trying to at least. So, I tell her the story so far and offer the second order number for her to look up – same response, oh thats a web order we cannot look that up! Ok I say, forget the web order lets do it over the phone….

So I ask, I would like to upgrade my broadband from 200Mb to 350Mb please… ok she says, lets get that organised.

Oh, I can see on your account its flagged for a replacement Tivo box v6, would you like me to set that up.

So I say, oh do I need it? Well yes because the box you have is no longer supported.

Oh ok, well sure, I don’t mind if its needed. Ok so she sets this up, struggling with “codes” on the system she puts me on and off hold three times, by now I was 20 minutes into the telephone call.

Eventually she says the work order is set up, the new Tivo 6 box will be delivered to you on Saturday and it is a self install. Ok, fine I said.

Ok, lets get the broadband set up… more codes, more placing on hold, taking off hold… then she tells me…

I can see you have a SuperHub 2, you will need a SuperHub 3 for the 350Mb, there is a charge for that… err ok, how much is that I asked. Hold on, let me find out…. back on hold again… a few minutes later, hang on I am trying to find out, I cannot get the system to accept these codes, there is something wrong, let me go and talk to my supervisor… back on hold.

Now I was left on hold…. she never came back 20 minutes passed and still on hold, when I looked at the call timer on my phone I was into the call for 52 minutes!!!! I seem to have been left dangling, so I hung up.

Now I was a bit pissed off at this point, but things do happen. Alright, take a deep breath and hit the redial button.

Another few minutes battling through their IVR and I am back in a queue, less than a minute again, and within 2 minutes I was speaking to a person.

I got assertive and said “DO NOT PUT ME ON HOLD” then proceeded to tell a gentleman called Erwin the story. He of course was apologetic and was very polite.

Now you have to keep in mind what I am trying to do is upgrade my broadband speed, so he said, well I am sorry you are having trouble I am going to lodge a complaint! and guess what – put me on hold! WTF…..

A couple of minutes passed and he is back on the phone, giving me a formal complaint number COM102496702 – ok fair enough…

Right back to the broadband then… can I get it upgraded please. So he taps some keys has a look at my account and says, I can see there is a work order for a Tivo 6 box….

Yes that is correct, the last lady told me my account was flagged for a free upgrade of the box, and when I asked if it was needed, she said that it was because my current box is no longer supported.

Ok he said, but I have to inform you that there is a one-off charge of £99 for the Tivo box….

Hold on, the lady before told me it was being provided for free, I don’t even want the thing – ok he said, lets take that box off your account… hold on and yep… back on hold again…

A few minutes later, he is back on the phone…

OK Mr Sweeney, that’s all done for you, is there anything else I can do for you?

Err, yes, I would like to upgrade my broadband! But I thought the other lady said my current Tivo box is no longer supported?

No it will be ok, let me have a look at the broadband upgrade for you… so you want to upgrade to Vivid 350 – is that correct?

Yes, I said, that is correct. Ok let me do that for you. So the package price, oh hold on, did the last lady tell you about the international package on your phone offer?

Yes she did, she told me that because I was changing my package I had to have a new contract and your current phone package is no longer available, you need this new one. So yes, that is find just do it… so with the upgraded broadband how much is the package?

Ok, (more key tapping), hold on… and yep… on hold again…

A couple of minutes later, he comes back and says, it is actually a lower monthly price, with the new package your monthly cost is £124/month.

Ok that is fine. Then I ask, the previous lady told me that I would need a SuperHub 3 to get the 350mb speed, so is that included?

No he said, that is not included.

Ok, so how do I get the 350Mb speed from the 350Mb service I have just ordered?

Well you can upgrade the Hub to a SuperHub 3 but there is a one-off charge for that…. (and before I can ask how much), he said, but I cannot put it on the same order, you will have to ring back after your broadband is upgraded….

I said, so I will get 350Mb from my current hub?

Well you might get some of it! WTF – by this time I was thinking I am dreaming, this is a F*&^ing joke…

I said you are joking right? this is the point at which I started to raise my voice and talk to the man on the end of the phone like he was a 5 year old child.

I AM NOT RINGING YOU BACK, I SIMPLY WANT MY BROADBAND TO BE UPGRADED TO THE SPEED YOU ARE ADVERTISING ON YOUR WEBSITE. DO NOT PUT ME ON HOLD JUST SORT IT OUT, I HAVE NOW BEEN ON THE PHONE FOR OVER ONE AND A HALF HOURS…..!!!

I am very sorry Mr Sweeney, hold on… and yep, back on hold again….

A couple of minutes later, he is back, ok I am going to include the SuperHub3 without charge, but there will be £5 delivery charge…

Ok I said, that’s fine. So let me confirm…

  • You have taken the Tivo 6 box off of my account.
  • I have upgraded my broadband from 200mb to 350mb
  • You are providing the Superhub 3 with no charge and…
  • I will need to pay a £5 one off delivery charge for the Superhub 3 which will be delivered by Yodl

Is that correct?

Yes he said… (so I let off a sigh of relief) ok, let me just activate that order…

Ok, can you send me an email confirming what you have told me BEFORE you get off the phone…

No I am afraid I cannot, it is an automated system, you will get an email once I have completed the order.

Reluctantly I said OK…..

Now Mr Sweeney, I will not be able to activate your new service until the end of June….

What do you mean I said, that’s 30 days away, that is ridiculous.

Yes he said, because your monthly bill has been reduced you will need to wait until the start of the next bill….

I will be honest, at this point I had completely lost the will to live so I just said ok, I wanted to get off the phone and go and kill myself.

So for the folks at Virgin Media you have single headedly destroyed my day, decimated any belief I had in your brand. Your broadband service is technically good but you customer service is diabolical beyond anything I have experienced in any situation ever. I look forward to hearing from someone about my complaint, but I won’t hold my breath, I will instead put at least as much time I have wasted today into sharing my experience on every social media channel I can…..

This content is published under the Attribution-Noncommercial-Share Alike 3.0 Unported license.

So tell me team…. “How Long Will That Take?”

So tell me team…. “How Long Will That Take?”

I was inspired to write this blog post in response to a post I came across today on LinkedIn about sizing software projects. (link below). Sizing software projects is the thing that most everyone gets wrong, its hard and almost impossible to get an accurate estimate, why is that?

Well apart from scope creep, budget changes and all the usual business variables mentioned by Patrick in his blog post, developers and product teams will never be consistent in their output, not even if you average it out over a long time which is what SCRUM/other agile methodologies suggest when trying to establish velocity – that simply does not work, it is a fallacy. Writing software is an iterative and creative process so “how someone feels” will change output, and I am not talking about how someone feels about the project or work, I am talking about how someone feels about their cat dying, or their wife being pregnant or political changes or the weather, or the office banter or how unwell/well they feel today, in fact “life” guarantees this. So I am going to be a bit outrageous here and suggest an alternative way of thinking about this. Let us start with asking the most important question – “what is the point of estimating”? there are only two possible answers to that question….

1. You are going to undertake some work which you will charge your client for so you need to know what to charge them.

The only possible way you can give your client a fixed price for work that is essentially a creative process is by substantially over-pricing the work estimate and giving yourself lots of fat in the deal to give you the best opportunity of making a profit at the end of it. If you think that you can ask a team of developers to tell you how long it is going to take so you can make a “fair” markup you’re deluded. The best option you have in this scenario is to work backwards, you need to understand the need the client has at a high level, then you need to establish the value that your customer is getting from the thing you would deliver, then you put a price on it, you are looking for the best possible price the customer is willing to pay, you should not at this point be trying to establish “how much will it cost”, you must be asking the customer “how much are you prepared to pay”. Once you have a number, now you can work with your developers, but instead of saying “how long will it take” you are asking “can it be done in this timeframe…”, that may seem a subtle difference but it is actually huge because in answering that your developers will take “ownership” of the delivery commitment and that is what you need to stand any chance of being successful. The risk you are taking is on your team, not the project – if your team succeeds then you and your business do, if they fail so do you.

2. Your organisation wants to know how much and how long this new software thing is going to take/cost so they can “budget” and control and cost overrun.

The reason to budget is because managers and finance people (and he people that own the actual money that gets spent) generally need to *know* how much it costs in order to feel like they are doing their job. This really comes from an age where output was quantifiable (manufacturing for example), but creative IP output is much harder to quantify because there are so many variables that are outside of your control.

Think about this, you wake up one day and have a great idea to write a piece of software that will change the world; you believe it is going to make you your fortune. You are so confident that you leave your day job, set up your business and your first day you sit down and start to change the world – what is the first thing you are going to do?

I am going to bet that you will NOT crack open Excel and start to do a time estimate and a budget – Instead you will most likely start making your software. So you get on with it, now project forwards, you have created your software and you start to sell it things go well, in fact so well that you have to hire a manager or two, then you go and raise some funding to go global with your idea. Now something important happens, instead of spending your time making that thing you believe in, now the people who invested money (which may well be yourself) will want to protect that investment so they put management controls in place, and when the question “To get this thing to the next level, what do we need to do” is asked of you, and you answer “We need to build X, Y and Z” the dreaded question comes – “How long will that take?” which roughly translates to “how much will that cost”, this is because the people asking that question are in fact trying to protect cash and de-risk the investment – they don’t believe in the thing you are building in the same way that you do, the thing is just a means to an end – profit (which by the way is a good thing).

Going back to that first day, if you had tried to budget and determined it was going to take you six months before you could sell your first one, and after six months you realise you were not even half way there and you had another 12 months to go – would you stop? Well you would make sure that you could pay the bills and survive of course, but if you decide to stop, it would not be because of your budget, you would stop because with hindsight you no longer believed the idea was as good as you first thought – otherwise you would plough on regardless right?

So back to the boardroom then, and the “How long will it take”? question. Well the answer to that question should be, “I have no idea – how important is it”? Because either its important and it has to get done or its not that important.

You would be a little more committal than that but you get the idea. If you assume that an acceptable level of estimating effort was going to be 25% of the overall development effort (which has been my experience in software development) and if you have a thing that needs to get done because its strategically important for the business to flourish – then how long it takes is irrelevant, its either strategically important and it gets done, or its not. So if it “just has to get done” what on earth are you trying to estimate how long it will take for – just get on with it and use that 25% for making the thing you are trying to make – just like you did in the first six months of your enterprise.

You need to ask the same question about how important is it and what is it worth to the business, this is the question that the people trying to de-risk are not wanting you to ask, because they will find that question as difficult to answer as you will trying to answer the “how long will it take” question. Of course for trivial stuff like defects and general maintenance/tactical incremental development work this does not really apply, but for big projects that have strategic importance the “how long will it take?” question is a nonsense question to ask because any answer you get will be either fictitious or grossly over estimated, and both of these are bad.

If you want to get something strategically important created, hire a great team and empower them to get on with it – if you are making them spend their time telling you how much it will cost to develop instead of developing it then you are failing – not them. As a manager, entrepreneur, director or investor, hire software developers to do what they do best – make software, it is your job to take and manage the investment risk, if the team fail then you either hired the wrong team or you did not manage the business well enough to sustain the effort required to make it happen, asking them for an estimate is just a way of getting a stick to beat and blame them when things are not going well.

I have been managing (arguably very loosely) software development projects and a software business for the best part of 20 years, and I have learned a few things along the way. Perhaps more importantly I have been doing this largely investing my own money, so I think I know both sides of the “How long does it take” question very well.

The article I responded to
https://www.linkedin.com/pulse/software-project-estimation-broken-patrick-austin

This content is published under the Attribution-Noncommercial-Share Alike 3.0 Unported license.