627 karma · joined April 4, 2007
If you're programming a single computer the existing languages and tooling are good. What I'm interested in is distributed compute and compute over heterogenous architectures (CPUs, GPUs, FPGAs, microcontrollers, etc).
For simplicity, let's limit ourselves to the simple case of HTTP-based service-oriented systems (or microservices). The state of the art has us spending a lot of time considering serialization, protocols, communication failures, managing identities, making authorization decisions, routing, etc. Things that should be completely orthogonal to the problem we're trying to solve end up being tightly coupled with our business logic. This becomes exponentially harder to manage as you add languages to your stack.
There is a lot of research around solving these problems. Unfortunately, all of it starts with a formal system that is "declarative" (or at least "algebraic") and doesn't mesh well with existing popular languages and tooling. Personally, I think we need to come up with a solution that lets us keep the existing tools that are good for programming a single component, and use some of this newer technology to build a smarter platform / underlay. The bridge between the existing languages and this underlay would be DSLs. Or, more precisely, "abstract languages" that can be implemented as DSLs in a variety of programming languages and may or may not have their own concrete syntax (think SQL+ORMs).
Sort of vague, I know, but hopefully that kind of makes sense?
Haskell also provides a ton of options for generic programming that provide similar power (still statically typed). GADTs (Generalized Algebraic Data Types) might be of use here. There are also existential types and type classes.
What you probably really want though is a dependently typed language like Idris or Agda. If you're not familiar, here's the one liner: Java generics are types that depend on types (like a List of Bools). Dependent types are types that can depend on values (like a List of exactly 3 Bools). So in theory you should be able to define the type you're looking for here, but I don't know what the concrete syntax would be.
The problem with dependently typed languages right now is that the surface languages and concepts tend to be hard for people to grok. Personally I think meta-programming facilities and DSLs will help with this. Ther are lots of languages heading in that direction.
I do not see how this, in itself, is bullying on Microsoft's part at all. The Apache 2.0 license has a similar mutually assured destruction proviso w.r.t. patent suits. It's one of the reasons that the Free Software Foundation recommends using that license. Is that bullying / FUD?
Either way, the "patent pick" part is more interesting to me. It gives you some protection for stuff you write yourself. Quick story: I was working at a BigCo about 10 years ago and was told I couldn't embed some HTML in a javascript string and dynamically inject it into the DOM because "that was patented" and "we've been sued for doing that before." Patent pick could help defend against bullshit like that (assuming the litigant is not an NPE).
Whatever the case, IV is quite an enigma... founded by the creator of MS Research (which is a great group), funded by Reasonable People, but apparently sketchy as hell. I'm intrigued and will definitely be digging deeper into their story. Thanks for bringing them to my attention.
Seriously though, hopefully there's some mechanism covering this sort of abuse. Even if there's not, if I were MS I would simply not comply. It's civil law, and your behavior is completely unreasonable and does not reflect the any reasonable interpretation of our agreement -- come at me. Besides, what are your damages?
The world isn't fair.
How's this: I've been a student of patent law since the late 90s. I've read "The Economic Structure of Intellectual Property Law" cover to cover. The patent system is a huge fucking mess and we need reform. I used to have pretty idealistic opinions about how to handle patent trolls until I started dealing with the ugly and expensive process of defending a suit. Until reform happens, businesses need to do what they can to survive. This helps.
If it does turn out that Microsoft is only doing this so that they can go and sue people who are using AWS or GCP then I'll change my tune. Until then I'll give them the benefit of the doubt.
Furthermore, if Google/Amazon _did_ follow suit it would be mutually assured destruction for Microsoft to sue AWS / GCP users.
Microsoft doesn't have a stake in the company nor do they provide the company with any assistance..? Unless there's more to the story I think it's kind of a stretch to say that this is a Microsoft operation. According to Wikipedia they've actually _sued_ Microsoft.
The first two times the decision was made above my head.
The third time I was in the C-suite and it was a joint decision. I had a heart-to-heart with our lawyers because I _did not_ want to settle. Our head IP lawyer said he felt me -- he thought the suit was bullshit, would love to fight, etc -- and if we decided to defend he'd be 100% with us. However, his firm was currently engaged in defending another suit with the litigant and it had been appealed through the circuit court in Texas. At that time it was pending hearing by the Supreme Court. That client had already accumulated more than $250,000 in legal fees and there was no guarantee that they'd win. Even if they did win, it was unlikely that they'd be able to recover any of those fees. He estimated total cost of fighting would be between $250,000 and $500,000.
I reached out to friends at large tech companies to see if they had experience dealing with the litigant. I heard back from two of them that they did have experience, and that they settled. Since there was an ongoing case involving the litigant that was already heading to the Supreme Court (and one that had at least as good a chance of winning) we opted _not_ to spend a significant amount of our venture capital fighting an expensive battle that, at best, would cost us hundreds of thousands of dollars and, at worst, we would lose in Texas.
In the end we spent significantly more money on investigating a defense then we actually paid in settlement.
If you're interested in covering the financial costs associated with fighting these suits please let me know. I would definitely take you up on that and fight all day every day.
I'm assuming by IV you mean Intellectual Ventures..? Are they tied to Microsoft? I thought they had _sued_ Microsoft..?
The reality is that this is not FUD. People actually _are_ sued on a regular basis for bullshit like this. Microsoft is indemnifying Azure customers and giving them free access to their patent portfolio for defensive purposes. This should _reduce_ patent suits, which is a _good_ thing.
Google and Amazon should follow suit.
Every large tech company has a patent portfolio. Hell, Google bought Motorola to get their patent portfolio to use defensively in suits against Android.
In my opinion companies should not be punished for using patents defensively. It's really the only viable option outside of a major legal change. So, I think Microsoft giving other people access to their portfolio for defensive purposes is a good thing. It should _reduce_ the amount of patent litigation.
Countersuing is probably the #2 most common response to a patent suit (after settling). It's so common that there's a name for it: "defensive patent strategy." Basically, you file a bunch of patents, but you don't proactively go out and look for infringers. You're just hanging on to them in case you get sued. If you get sued you go and look at the person who's suing you and try to find one of your patents they're violating. This actually works fairly well because the patent system is so broken, and patents are so easy to get, that you can almost definitely find a violation given a reasonably large portfolio (and 10,000 patents is reasonably large).
Unfortunately, countersuing doesn't work against NPEs... and NPEs are usually the ones doing the suing.
1. Uncapped indemnification: this one is pretty simple. If you're sued for using some tech that powers Azure, Microsoft will cover any losses (indemnify you).
2. Patent pick: if you're sued for patent infringement _at all_, Microsoft will let you "pick" one out of a selection of 10,000 available patents to use in a countersuit. This is an extremely common tactic in IP lawsuits, but one that is only available to folks with large patent portfolios (this is what people mean when they say they have a "defensive patent strategy"). For example, Oracle sues Google for infringing patent X, Google countersues for infringing patent Y, eventually everyone settles (or not, heh). Presumably, the patent will actually be transferred to you (you become the legal owner of the patent) for the duration of the suit (I'm sure there are lots of conditions here).
3. Springing license: "non-practicing entities" (NPEs) are a _huge_ problem for tech companies. They're also known as "patent trolls." The reason they're so hard to deal with is that they don't actually do anything (other than sue people) so it's hard to use the countersuit tactic mentioned above (if you don't do anything, you're probably not violating any patents). Microsoft is saying that, while they do not generally transfer patents to NPEs, if they ever did so there will be a "springing license" to that patent granted to eligible customers. Therefore, those customers could not be sued by the NPE.
Now, some editorial. I actually think this is a good thing. They're trying to create a "patent free zone." They can't get rid of patents, so the only way to do that is with "legal hacks" like this. Right now small companies without patent portfolios are at a huge disadvantage when it comes to defending against frivolous patent suits. This would absolutely help. Moreover, one of the eligibility requirements states that you must have remained "patent peaceful" against Azure workloads for the past two years. The only way they could have made this better is if they had made the program more broadly available (btw, you're only eligible if you spend > $1,000/mo on Azure).
For what it's worth, the ideas here are not completely novel. Patent exchanges are fairly common (although you usually need a patent portfolio to join one). There are also some similarities with the Apache 2.0 "mutually assured destruction" clause which (again, in ELI5 terms) tries to prevent patent suits for use of Apache licensed software by saying that if you sue someone for using Apache licensed software then other people can sue you for your use of Apache licensed software (without giving up their right to not be sued).
As someone who has been paying attention to this space for some time I welcome anything new that increases exposure. It's cool stuff, and it's probably the future. However, there's a long way to go. Security doesn't stop at the operating system. In fact, the vast majority of security breaches occur due to misconfiguration, bugs, or good old fashioned social engineering. To really build a system that's "secure in principle" you can't stop at the operating system: you need to build a toolchain that makes it easy to build user space applications that are also "secure in principal" and you need to work on the HCI so the security model makes sense / isn't defeated by users. That's going to be a lot of work!
Here's the thing: anyone who uses this site knows that algorithmic ranking systems are gameable. There are some protections against individuals or small groups repeatedly gaming the system, but Facebook has put a profit motive behind it. That, and stopping all of /pol/, or the 280,000 members from /r/The_Donald is not so easy.