How
to use Libraries.io data from millions of open source projects
This
month Libraries.io released metadata on over 25 million open source
projects.
Tháng
này Libraries.io đã phát hành siêu dữ liệu về hơn 25
triệu dự án nguồn mở.
21
Jul 2017, by Benjamin
Nickolls
Bài
được đưa lên Internet ngày: 21/07/2017
Xem
thêm:
Khoa
học mở - Open Science
Điều
gì xảy
ra nếu chúng ta áp dụng các kỹ thuật mà Google đã áp
dụng để đánh chỉ mục Internet từ năm 1998 cho thế
giới phần mềm nguồn mở (PMNM) nhỉ? Điều đó chính
xác là những gì Andrew Nesbitt đã làm trong năm 2014, điều
đã dẫn tới tạo ra Libraries.io,
một dự án nguồn mở đánh chỉ mục các dự án nguồn
mở khác. Tháng
này Libraries.io đã phát hành siêu dữ liệu về hơn 25
triệu dự án nguồn mở.
Bạn
có thể tải
nó về ngay bây giờ từ Zenodo,
nhưng bạn có thể làm gì với nó chứ?
Để hiểu có gì trong tập hợp dữ liệu này, tôi sẽ
ngó qua cách nó được thu thập.
Dữ
liệu được thu thập như thế nào
Mọi
thứ trong Libraries.io bắt đầu bằng các trình quản lý
gói. Chúng ta đánh chỉ mục siêu dữ liệu các dự án từ
33 trình quản lý gói, điền đầy các khoảng trống từ
các kho nguồn của chúng ở những nơi chúng ta có thể.
Chúng
ta phân tích cú pháp các bản kê dự án - viên đá quý,
package.json, hoạt tương tự - gồm mã từ các dự án khác
và lưu
trữ các
đường
liên kết giữa chúng.
Các
dự án
và các
kho là
một trong nhưng khác biệt chính được làm trong tập hợp
dữ liệu này. Các
dự án thường là các thành phần được phân phối
qua một hoặc nhiều trình quản lý gói hơn. Các
kho có thể thuộc về một dự án nhưng thường xuyên
nhất chúng là những người
tiêu dùng, kết hợp các dự án vào ứng dụng hoặc
dịch vụ.
Các
yếu tố phụ thuộc kho - hơn 100 triệu yếu tố đó -
là rất cốt lõi đối với tập hợp dữ liệu này. Chúng
xác định các đường liên kết giữa các kho và các dự
án chúng xây dựng nên. Sử dụng các đường liên kết
đó chúng ta có thể dễ dàng phát hiện ra các dự án phổ
biến
nhất được sử dụng trong nguồn mở. Nhưng chúng ta có
thể đi xa hơn.
Các
yếu tố phụ thuộc xác định các liên kết giữa các
dự án, từng liên kết với tập hợp các yếu tố phụ
thuộc riêng của chúng, được biết tới như là các yếu
tố phụ thuộc sâu
hoặc bắc cầu. Chúng ta có thể duyệt qua các cấu trúc
dạng cây nổi lên để phát hiện các dự án có giá trị
nhất được sử dụng trong nguồn mở.
2
trường hợp điển hình đã gắn kết Andrew và tôi với
nhau: Andrew đã xây dựng Libraries.io
để giải quyết vấn đề phát hiện và khuyến cáo,
trong khi tôi đã xem xét để nhận diện các dự án PMNM
sống còn sau vụ Heartbleed trong OpenSSL.
Tất
nhiên, không mẩu phần mềm nào là không thay đổi cả.
Các
phiên bản xác định sự phát hành dự án theo đó các
yếu tố phụ thuộc được ánh xạ, từng phiên bản có
cây phụ thuộc của riêng nó. Các kho có thể xác định
sự phụ thuộc vào phiên bản ‘được ghim’ duy nhất
hoặc một dãy các phiên bản, như >1.1.5. Trong các
trường hợp nơi mà trình quản lý gói không hỗ trợ
khái niệm các thẻ (tags)
phiên bản được sử dụng để lần vết các phiên bản
của các dự án để thay
vào đó, việc kéo các phiên bản được gắn thẻ từ
nguồn của chúng.
Cuối
cùng, chúng ta có sự thuận tiện của bảng các dự
án được bình thường hóa với các lĩnh vực kho có liên
quan mà dữ liệu dự án và kho sẽ lưu cho bạn bằng
việc tự bạn tạo ra các đường liên kết đó.
Vì
thế đó là những gì chúng ta phải làm việc với, chúng
ta có thể làm gì với nó nhỉ? Libraries.io cung cấp cho
chúng ta vài ví dụ.
Tìm
kiếm
Không
ngạc nhiên rằng tiếp cận được Google chọn được
chuyển vị thành PMNM tạo ra máy tìm kiếm tuyệt vời.
Bản
thân Libraries.io trước nhất là máy tìm kiếm xuyên nền
tảng, sử dụng tính phổ biến và đo đếm các giá trị
để ưu tiên cho các thành phần được sử dung phổ biến
nhất. Libraries.io cũng hỗ trợ tìm kiếm trên các trang
của bên thứ 3 như trình quản lý gói Bower và nhà
cung cấp tìm kiếm DuckDuckGo.
Mục
tiêu của Libraries.io
là tạo ra hệ sinh thái nguồn mở mạnh hơn. Chúng ta sẽ
làm điều này nhanh nhất bằng việc trở thành một tiện
ích cho các dịch vụ hướng trọng tâm vào các lập
trình viên. Phát hành dữ liệu này có thể được
sử dụng để tạo bản đồ và API
của ibraries.io có thể được sử dụng để giữ cho
bản đồ đó được cập nhật. Đội đặc biệt quan tâm
hỗ trợ các trình quản lý gói khác đang vật lộn với
sự tìm kiếm.
Các
công cụ của lập
trình viên
Tốc
độ sản xuất và tính phức tạp của phần mềm đang
gia tăng. Các lập trình viên dựa vào các công cụ để
tự động hóa nhiều quy trình có thẻ nếu khác lấy đi
thời gian từ việc giải quyết các vấn đề mới, thú
vị.
Libraries.io
giúp các
lập
trình viên trôi
nổi đối với các yếu tố phụ thuộc biến đổi liên
tục đối với nền tảng các ứng dụng của họ, nhấn
mạnh các vấn đề tiềm tàng đối với những người
duy trì, như các phần mềm lỗi thời, bị phản đối và
không duy trì được, và các dự án với sự không tương
thích về giấy phép. Công cụ CI non nớt của chúng tôi
DependencyCI.com
xây dựng các kiểm soát đó trong quá trình phát triển
trong khi hỗ trợ sự phát triển của Libraries.io.
Sự
ưu tiên và sự đóng góp
Libraries.io
đang làm
việc rồi với các tổ chức có quan tâm tới các vấn đề
được nhấn mạnh trong báo
cáo Cầu và Đường cho Quỹ Ford của Nadia Egbhal, một
tỏn 2 quỹ hỗ trợ cho đội. Báo cáo này đã làm rõ vấn
đề rất thực tế về cách chưa hỗ trợ đúng mức vài
dự án nguồn mở chính mà tất cả chúng ta phụ thuộc
vào - trong công việc, ở nhà, và ở bất kỳ đâu. Thế
giới đang rà soát lại vấn đề này và Libraries.io là
một trong các tài nguyên trung tâm đang được sử dụng
để xử lý nó.
Trong
vòng 2 năm quan, chúng tôi đã và đang thí điểm với dữ
liệu này cho bản thân chúng tôi. Chúng tôi đã xây dựng
các trang để nhấn mạnh các dự án quan trọng, các dự
án với quá ít sự chú ý và quá ít sự đóng góp. Việc
soi sáng các dạng dự án đó, khuyến cáo họ cho những
người đóng góp đang xem xét tạo ảnh hưởng bằng thời
gian của họ hoặc hưởng lợi trực tiếp từ những đóng
góp của riêng họ là một trong các tiếp cận mà
Libraries.io đang nắm lấy để tạo ra hệ sinh thái mạnh
hơn và nâng cao chất lượng của tất cả các phần mềm.
Nếu
bạn muốn sử dụng dữ liệu của Libraries.io thì bạn có
thể tải nó về ngay bây giờ từ Zenodo. Để có
thêm thông tin, hãy kiểm tra tài
liệu đó.
What
if we applied the techniques Google applied to index the internet
back in 1998 to the world of open source software? That's exactly the
thought Andrew Nesbitt had in 2014 which lead to the creation of
Libraries.io, an
open source project for indexing other open source projects. This
month Libraries.io released metadata on over 25 million open source
projects.
You
can download
it right now from Zenodo, but what can you do with it? To
understand what is contained within this dataset, I'll take a quick
look at how it's collected.
How data is collected
Everything
in Libraries.io begins with package managers. We index project
metadata from 33 package managers, filling in gaps from their source
repositories where we can. We parse project manifests—a gemfile,
package.json, or similar—that includes code from other projects and
stores the links between them.
Projects
and repositories
are one of the key distinctions made in this dataset. Projects
are typically the components distributed through one or more package
managers. Repositories
may belong to a project but most frequently they are consumers,
incorporating projects into an application or service.
Repository
dependencies—over 100 million of them—are the very core of
this dataset. They define links between repositories and the projects
that they build upon. Using these links we can easily uncover the
most popular
projects used in open source. But we can go further.
Dependencies
define the links between projects, each with their own set of
dependencies, known as transitive or deep
dependencies.
We can walk the tree-like structures that emerge to uncover the most
valuable projects used in open source.
These
two use-cases are the glue that brought Andrew and I together: Andrew
built Libraries.io
to solve the discovery and recommendation problem, while I was
looking at identifying critical OSS projects after the Heartbleed
issue in OpenSSL.
Of
course, no piece of software is an immutable constant. Versions
define a release of a project upon which dependencies are mapped,
each version having its own dependency tree. Repositories may define
a dependency on one single 'pinned' version or a range of versions
i.e. >1.1.5. In cases where a package manager does not support the
concept of a version tags
are used to track releases of projects instead, pulling tagged
releases from their source.
Finally,
we have the convenience of a de-normalized table projects
with related repository fields which in-lines the project and
repository data to save you creating those links yourself.
So
that's what we have to work with, what can we do with it?
Libraries.io provides us with some examples.
Search
It's
unsurprising that the approach taken by Google transposed onto open
source software results in a great search engine.
Libraries.io
itself is primarily a cross-platform search engine, using the
popularity and value measures to prioritize the most commonly used
components. Libraries.io also supports search on third party sites
like the package manager Bower and search provider DuckDuckGo.
The
goal is for Libraries.io to create a stronger open source ecosystem.
We'll do this quickest by becoming a utility for developer-centered
services. This data release can be used to create the map and the
Libraries.io's API
can be used to keep the map up to date. The team is particularly keen
to support other package managers struggling with search.
Developer tools
The
rate of production and complexity of software is accelerating.
Developers rely on tools to automate many of the processes that would
otherwise take time away from solving new, interesting problems.
Libraries.io
helps developers stay afloat of the constantly-shifting dependencies
for the foundation of their applications, highlighting potential
issues to maintainers, such as outdated, deprecated, and unmaintained
software, and projects with license incompatibilities. Our fledgling
CI tool DependencyCI.com
builds these checks into the development process while supporting the
development of Libraries.io.
Prioritization and contribution
Libraries.io
is already working with organizations who are concerned by the issues
highlighted in Nadia Egbhal's Roads
and Bridges report for the Ford Foundation, one of the two
foundations supporting the team. This report brought to light the
very real problem of how under-supported some of the key open source
projects that we all depend upon are—at work, at home, and
everywhere in-between. The world is waking up to this problem and
Libraries.io is one of the central resources being used to tackle it.
For
the last two years, we've been experimenting with this data
ourselves. We've built pages to highlight important projects,
projects with too little attention and too few contributors. Shining
a light on these kinds of projects, recommending them to contributors
who are looking to make an impact with their time or to benefit
directly from their own contributions is one of the approaches
Libraries.io is taking to create a stronger ecosystem and raise the
quality of all software.
If
you would like to use Libraries.io's data you can download it right
now from Zenodo. For more information check out the documentation.
Dịch:
Lê Trung Nghĩa
Không có nhận xét nào:
Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.