656 karma · joined August 23, 2015
I find that feeling dumb in life is one of life’s greatest opportunities!
I thought copyrights protect literary and visual illustrations, but not any underlying processes, mechanisms, or artifacts they describe (patents protect those). My understanding of copyright law is surely flawed, and perhaps the “original work” standard means that only descriptions of systems are copyrightable and not the systems themselves.
In that case I agree that my examples fail. Keys and clutches are mechanisms and filling gas is a process, and those aren’t copyrightable (but they are patentable). The file format example fails too, because the concept of laying out data in a particular way is a mere idea, and ideas aren’t copyrightable either (they are also not patentable, though a description of the format is copyrightable and a specific process for reading or writing the file might be patentable if it were nontrivial).
Yes, there are parties that stand to lose a lot in the short term from a decision for Oracle.
But would it be so bad in the long term if proprietary vendor-specific protocols were put at a disadvantage? Maybe back-to-basics open protocols (or at least protocols formally contributed to the public domain) would resurge, and interoperability would actually _increase._
Evidently yes, to the extent that {X} includes subjective properties that go beyond the fundamental function of {X}.
To use file formats as an example, the fundamental function of an archive file format is to bundle a set of otherwise-independent files together. A basic archive file format that simply concatenates file contents together (and I guess the necessary header to identify the boundaries between them) wouldn’t be copyrightable. But a more advanced format that includes an index of included files might be, since the addition of the index is a product of some artistry by someone who thought it would be a helpful convenience for users. [1]
Extended to the car example, “putting gas in tank” wouldn’t be copyrightable because no tank can function without gas. But improvements to the method of transferring that gas might be. Engaging a clutch is fundamental to the operation of a transmission and not copyrightable, but a clutch that is specially-designed to require less force might be.
The key is an interesting case though... I suppose I’d have to say that mechanism would have been copyrightable, since one could start an engine in ways other than a key (maybe a crank or a push button), or perhaps because the idea to couple the unlocking mechanism to the engine start signal was a clever idea rather than a fundamental necessity.
[1]: To my understanding, this is exactly the situation with “tar” and “zip,” though fortunately for us the “zip” format was contributed to the public domain rather than copyrighted.
I like this framing and think it’s entirely correct, but I don’t agree that it necessarily dooms the interoperability argument.
Google wasn’t trying to achieve compatibility with existing code (for which, you’re right, they’d have needed to take the whole set) but rather compatibility with existing developers. Arguably, that is still interoperability.
What led you to choose “!” as the “optional” modifier? My intuition would have guessed that character to have the opposite meaning.
[1]: project: https://github.com/tylerchr/jstn/ — playground: https://tylerchr.github.io/jstn/
[1]: https://github.com/tylerchr/pwnedpass/blob/master/README.md#...
Disclaimer: I’m an active Mormon.
Until then, where is the best place to look for updates?
They’re trying—and I am rooting for them—but from the outside it seems piecemeal and scattered, like a side project that is nobody’s real priority. Meanwhile, other initiatives have so much movement as to be unfollowable: Zipkin! No, Jaeger! No, OpenTracing! No, OpenCensus! No, OpenTelemetry!
I am beginning to doubt that we will ever have a standard for distributed tracing.
So still not awesome, but a round of applause to the team nonetheless. Not a small achievement.
A monolith's tests need not take all day to run. Features don't need to take weeks or months to ship—one can practice agile even inside a monolith. A monolith does not preclude the use of modern tooling—we adopted CI/CD and distributed tracing despite having a monolith, and use them to great effect.
In some cases scaling a monolithic codebase may be _more_ instructive about how to scale, because it's not as simple as "pay AWS more money and use more instances." Instead, you're forced to understand bottlenecks and consider how to solve them with algorithmic changes. Circuit-breaking is a critical feature in a monolith, even more so since one bad type of request could otherwise ruin the day for everyone.
The inability to "rewrite your business" has more to do with how well-architected your platform is than whether you have microservices. Both monolithic and microservices can be built well and built badly; a clean monolith is straightforward to rewrite the same way that cleanly-designed microservices are.
My personal opinion aligns with that of the author and greatly favors microservice architectures. But the usual hatred of monoliths strikes me as more dogmatic than well-reasoned, and I find this post to ultimately fail in defending its claim by falling victim to that.
By my reading, its author seems to share your frustration and wrote the post to answer your question.
So it seems like services in languages like Go, Rust, python, node, etc are essentially forced to dream up a bespoke wire protocol and revert to the client-server approach. Am I missing something?
[0] https://www.foundationdb.org/files/record-layer-paper.pdf