Philip Laine recounts his experience developing an open-source command-line tool called "BranchName" to simplify copying Git branch names. After achieving moderate success and popularity, Microsoft released a nearly identical tool within their "Dev Home" software, even reusing significant portions of Laine's code without proper attribution. Despite Laine's outreach and attempts to collaborate with Microsoft, they initially offered only minimal acknowledgment. While Microsoft eventually improved their attribution and incorporated some of Laine's suggested changes, the experience left Laine feeling frustrated with the appropriation of his work and the power dynamics inherent in open-source interactions with large corporations. He concludes by advocating for greater respect and recognition of open-source developers' contributions.
The blog post "Inheritance and Subtyping" argues that inheritance and subtyping are distinct concepts often conflated, leading to inflexible and brittle code. Inheritance, a mechanism for code reuse, creates a tight coupling between classes, whereas subtyping, focused on behavioral compatibility, allows substitutability. The author advocates for composition over inheritance, suggesting interfaces and delegation as preferred alternatives for achieving polymorphism and code reuse. This approach promotes looser coupling, increased flexibility, and easier maintainability, ultimately leading to more robust and adaptable software design.
Hacker News users generally agree with the author's premise that inheritance is often misused, especially when subtyping isn't the goal. Several commenters point out that composition and interfaces are generally preferable, offering greater flexibility and avoiding the tight coupling inherent in inheritance. One commenter highlights the "fragile base class problem," where changes in a parent class can unexpectedly break child classes. Others discuss the nuances of Liskov Substitution Principle and how it relates to proper inheritance usage. One user specifically calls out Java's overuse of inheritance, citing the infamous AbstractSingletonProxyFactoryBean
. A few dissenting opinions mention that inheritance can be a useful tool when used judiciously, especially in domains like game development where hierarchical relationships are naturally occurring.
Summary of Comments ( 337 )
https://news.ycombinator.com/item?id=43750535
Hacker News commenters largely sympathize with the author's frustration at Microsoft's perceived copying of his open-source project. Several users share similar experiences with large companies adopting or replicating their work without proper attribution or collaboration. Some question Microsoft's motivation, suggesting it's easier for them to rebuild than to integrate with existing open-source projects, while others point to the difficulty in legally protecting smaller projects against such actions. A few commenters note that the author's MIT license permits this type of use, emphasizing the importance of choosing a license that aligns with one's goals. Some offer pragmatic advice, suggesting engaging with Microsoft directly or focusing on community building and differentiation. Finally, there's discussion about the nuances of "forking" versus "reimplementing" and whether Microsoft's actions truly constitute a fork.
The Hacker News post "Getting Forked by Microsoft" (https://news.ycombinator.com/item?id=43750535) has generated a robust discussion with a variety of perspectives on Microsoft's practice of adopting open-source projects and incorporating them into their own products.
Several commenters express skepticism about the author's surprise and frustration. They point out that Microsoft's behavior is standard practice in the tech industry, arguing that open-source licenses explicitly permit this kind of reuse. One commenter notes that "forks happen," suggesting that the author should have anticipated this possibility and perhaps considered a more restrictive license if they wanted to prevent commercial adaptation. Others echo this sentiment, emphasizing the "Apache 2.0 license is explicit" in allowing this type of use and that Microsoft is well within its rights.
Another line of discussion focuses on the nuances of competition and the benefits and drawbacks of Microsoft's approach. Some acknowledge that while legally permissible, Microsoft's actions might still be considered ethically questionable, especially for smaller projects. The discussion delves into the potential stifling effect this can have on the original project, as Microsoft's resources and market dominance could overshadow the original developer's efforts. However, counterarguments suggest that Microsoft's adoption could lead to wider exposure and adoption of the original project, potentially benefiting the open-source community as a whole.
A few commenters share personal anecdotes about similar experiences with Microsoft or other large companies, adding real-world context to the discussion. These stories highlight the practical implications of having a project "forked" by a large corporation, both positive and negative.
Some commenters offer practical advice to the original author, suggesting strategies like focusing on differentiation, community building, and exploring alternative licensing options for future projects. Others discuss the complexities of monetizing open-source projects and the challenges of competing with large companies.
The conversation also touches on the broader implications of Microsoft's increasing involvement in the open-source community, with some expressing concern about the potential for co-option and control, while others view it as a positive sign of growing acceptance and collaboration.
Overall, the comments on Hacker News reflect a complex and nuanced understanding of the interplay between open-source software and commercial interests, with a range of opinions on the ethics and practical implications of Microsoft's practices.