4,773 research outputs found

    What Java Developers Know About Compatibility, And Why This Matters

    Full text link
    Real-world programs are neither monolithic nor static -- they are constructed using platform and third party libraries, and both programs and libraries continuously evolve in response to change pressure. In case of the Java language, rules defined in the Java Language and Java Virtual Machine Specifications define when library evolution is safe. These rules distinguish between three types of compatibility - binary, source and behavioural. We claim that some of these rules are counter intuitive and not well-understood by many developers. We present the results of a survey where we quizzed developers about their understanding of the various types of compatibility. 414 developers responded to our survey. We find that while most programmers are familiar with the rules of source compatibility, they generally lack knowledge about the rules of binary and behavioural compatibility. This can be problematic when organisations switch from integration builds to technologies that require dynamic linking, such as OSGi. We have assessed the gravity of the problem by studying how often linkage-related problems are referenced in issue tracking systems, and find that they are common

    ImageJ2: ImageJ for the next generation of scientific image data

    Full text link
    ImageJ is an image analysis program extensively used in the biological sciences and beyond. Due to its ease of use, recordable macro language, and extensible plug-in architecture, ImageJ enjoys contributions from non-programmers, amateur programmers, and professional developers alike. Enabling such a diversity of contributors has resulted in a large community that spans the biological and physical sciences. However, a rapidly growing user base, diverging plugin suites, and technical limitations have revealed a clear need for a concerted software engineering effort to support emerging imaging paradigms, to ensure the software's ability to handle the requirements of modern science. Due to these new and emerging challenges in scientific imaging, ImageJ is at a critical development crossroads. We present ImageJ2, a total redesign of ImageJ offering a host of new functionality. It separates concerns, fully decoupling the data model from the user interface. It emphasizes integration with external applications to maximize interoperability. Its robust new plugin framework allows everything from image formats, to scripting languages, to visualization to be extended by the community. The redesigned data model supports arbitrarily large, N-dimensional datasets, which are increasingly common in modern image acquisition. Despite the scope of these changes, backwards compatibility is maintained such that this new functionality can be seamlessly integrated with the classic ImageJ interface, allowing users and developers to migrate to these new methods at their own pace. ImageJ2 provides a framework engineered for flexibility, intended to support these requirements as well as accommodate future needs

    Classification of changes in API evolution

    Get PDF
    Applications typically communicate with each other, accessing and exposing data and features by using Application Programming Interfaces (APIs). Even though API consumers expect APIs to be steady and well established, APIs are prone to continuous changes, experiencing different evolutive phases through their lifecycle. These changes are of different types, caused by different needs and are affecting consumers in different ways. In this paper, we identify and classify the changes that often happen to APIs, and investigate how all these changes are reflected in the documentation, release notes, issue tracker and API usage logs. The analysis of each step of a change, from its implementation to the impact that it has on API consumers, will help us to have a bigger picture of API evolution. Thus, we review the current state of the art in API evolution and, as a result, we define a classification framework considering both the changes that may occur to APIs and the reasons behind them. In addition, we exemplify the framework using a software platform offering a Web API, called District Health Information System (DHIS2), used collaboratively by several departments of World Health Organization (WHO).Peer ReviewedPostprint (author's final draft

    APIs and Copyright Protection: The Potential Impact on Software Compatibility in the Programming Industry, 16 J. Marshall Rev. Intell. Prop. L. 153 (2016)

    Get PDF
    In Oracle v. Google, the Federal Circuit set precedent when it decided to grant copyright protection to APIs. This comment examines the potential impact the computer programming industry will face now that APIs are deemed copyrightable. This comment also discusses Google s success in using fair use as an affirmative defense in order to use copyrightable APIs and what that means for the rest of the computer programming industry. Due to the fast-paced and ever-changing world of technology, this comment also proposes that the abstract-filtration-comparison test is the appropriate test to be used in determining API copyrightability if the issue is raised at the Supreme Court level

    The LaTeX project: A case study of open-source software

    Get PDF
    This is a case study of TeX, a typesetting software that was developed by Donald E. Knuth in the late 70's. Released with an open source license, it has become a reference in scientific publishing. TeX is now used to typeset and publish much of the world's scientific literature in physics and mathematics. This case study is part of a wider effort by academics to understand the open-source phenomenon. That development model is similar to the organization of the production of knowledge in academia; there is no set organization with a hierarchy, but free collaboration that is coordinated spontaneously and winds up generating complex products that are the property of all who can understand its functioning. The case study was led by gathering qualitative data via interviews with TeX developers and quantitative data on the TeX community -- the program's code, the software that is part of the TeX distribution, the newsgroups dedicated to the software, and many other indicators of the evolution and activity in that open-source project. The case study is aimed at economists who want to develop models to understand and analyze the open-source phenomenon. It is also geared towards policy-makers who would like to encourage or regulate open- source, and towards open-source developers who wonder what are the efficient strategies to make an open-source project successful.TeX, LaTeX, case study, open source, software, innovation, organisational structure, economic history, knowledge production, knowledge diffusion.

    A Developers Bill of Rights: What Open Source Developers Want in a Software License

    Get PDF
    In this paper, we study open source developers' perspectives on the nature and structure of software licenses as well as the processes through which these licenses are designed. Recent history has shown that software licensing approaches are critical to the dynamics of the software industry and the open source ecosystem, and thus of interest to the many policy makers and practitioners that follow this part of the global economy. The study is timely, since it informs the debate on the revision of the GPL license, one of the most popular licenses in use. This revision has the potential to shape the software industry for many years to come; hence it is important that the governance process for this revision reflect the needs of the broader software community. Our study employed structured interviews to capture data on open source developers' opinions about software licenses. We focused on how license choices impact the relationship that exists between open source and proprietary software. Our findings reveal that developers are primarily interested in flexibility and choice when considering a licensing approach. Most developers we interviewed used open source licenses to tap into the open source development approach. They chose this option for flexibility in developing a great product, without necessarily espousing any particular philosophy about how the software should be distributed. Developers also generally valued flexibility in the choice of business model for distributing software. The actions of the Free Software Foundation, which is revising the GPL, appear not to reflect the opinions of the broader community, but the agenda of a small minority that may represent as little as 10% of the open source developer community. Sharing data on the needs and perceived rights of developers, both open source and proprietary, will help the software community, industry experts and policymakers to champion a more flexible and responsive approach to sharing and developing software. Policy makers should work to preserve what has made the software ecosystem successful: innovation, community input and involvement, and developer freedom of choice.

    Putting the Semantics into Semantic Versioning

    Full text link
    The long-standing aspiration for software reuse has made astonishing strides in the past few years. Many modern software development ecosystems now come with rich sets of publicly-available components contributed by the community. Downstream developers can leverage these upstream components, boosting their productivity. However, components evolve at their own pace. This imposes obligations on and yields benefits for downstream developers, especially since changes can be breaking, requiring additional downstream work to adapt to. Upgrading too late leaves downstream vulnerable to security issues and missing out on useful improvements; upgrading too early results in excess work. Semantic versioning has been proposed as an elegant mechanism to communicate levels of compatibility, enabling downstream developers to automate dependency upgrades. While it is questionable whether a version number can adequately characterize version compatibility in general, we argue that developers would greatly benefit from tools such as semantic version calculators to help them upgrade safely. The time is now for the research community to develop such tools: large component ecosystems exist and are accessible, component interactions have become observable through automated builds, and recent advances in program analysis make the development of relevant tools feasible. In particular, contracts (both traditional and lightweight) are a promising input to semantic versioning calculators, which can suggest whether an upgrade is likely to be safe.Comment: to be published as Onward! Essays 202
    • 

    corecore