Thứ Ba, 25 tháng 7, 2017

Làm thế nào để sử dụng dữ liệu của Libraries.io từ hàng triệu dự án nguồn mở


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


Đ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ự áncá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.