今日推荐开源项目：《spring boot demo》
今日推荐英文原文：《A Brief History of Open Source Software》
今日推荐开源项目：《spring boot demo》传送门：GitHub链接
推荐理由：spring boot demo 是一个用来深度学习并实战 spring boot 的项目，目前总共包含 65 个集成demo，已经完成 52 个。 该项目已成功集成 actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(通过AOP记录web请求日志)、统一异常处理(json级别和页面级别)、freemarker(模板引擎)、thymeleaf(模板引擎)、Beetl(模板引擎)、Enjoy(模板引擎)、JdbcTemplate(通用JDBC操作数据库)、JPA(强大的ORM框架)、mybatis(强大的ORM框架)、通用Mapper(快速操作Mybatis)、PageHelper(通用的Mybatis分页插件)、mybatis-plus(快速操作Mybatis)、BeetlSQL(强大的ORM框架)、upload(本地文件上传和七牛云文件上传)、redis(缓存)、ehcache(缓存)、email(发送各种类型邮件)、task(基础定时任务)、quartz(动态管理定时任务)、xxl-job(分布式定时任务)、swagger(API接口管理测试)、security(基于RBAC的动态权限认证)、SpringSession(Session共享)、Zookeeper(结合AOP实现分布式锁)、RabbitMQ(消息队列)、Kafka(消息队列)、websocket(服务端推送监控服务器运行信息)、socket.io(聊天室)、ureport2(中国式报表)、打包成war文件、集成 ElasticSearch(基本操作和高级查询)、Async(异步任务)、集成Dubbo(采用官方的starter)、MongoDB(文档数据库)、neo4j(图数据库)、docker(容器化)、JPA多数据源、Mybatis多数据源、代码生成器、GrayLog(日志收集)、JustAuth(第三方登录)、LDAP(增删改查)、动态添加/切换数据源、单机限流(AOP + Guava RateLimiter)、分布式限流(AOP + Redis + Lua)、ElasticSearch 7.x(使用官方 Rest High Level Client)。
今日推荐英文原文：《A Brief History of Open Source Software》作者：Andy Updegrove
A Brief History of Open Source SoftwareIn the early days of information technology (IT), computers were delivered with operating systems and basic application software already installed, without additional cost, and in editable (source code) form. But as software emerged as a stand-alone product, the independent software vendors (ISVs) that were launched to take advantage of this commercial opportunity no longer delivered source code, in order to prevent competitors from gaining access to their trade secrets. The practice also had the (intended) result that computer users became dependent on their ISVs for support and upgrades.
Due to the increasingly substantial investments computer users made in application software, they also became “locked in” to their hardware, because of the high cost of abandoning, or reconfiguring, their existing application software to run on the proprietary operating system of a new vendor. In response, a movement in support of distributing human-readable source code as well as the legal right to modify, share and distribute that code, together with the usual, machine-readable object code, emerged in the mid-1980s. The early proponents of such “free software” regarded the right to share source code as an essential freedom and created licenses – notably, the GNU General Public Licenses – that required vendors to give back their own innovations to the project community. Those who espoused this view are usually referred to as being part of the “free software movement.” A later faction focused only on the practical advantages of freely sharable code, which they called “open source software” (OSS), leading to adherents of that group becoming known as the “open source movement.”
Concurrently, the Internet enabled a highly distributed model of software development to become possible, based upon voluntary code contributions and globally collaborative efforts. The combined force of these developments resulted in the rapid proliferation of millions of both free software and OSS development projects that have created many “best of breed” operating system and application software products. Today, virtually all proprietary software includes open source software, and an increasingly large percentage of crucial software platforms and programs are entirely open source.
While terms like “free software” and “open source software” may sound innocuous, when properly understood they imply elements of political philosophy, revolutionary zeal, technical development methodologies, traditional as well as radical legal theories, and cold, hard business pragmatism. Needless to say, such a rich stew of attributes is likely to present something of a challenge to anyone interested in gaining a quick understanding of exactly what this phenomenon is all about.
The reasons for investing the time to gain a better understanding of free and open source software (FOSS) are several. From a socio-political point of view, the FOSS movement is part of a broader, socio-political initiative, energized in part by the ability of the Internet to enable the sharing of information and the active collaboration of people on a global basis. In the case of the free software movement, that movement questions the utility and fairness of many traditional copyright and patent-based legal restrictions, and seeks to liberate software for the benefit of all. Unlike proponents of OSS, who primarily wish to permit open source software to be freely available without traditional proprietary constraints, free software advocates support a set of ethical rules intended not only to foster free access, but also to inspire — and in some cases require — those that benefit from such access to contribute their own modifications and additions back to the community of developers as well.
From an economic point of view, the OSS development model has reordered the business realities of software development in multiple ways. For a software vendor or user, the per-business costs of development of a given piece of software can be radically reduced by participating in a development project in which many others contribute their efforts as well. For an end user, access to the source code of an OSS product grants independence from a proprietary vendor, since the end user can adapt the code, or put development work out for competitive bidding. For commercial intermediaries, efforts can be directed towards developing value added services on top of core code that is available for free and maintained by a community of developers. For policy makers, OSS offers opportunities to level the playing field for domestic vendors while lowering costs of procuring public IT systems. From a marketplace perspective, the OSS model presents a disruptive force that offers opportunities for both existing as well as new businesses to attack the dominance of entrenched market participants whose advantages rest on proprietary development and sales models.
Today, FOSS has become so pervasive that effective IT procurement and management requires a working knowledge of what FOSS is all about. Active participants in the development and use of FOSS products additionally need to know how FOSS can be expected to evolve in the future, and how the legalities of FOSS apply to anyone that participates in the development of FOSS, uses a FOSS product, or embeds a FOSS code in their own products for resale.
In this article, I will provide an overview of the history of FOSS and its champions, the major philosophical differences that differentiate free software from other open source software, the multiple licenses under which FOSS is made available, and the principal non-profit institutions that support and promote FOSS. I will conclude with a brief bibliography of primary FOSS sources for those that wish to learn more than this necessarily superficial review can hope to provide regarding such a rich and complex topic.
OSS: The BasicsWhat exactly does someone mean when they speak of free or open source software?
What it is (and what it isn’t): The answer is not only “it depends,” but that it depends a lot more than one might think. Depending on the context, it may imply a broad spectrum of information, covering topics as varied as legal rights and obligations, affiliation with social movements, and mode of development. In other words, the words “open source”, and in particular, “free software”, may mean many things at once.
At the most basic level, the term OSS is sometimes used to refer, albeit incorrectly, to a piece of software for which both machine readable (object) and human readable (source) code is supplied to the user. And sometimes, this is all the person using the term intends, as when a single developer creates a piece of code and then posts it to the Internet at a public site with few, or no, restrictions on its reuse.
A popularly used OSS program, however, is likely to have additional attributes that differentiate it from proprietary software. Most likely, it will have been developed and be maintained at a public web site that allows any interested programmer to sign up and offer to help, whether by pointing out bugs and suggesting ways to fix them, by actively participating in development of additional code, or by helping document or promote the ongoing work of others as it happens.
The project in question may have been started by a single individual, or by a group of individuals, or it might have been launched when a proprietary vendor released the object and source code to a product that it had developed, concluding that it would gain greater benefit as a result of doing so (e.g., by having continuing access to the same code at a lower cost, due to the labor contributed by non-employees, or by selling support services to the users that download the program for free).
Frequently, multiple projects will collaborate to create software “stacks” that together provide an essential service. When they do, each project creates a single layer while coordinating in real time to ensure that each layer is technically interoperable and tightly integrated with the others.
Until FOSS became ubiquitous, most computer users spent their entire lives in the locked-in “Win-Tel” platform world that sprang from the marriage of Microsoft operating systems with Intel processors. In the realm of application software, most of the same users still live (when it comes to office productivity tools) in the same convenient, but constrained world of Microsoft Office. Convenient, because almost everyone else continues to use Office, and text documents and spreadsheets can therefore be easily exchanged among other Office users. But constrained, because once a user enters the world of Office, it is difficult to leave.
Legally, the term OSS at minimum implies that anyone can download the code with the freedom to do whatever they want with it, so long as they do not try to sue the developer for any flaw in the code or infringement of the rights of any third party and acknowledge the copyright of the original code author in her code. The “copyleft” software licenses (described in greater detail below) generally associated with the free software movement have additional, more restrictive terms. Anyone that changes copyleft-licensed code and sells the modified version must make their modifications available to all under the same copyleft license terms as a matter of ethics and morality, as well as in response to a legal obligation.
What OSS is not is an infringement on any developer’s rights, a second best alternative to proprietary code, or a security risk to the enterprise.
And it certainly isn’t a passing fad. OSS is here to stay.
The value proposition: While the value of free software for the customer sounds obvious, there are benefits beyond the lack of a license fee. Briefly stated, they are as follows:
For the customer: Under the traditional consumer software licensing model, individuals typically incurs a one-time cost to acquire proprietary software and are then on their own, whereas commercial customers are likely to make a more substantial investment in additional services, such as purchasing training for their employees to learn how to use the new software, and also ongoing “support” services (i.e., ensuring that there is someone at the end of the phone if problems are encountered installing, integrating, or operating the software on complex enterprise systems), as well as “maintenance” rights to ensure that they will get updates (e.g., bug fixes and improvements) after the software has been installed. They may also need to pay for hardware upgrades in order to be able to run new software, and pay consultants and other service providers to plan and complete the upgrade.
The aggregate of all of these fees is the “total cost of ownership” of a given software package, and the sum of these additional costs can be substantial. Similarly, while some FOSS may be free (e.g., the OpenOffice and LibreOffice productivity suites), a customer may decide to buy a proprietary product instead.
While the total cost of ownership of a FOSS product will generally be cheaper, there are other advantages to using FOSS instead of proprietary products. They include:
Access to code: When a customer installs proprietary software, it becomes entirely dependent on the vendor for the code’s improvement and performance, because the customer has neither the technical means (access to source code) nor the right (legal permission) to alter the code. If the customer needs new or different features, or needs an update to maintain compatibility when switching or upgrading other systems, the vendor may or may not be willing to customize the program (either at all or at a price the customer is willing to pay). If the vendor discontinues support for the product, or goes out of business, the customer is stranded. In contrast, a customer with a FOSS alternative has the ability as well as the legal right to change the code any time it wants to. It can also hire anyone it wishes to help it change or maintain the program. If the project that created the code goes dormant, a customer may be disappointed, but it won’t be stranded.
Freedom from lock in: While open standards increasingly give customers protection from “lock in” (i.e., dependency on a single vendor, and the certainty of significant switching costs if they wish to change vendors), changing from one product to another can still be difficult and expensive. In the case of systems based on Linux, the OSS operating system that has become predominant in use cases as diverse as telecommunications, automobiles and nuclear power plants, there are multiple independent “distributions,” all based on the same core software (the Linux kernel).
Release cycles and bug fixes: Well-run OSS projects are in constant motion, upgrading and fixing bugs in real time. Customers can access this work on a far more frequent basis than users of proprietary products, who must wait until the vendor decides to incur the costs of making a minor or major release. Because the source code to OSS is available to the customer, popular OSS software also generates a flood of bug reports and suggested fixes, which are evaluated on a constant basis and implemented as appropriate. Or, as stated in what is often referred to as “Linus’s Law” (as in Linus Torvalds, the originator and ongoing leader of Linux kernel development): “Given enough eyeballs, all bugs are shallow.” In contrast, proprietary vendors who receive complaints from customers must seek to replicate and diagnose the problem before they can fix it.
Security: While it may seem counterintuitive that code visible to anyone anywhere would be safer to use, popular OSS programs are in general acknowledged to be more secure, largely for the same reasons just stated: because anyone can see the code, anyone can track down the source of a vulnerability, let project managers know of the cause of concern, and/or propose a fix herself. As a result, security issues can typically be identified, fixed, and propagated to all users faster than flaws in proprietary code. As a result, OSS is increasingly being used by defense, financial and other users who place the highest priority on security. That said, where the numbers of eyes are small, open source can be as vulnerable as proprietary code. The Linux Foundation (LF) is currently working to identify similar situations and provide funding to correct them.
For the developer: It is important to note that much of the code contained in many FOSS products is created by individuals participating on a volunteer basis rather than at the instruction of their employers. Such individuals participate without compensation for many reasons, including enjoyment, challenge, gaining status within the project community, and gaining valuable job skills that enhance marketability and compensation potential. Individuals that rise through the ranks of prominent FOSS projects can dramatically enhance their professional credentials, as corporations are also major contributors to FOSS projects and skilled FOSS developers are in high demand.
Points of origin: Those learning about FOSS for the first time are often puzzled that there is usually no physical “there” there, in the sense of a central development facility. This is hardly surprising, because in most cases there is no person or legal entity that owns more than a small percentage of the code in an OSS product, or that is responsible for creating or maintaining the code (the Linux kernel, which is created by a global network of thousands of individual developers, is a prime example). Instead, the code may simply be hosted in the cloud, usually for free, by an organization formed for that purpose, which also provides a variety of supporting tools and services.
Other projects are supported by non-profit foundations formed to support them (e.g., the Mozilla Foundation, which supports the Firefox web browser), or by so-called “umbrella organizations,” such as the Apache, Eclipse, and Linux Foundations, which host from scores to hundreds of FOSS projects. A small number of FOSS projects is supported by for-profit corporations, such as Red Hat and Micro Focus International, which host the Fedora and SUSE Linux distributions, respectively. They profit by offering paid support services along with these unique Linux-kernel based distributions.
While selling services on top of FOSS (or increasing profits as a result of using FOSS) are popular ways to benefit from FOSS economically, they are not the only ones. Simply sharing the development costs of software with other companies needing the same software tools and platforms lowers the overhead per vendor. And, just as collaboratively developed open standards permit competitors to vie with each other in other ways (e.g., by developing and selling proprietary features and services offered above the level of standardization), FOSS can enable entirely new and competitive business opportunities. A current example can be found in the mobile device marketplace, where the majority of mobile phones today run on variations of the Google-developed Android operating system, which is itself based on the Linux kernel. Google profits from its ability to ensure that mobile platforms can attractively display Google ads and support other Google software and services; mobile device manufacturers can sell more phones at lower prices due to greatly reduced software development costs; and silicon vendors can sell far more chips due to the rapidly expanding number of people who own mobile devices.