Microsoft filed patent applications for scoped and immutable types
forum.dlang.org
forum.dlang.org
http://patents.stackexchange.com/questions/10128/prior-art-f...
http://patents.stackexchange.com/questions/10122/looking-for...
"Ask Patents" has been used by the USPTO to overturn patent requests.
I've talked with the ask patents folks before, and from what i remember, they send email to the examiners. That's it.
They try to occasionally look and see if the stuff they cite was cited by the examiners, but then they assume that if that is the case, that they were the reason the examiner found it. While I understand how hard it is to know why examiners did things in general (You can see exactly what they searched for through PAIR data, but not what results it turned up), this is a very very suspect methodology.
~~
He is puffing his product in this blog post -- nothing more.
And, this particular blog post is Joel up-talking the new "ask patents" exchange and describing why he feels it's needed.... so... it is a puff piece.
They have a very fixed number of sources they search, and are generally not allowed to search elsewhere with unpublished app info.
So I can pretty much 100% guarantee you they are not searching patents.stackexchange for information.
(Plus, patents.stackexchange themselves do not suggest examiners use it that way. They email examiners).
For published apps (this was recently published), they are allowed to do more, but they generally don't anyway. They stick to the databases/etc that are available to them internally.
https://patents.stackexchange.com/questions/10122/looking-fo...
and here :
https://patents.stackexchange.com/questions/10128/prior-art-...
I think one should have a careful look at it to check if there is anything new here. Maybe there is.
Edit: Found a recent paper by some of the patent authors that looks related: https://homes.cs.washington.edu/~csgordon/papers/oopsla12.pd...
That being said, it clearly shouldn't be possible to patent such ideas.
But in the current legal environment, it would be crazy of a company like Microsoft not to try and get a patent on anything they can get away with. Especially so now that the the America Invents Act is in effect. Being first to file means that they no long have the option of being altruistic and just letting their inventions sit around unpatented. That leaves an opening for someone else to swoop in, get the patent, and try to sue them for "infringing" on something they invented first.
Which is admittedly an awful situation. It really shouldn't be possible to patent such ideas.
IMHO, figuring out a usable system should at least pass the obviousness hurdle to patentability. I think the real issue is that it neither costs much money to develop these ideas, nor does anyone make any money off compiler technology, so the rationale for patents isn't really implicated. If the idea was backed by real world testing of its usability in production systems, I think that could merit a patent, because that is expensive R&D someone could free-ride off of.
On the other hand, that doesn't necessarily mean Microsoft wants to keep them closed. On the Roslyn team we received a number of patents on some new algorithms and data structures to do fast and incremental parsing with immutable data structures. When Roslyn was open sourced all the code and patents went under Apache and are now open under its conditions.
As far as I can see, if any software is patentable, that is.
Why? It has been known you could do this for years. There is literally nothing special about their model, other than baking it into a type system, which everyone knew you could do, but nobody had bothered to try to sell to programmers.
Microsoft didn't start out with this attitude, but when it was applied to them, they decided join in and hard.
If you're a programmer who can do more than write a for loop that counts to 10, I can almost guarantee you've violated a patent. In fact, I used to joke about getting a patent on the for loop. If Fortran, or whatever language first had for loops, had been created today, there would probably be a patent granted for it.
Trust me, I understand how the patent system works.
The USPTO is not horribly understaffed. They have other issues. One of the main issues is actually that the patent examiners are union, and the union is not really on board with them being asked to do significantly more work (IE searching harder), unless they get significantly more pay. In a lot of cases, they can't get significantly more pay, because there are salary caps on federal employees, etc.
Is that not something you could solve with more employees? If the task does not lend to parallelization, let each team work 2k weeks on every application instead of the current k weeks and employ doubly the amount of teams.
The USPTO does not have the budget to double their staff. They are also getting pushed as hard as possible to lower pendency periods, which are already 3+ years in a lot of cases.
If they did double their staff, the union would just demand even more concession, because they would have more power, not less. If they doubled pendency, they'd get murdered by congress.
So they can't really win.
That is type checking fails when you try to violate the constraint of the type, not when you assign one type to another that is incompatible.
At the end of every sprint or dev milestone, an email goes out from some PM or dev manager, asking people for "ideas to be patented." Somebody then collects all of these ideas. Because applications cost money and units have budgets, then there is a preliminary amount of "filtering": ideas that are "cool," the latest shiny feature (who cares if it has been developed elsewhere for ages), etc. This goes from things like tiles for UI to really deep advancements in cloud computing. The specs are a source of leads. Obviously in many cases the list includes a bunch of relatively minor advances (since a lot of development at MS is mostly incremental) that may be prior art except to the junior dev and PM who think they just discovered how to square the circle. There may be some preferential treatment here for patents to special people, given that there is a little bit of money that, if approved, goes back to the employees too. There is a column in some spreadsheet that classifies the patent ideas based on their perceived awesomeness.
At some point the list of patents has to be sent to some IP lawyer. The IP lawyer does real work here, but is also looking at thing like competitive aspects the team might have missed: i.e. if it is in an important business area, then it gets an extra boost to become an application. An exec probably approves the list too.
When the list is approved for applications, the job is then to make sure the application is written by the members of the team and the lawyers. This takes a lot of time and a lot of work, but since the specs already exist, people use that as the basis.
When you get a patent application granted, you get a little plaque which you hang on your wall and/or a little cube you stack on your desk. The higher the stack the more your patent prowess. Given how some people have been at the company for long, they can accumulate 20+ of these cubes. You get an aura of inventor.
Obviously, people find that it is beneficial to get a patent (the plaque, the cube, the little cash), and would lobby for these ideas to be in the approved set, or at least to participate in the shiny specs because the rule is that everybody who was even remotely involved in the patent gets to be listed in it (therefore, managers get a lot of patents because they were in meetings where the idea was discussed and maybe contributed to it).
How wrong am I and what is Microsoft smoking?
As with every trivial patent, the valid objection is not that this has already been done, because every trivial patent is somehow a bit different to things which have been done before. This particular formulation allows structures to be changed while they are being constructed, but makes them immutable once construction is complete.
The objection to this patent is that the differences to prior art are all trivial and obvious to somebody skilled in the art: if you tried to make an immutable type for C# then you would get something that looked pretty much like this patent. On that basis, the patent should not have been granted.
I got as far as a lawyer who was able to smell something fishy; because at the time I didn't own a company. Perhaps i should try again...
What's the linked list patent in question (publication number preferably)?
https://news.ycombinator.com/item?id=1165089 https://news.ycombinator.com/item?id=1165471 https://news.ycombinator.com/item?id=4664243
But when you put these properties together you essentially get a single structure representing multiple lists. That is, given items 1 - 5, you could arrange the pointers to traverse them in orders [1, 2, 3, 4, 5] or [1, 3, 5, 4, 2] or [5, 4, 1, 2, 3], but not [1, 5, 2] or [1, 2, 3, 2, 1].
What I don't understand is why anyone would put what is essentially a number of different lists into a single list. I see no advantages either in algorithmic complexity (traversal and addition/insertion/deletion operations are still the same complexity) or implementation. In fact, I can easily see the implementation being a nightmare. It's tricky enough deleting a node from a singly-linked list. I cannot imagine a problem this was invented to solve that could not have been solved more easily with multiple linked lists. Maybe the problem was non-technical, e.g. "get a patent to put on my résumé".
E.g. if you have 1->2 1->4 2->3 3->5 4->5 the lists could be [1,2,4,3,5] and [5,4,3,2,1].
These are probably not invalid under the new Alice reasoning, but certainly could be for other reasons for abstractness or non-novelty or obviousness. Someone on reddit looked at the file wrapper and said one of them had received an initial rejection for obviousness and abstractness
Equivalent to the following Ruby?
a = "abc"
a.upcase!
a.freeze
a.downcase! # => RuntimeError: can't modify frozen String import Control.Monad.ST
import Data.STRef
main = do
let n = runST $ do n <- newSTRef 5
modifySTRef n (+ 10)
readSTRef n
modifySTRef n (+ 10)
{-
^^^^^^
Couldn't match expected type IO t0 with actual type ST s0 ()
In the expression: main
When checking the type of the IO action main
-}
print nhttp://www.ecma-international.org/ecma-262/5.1/#sec-15.2.3.8
Edit: replaced Object.seal with Object.freeze
http://joeduffyblog.com/2013/12/27/csharp-for-systems-progra...
- Fill in an internal form
- Have a chat with an internal lawyer / patent expert
- Receive a (small) payment if it is submitted to the patent office.
- Receive a (bigger) payment if the patent is granted.
- Receive a (huge) payment if the patent is used / sold / cross-licenced.
The exact process and payments will depend on country and company.
And, yes, it is possible to game this system. For a good study, read "Surely you're joking, Mr Feynman" http://books.google.co.uk/books?id=Z7g-BAAAQBAJ&pg=PT170&lpg...
That said, they probably didn't mean that :(
And with all the complaints you inevitably read whenever an interviewing thread happens about candidates unable to code up FizzBuzz, you can guess what the level of "ordinary skill" in our industry is...
I can't say how the bonuses are handed out once a portfolio is sold. Ideally, you'd guess the inventors of the "better" patents would get bigger bonuses. The most likely scenario, unfortunately, is that the inventors get nothing, and very likely are not even aware. It's a shame inventors are so unaware of the value companies reap from their IP.
IBM's past technical disclosure bulletins (TDB) [I think they stopped them a while back] suggest that there wasn't "always" pressure just that they realise[d] that their patent portfolio is one of their greatest assets - strongly encouraging employees to flag apparent innovations (and getting upstream oversight of those innovations) means that IBM can make the most of the inventiveness of their employees though.
The public benefit is early disclosure of every possible innovation and the TDB helped to disseminate details of tech that may not have been well known.
On issuance, you just get a plaque.
The truth is, the vast majority of software engineers don't even know what a patent is. Of the rest, some are neutral, some are pro-, and some are anti-software patent. Of course, you only ever hear from the latter group because they think it's a big problem, and the rest really don't see anything wrong.
Same reason that I don't vote. I think a lot of people fall into this category of thinking.
To summarize, do not confuse bad cases from good cases. You cannot have a blanket statement of the type, "some people are proud of their open-source contributions ... I was surprised about it".
My understanding is that before patents, people and companies would invent but keep their invention a trade secret for as long as they can, which meant they had exclusivity to the invention. Patents allow such exclusivity for a limited period of time in exchange of disclosing the invention and losing rights over it after a specified period.
The patents applicability criterion correspondingly includes non-obviousness which is to judge if someone else could come up with the same invention without investing significant time and effort or not. Majority of the ideas are "supposed to be" ruled out by this criterion.
The state of the affairs however is that most obvious of the things get patented because (1) obviousness is unmeasurable, and (2) searching the prior art fully is impractical.
Short message: You cannot call all swans white simply because most you see are white.
I've read over and over that the patent system is bad, but isn't it just the patent office being incompetent instead ? Isn't that rather an expertise problem ? Or are experts not even asked at all on those subjects ?
Can't anybody sue the patent office for abusive patents ? Or is it just that the people at the patent office just depends on congress, thus making it biased ?