草庐IT

2022年最佳开源软件出炉

奇酷教育 2023-03-28 原文
InfoWorld 公布了 2022 年最佳开源软件榜单。

InfoWorld 是致力于引领 IT 决策者走在科技前沿的国际科技媒体品牌,每年 InfoWorld 都会根据软件对开源界的贡献,以及在业界的影响力评选出当年的 “最佳开源软件” (InfoWorld's Best of Open Source Software Awards, 简称 Bossies),该奖项评选已经延续了十多年。

InfoWorld 的 2022 年 Bossie 奖旨在表彰年度最重要和最具创新性的应用程序开发、devops、数据分析和机器学习工具。

接下来具体看看每一个项目。

AlmaLinux

AlmaLinux 是开放源码的、社区驱动的项目,一开始是作为 CentOS 的替代品,由 CloudLinux OS 的创建者打造 。它从红帽企业 Linux (RHEL) 的源码编译而来,跟 RHEL 8 完全在二进制上兼容。

项目地址:

​https://www.oschina.net/p/almalinux​

podman

Podman 是一个无守护进程的容器引擎,用于在 Linux 系统上开发、管理和运行 OCI 容器。容器既可以以 root 身份运行,也可以在无 root 模式下运行。

Podman 是 Libpod 的一部分,它的定义可以简单用这个命令表示:`alias docker=podman`。

项目地址:

​https://www.oschina.net/p/podman​

Play with Docker (PWD)

Play with Docker (PWD) 是一个 Docker 学习平台,在浏览器中提供免费的 Alpine Linux 虚拟机体验。(不过需要登录和注册,而且每次登录创建的实例都有有时间限制,到时间需要重新登录)

你可以在 Play with Docker 中构建和运行 Docker 容器,训练自己操作 Docker 的能力(默认已搭建好环境),甚至在 Docker Swarm 模式下创建集群, Docker-in-Docker (DinD) 用于提供多个 VM/PC 的效果。

项目地址:

​https://www.oschina.net/p/play-with-docker​

Vaadin

Vaadin 是一个可在 Java 中实现 Web 用户界面的 Web 框架,无需编写任何 HTML 或 JavaScript 代码。Vaadin 包含一个服务器端的结构,主要的应用逻辑都在服务器端运行,浏览器端通过 Ajax 技术跟服务器端进行交互。

项目地址:

​https://www.oschina.net/p/vaadin​

JHipster

JHipster 是一个全栈的 Java 应用程序开发平台,可用来创建基于 Maven + Spring + AngularJS 的项目,提供完全热加载的 Java 和 JavaScript 代码。

JHipster 提供了包含 CLI 工具在内的许多组件,用于处理脚手架生成并针对异构技术堆栈工作:以 Vue.js UI 为前端的 MongoDB,以 React 为前端的 Postgres 等等...

项目地址:

​https://www.oschina.net/p/jhipster​

SolidJS

SolidJS 是一个用于构建用户界面的声明式、高效且灵活的 JavaScript 库。它不使用虚拟 DOM。相反,它选择将其模板编译为真实的 DOM 节点,并将更新包装在细粒度的 React 中。

项目地址:

​https://www.oschina.net/p/solid-js​

Redwood

Redwood 是一个全栈 Web 框架,它将 React、GraphQL、Prisma、TypeScript、Jest 和 Storybook 的最佳部分结合在一起。

Redwood 采用类似 Rails 的方法来满足数据建模和脚手架等重复性需求,也解决了安全性和跟踪、集成等需求。Redwood 允许针对各种部署环境,包括 Vercel 和 Netlify 等无服务器平台。

项目地址:

​https://www.oschina.net/p/redwood​

Next.js

Next.js 是一个用于服务器渲染的通用 JavaScript Web 应用程序的小型框架,该框架基于 React、Webpack 和 Babel 构建,为该网站提供了强大的支持。

项目地址:

​https://www.oschina.net/p/next-js​

Wasmtime

Wasmtime 是 WebAssembly 和 WASI 的小型高效运行时,采用 Rust 编写,构建于编译器 Cranelift 之上。Wasmtime 完全开源,符合 WASI 标准,还支持与 C/C++、Python、.NET、Go 和其他编程语言集成,可运行在 Windows/Linux/macOS 等平台。

项目地址:

​https://www.oschina.net/p/wasmtime​

PyScript

PyScript 是一个开发框架,为开发者提供了在标准 HTML 中嵌入编写 Python 代码的能力、使用 Python 调用 JavaScript 函数库,以及创建 Python Web 应用。PyScript 旨在提供 “一等公民 (first-class)” 的编程语言,它具有一致的风格化规则、更具表现力且更易于学习。

项目地址:

​https://www.oschina.net/p/pyscript​

OpenFGA

OpenFGA 是一种适用于细粒度授权的开源授权解决方案,允许开发人员使用易于阅读的建模语言和友好的 API 构建精细的访问控制系统。

它应用了 ReBAC 的概念,由 Auth0 FGA 团队创建,并受到 Zanzibar 的启发,专为大规模的可靠性和低延迟而设计。

项目地址:

​https://www.oschina.net/p/openfga​

Sentry

Sentry 是一个实时的事件日志和聚合平台,基于 Django 构建。Sentry 可以帮助你将 Python 程序的所有 exception 自动记录下来,然后在一个简单好用的 UI 上呈现和搜索。

项目地址:

​https://www.oschina.net/p/sentry​

Appsmith

Appsmith 是一个开源低代码框架,用于构建管理面板、CRUD 应用程序和工作流。它允许拖放组件来构建仪表板、使用 JavaScript 对象编写逻辑并连接到任何 API、数据库或 GraphQL 源。

项目地址:

​https://www.oschina.net/p/appsmith​

Spinnaker

Spinnaker 是一个持续交付平台,它定位于将产品快速且持续的部署到多种云平台上。

Spinnaker 主要特性:配置一次,随时运行;随地部署,集中化管理;开源。

项目地址:

​https://www.oschina.net/p/spinnaker​

Hypertrace

Hypertrace 是一个开源的分布式跟踪和可观察性引擎,能够从庞大的云原生架构中的大量服务中摄取和处理大量实时性能数据。

Hypertrace 监控应用程序和微服务,跨多个接触点跟踪分布式事务,并将所有这些信息提炼成服务指标和应用程序流程图,并显示在完全可定制的仪表板中。

项目地址:

​https://www.hypertrace.org/​

Gravitee

Gravitee API 网关是基于 Vert.X 开发的高性能接口网关,支持 Swagger 导入接口、文档管理、性能分析、操作审计、日志,负载均衡等功能。

项目地址:

​https://www.oschina.net/p/gravitee-gateway​

OpenTelemetry

OpenTelemetry 是一项高质量的便携式遥测技术,可用于检测、生成、收集和导出遥测数据(指标、日志和跟踪),以帮助分析软件的性能和行为。

OpenTelemetry 通常可跨多种语言使用,且易于与流行的库和框架集成,例如 Spring、 ASP.NET Core、 Express、Quarkus 等。

项目地址:https://opentelemetry.io/

Grafana

Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编辑器,同时也是开源的、功能齐全的度量仪表盘和图形编辑器,支持 Graphite,InfluxDB 和 OpenTSDB。

Grafana 主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源;Graphite 和 InfluxDB 查询编辑器等等。

项目地址:

​https://www.oschina.net/p/grafana​

Dapr

Dapr(Distributed Application Runtime ,分布式应用运行时)是微软新推出的,一种可移植的、serverless 的、事件驱动的运行时,它使开发人员可以轻松构建弹性,无状态和有状态微服务,这些服务运行在云和边缘上,并包含多种语言和开发框架。

项目地址:

​https://www.oschina.net/p/dapr​

Redpanda

Redpanda 是 Kafka 的插件替代品,主要用 C++ 编写,使用 Seastar 异步框架和 Raft 共识算法用于其分布式日志。

它可以提供高达 10 倍的平均延迟降低和高达 6 倍的 Kafka 事务速度,同时运行在更少的资源上。

项目地址:https://redpanda.com/

Apache lceberg

Iceberg 是一种用于大型分析表的高性能格式。Iceberg 为大数据带来了 SQL 表的可靠性和简单性,同时让 Spark、Trino、Flink、Presto、Hive 和 Impala 等引擎能够同时安全地使用相同的表。

项目地址:

​https://iceberg.apache.org/​

Apache Druid

Druid 是一个高性能实时分析数据库。它是为大型数据集上实时探索查询的引擎,提供专为 OLAP 设计的开源分析数据存储系统,它的设计意图是在面对代码部署、机器故障以及其他产品系统遇到不测时能保持 100% 正常运行。它也可以用于后台用例,但设计决策明确定位线上服务。

项目地址:

​https://www.oschina.net/p/druid_analytics​

JAX

JAX 是一个 TensorFlow 的简化库,它结合了 Autograd 和 XLA,专门用于高性能机器学习研究。

凭借 Autograd,JAX 可以求导循环、分支、递归和闭包函数,并且它可以进行三阶求导。通过 grad,它支持自动模式反向求导(反向传播)和正向求导,且二者可以任何顺序任意组合。

项目地址:

​https://www.oschina.net/p/jax​

nbdev

nbdev 是一个 Jupyter Notebooks 驱动的开发平台。只需使用轻量级标记编写 Jupyter Notebooks ,即可获得高质量的文档、测试、持续集成和打包.

比起传统编程环境,nbdev 的代码调试和重构容易得多,因为始终可以轻松获得活动对象。

项目地址:https://nbdev.fast.ai/

Accelerate

Accelerate 是一个库,只需添加四行代码,即可在任何分布式配置中运行相同的 PyTorch 代码!

简而言之, Accelerate 使得大规模的训练和推理变得简单、高效和强适应性。

项目地址:

​https://huggingface.co/docs/accelerate/index​

Stable Diffusion

Stable Diffusion 是一种文本到图像的 AI 模型,可以生成质量惊人的图像。

世界各地的爱好者都在围绕这个项目进行改进工作,以加快图像生成速度,支持在内存较低的 GPU 上运行,并添加画内和画外支持,他们甚至在 M1 驱动的 MacBook 上运行了 Stable Diffusione。

项目地址:

​https://github.com/CompVis/stable-diffusion​

EleutherAI

严格来说,EleutherAI 是一群致力于实现开源人工智能研究的 AI 研究人员,旗下有多款预训练模型,包括 GPT-NeoX-20B,一个与 CoreWeave 合作训练的 200 亿参数模型;GPT-J-6B ,在 Pile 上训练的 60 亿参数模型...

项目地址:https://www.eleuther.ai/

以上是 2022 年度 InfoWorld Bossie Awards 的所有得奖项目,关于每个项目具体的入选评语等详细信息,可查看网站原文:

​https://www.infoworld.com/article/3637038/the-best-open-source-software-of-2021.html#slide1​

有关2022年最佳开源软件出炉的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  4. ruby-on-rails - Rails 中同一个类的多个关联的最佳实践? - 2

    我认为我的问题最好用一个例子来描述。假设我有一个名为“Thing”的简单模型,它有一些简单数据类型的属性。像...Thing-foo:string-goo:string-bar:int这并不难。数据库表将包含具有这三个属性的三列,我可以使用@thing.foo或@thing.bar之类的东西访问它们。但我要解决的问题是当“foo”或“goo”不再包含在简单数据类型中时会发生什么?假设foo和goo代表相同类型的对象。也就是说,它们都是“Whazit”的实例,只是数据不同。所以现在事情可能看起来像这样......Thing-bar:int但是现在有一个新的模型叫做“Whazit”,看起来

  5. ruby-on-rails - 向 Rails 3 添加 Ruby 扩展方法的最佳实践? - 2

    我有一个要在我的Rails3项目中使用的数组扩展方法。它应该住在哪里?我有一个应用程序/类,我最初把它放在(array_extensions.rb)中,在我的config/application.rb中我加载路径:config.autoload_paths+=%W(#{Rails.root}/应用程序/类)。但是,当我转到railsconsole时,未加载扩展。是否有一个预定义的位置可以放置我的Rails3扩展方法?或者,一种预先定义的方式来添加它们?我知道Rails有自己的数组扩展方法。我应该将我的添加到active_support/core_ext/array/conversion

  6. ruby - 最佳原则中的原则 - 2

    我似乎经常遇到一些设计问题,但我不知道是什么是真的很合适。一方面我经常听到我应该限制耦合和坚持单一职责,但当我这样做时,我常常发现它很困难到在需要时将信息获取到程序的一部分。为了例如,classSingerdefinitialize(name)@name=nameendattr:nameend那么Song应该是:classSongdefnew(singer)@singer=singerendend或classSongdefnew(singer_name)@singer_name=singer_nameendend后者耦合性小,按道理应该用。但如果我以后发现宋有什么需要了解更多歌手,我的

  7. ruby-on-rails - 与 ActiveMerchant 一起使用的最佳支付网关是什么? - 2

    我需要使用ActiveMerchant库在我们的一个Rails应用程序中设置支付解决方案。尽管这个问题非常主观,但人们对主要网关(BrainTree、Authorize.net等)的体验如何?它必须:处理定期付款。有能力记入个人帐户。能够取消付款。有办法存储用户的付款详细信息(例如Authotize.netsCIM)。干杯 最佳答案 ActiveMerchant很棒,但在过去一年左右的时间里,我在使用它时发现了一些问题。首先,虽然某些网关可能会得到“支持”——但并非所有功能都包含在内。查看功能矩阵以确保完全支持您选择的网关-http

  8. ruby - 将 ruby​​ 哈希转换为数组的最佳方法是什么 - 2

    我有一个像这样的ruby​​散列{"stuff_attributes"=>{"1"=>{"foo"=>"bar","baz"=>"quux"},"2"=>{"foo"=>"bar","baz"=>"quux"}}}我想把它变成一个看起来像这样的散列{"stuff_attributes"=>[{"foo"=>"bar","baz"=>"quux"},{"foo"=>"bar","baz"=>"quux"}]}我还需要保留键的数字顺序,并且键的数量是可变的。上面是super简化的,但我在底部包含了一个真实的例子。执行此操作的最佳方法是什么?附言还需要递归就递归而言,这是我们可以假设的:1)

  9. Ruby 最佳实践 : working with classes - 2

    参见下面的示例,我想最好使用第二种方法,但第一种也可以。哪种方法最好,使用另一种的后果是什么?classTestdefstartp"started"endtest=Test.newtest.startendclassTest2defstartp"started"endendtest2=Test2.newtest2.start 最佳答案 我肯定会说第二种变体更有意义。第一个不会导致错误,但对象实例化完全过时且毫无意义。外部变量在类的范围内不可见:var="string"classAvar=A.newendputsvar#=>strin

  10. ruby - 存储外部 API 的密码 - 最佳实践 - 2

    如果我构建了一个应用程序来访问来自Gmail、Twitter和Facebook的一些数据,并且我希望用户只需输入一次他们的身份验证信息,并且在几天或几周后重置,那会怎样是在Ruby中动态执行此操作的最佳方法吗?我看到很多人只是拥有他们客户/用户凭证的配置文件,如下所示:gmail_account:username:myClientpassword:myClientsPassword这看起来a)非常不安全,b)如果我想为成千上万的用户存储此类信息,它就无法工作。推荐的方法是什么?我希望能够在这些服务之上构建一个界面,因此每次用户进行交易时都必须输入凭据是不可行的。

随机推荐