Chào cả nhà,
Hiện tại em đang học thêm python, code thì ok mà tới lúc sử dụng thư viện ngoài thì đang thắc mắc chút. Ngoài kia có hàng ngàn thư viện để xử lý tính năng mình cần. Mình nghĩ có cái tốt có cái bị lỗ hổng bảo mật hoặc những cái tiêu cực giống vậy.
Vậy cả nhà có thể chia sẻ khi chọn một thư viện, mọi người nên chọn như thế nào không nhỉ?
Chân thành cảm ơn cả nhà
Làm sao để quyết định có nên dùng một thư viện ngoài nào đó không?
Các bước để chọn thư viện:
- Bản quyền: Thư viện yêu cầu giấy phép gì? Có yêu cầu public source code của mình hay không? #GPL #MIT #BSD
- Thư viện có cộng đồng sử dụng nhiều không? Có dễ dàng tìm tài liệu sử dụng không? Có dễ sử dụng không?
- Thư viện có đang được bảo trì và phát triển không?
- Thư viện có bị dính vấn đề bảo mật không?
- Kích thước thư viện có lớn không? (So với mục đích sử dụng)
- Nếu project nhiều người: Ai là người quyết định sử dụng? Có cần phải bàn bạc với các thành viên khác hay không?
- Tốc độ xử lý và tối ưu của thư viện này so với những thư viện khác thế nào?
Thường thì tùy , nếu mình chỉ dùng 1 hàm nhỏ con con thì mình sẽ code riêng 1 cái chứ k kéo nguyên cả thư viện về.Còn nếu ứng dụng thương mại thì để ý cái giấy phép của nó chứ vi phạm giấy phép nó kiện cho sấp mặt.Còn ứng dụng tạo ra chơi chơi cho mục đích cá nhân thì mình nghĩ k cần để ý gì đâu !
Dựa vào :
Năng lực của team.
Không tự code được thì phải dùng thôi.
Thời gian của dự án.
Thời gian ít quá, không đủ để code từ A-Z thì phải ăn sẵn.
Ngân sách của dự án.
Ngân sách của dự án ít, thường đi kèm với thời gian ít nên phải dùng để đạt hiệu suất.
Mục tiêu của dự án.
Dự án là ăn sổi hay dự án chiến lược.
Nếu ăn sổi thì cứ ốp sẵn cho nhanh ra tiền.
Yêu cầu đặc biệt từ khác hàng.
Do khách hàng thích thì phải chiều.
Công nhận, thô nhưng thật
Ngoài các yếu tố khách quan như nhà phát triển lớn, nhiều sao (github), cộng đồng bự và những thứ bác đã liệt kê còn gì khác nữa không bác nhỉ? Với người chỉ dev thì xác định cái lib nó có mã độc hay thứ tương tự không thì khó. Không biết có công cụ nào để đánh giá lib không bác nhỉ?
Vẫn biết là đâm lao theo lao, đã sài phải tin tưởng nhưng có một chút kiến thức để đưa ra nhận định vẫn tốt hơn
Nếu bác sợ vi rút hoặc mã độc của nó thì chỉ có đọc code của nó thôi…
Nhắc mới nhớ , nhiều khi mình k kéo cả thư viện về mà chôm một vài hàm,class… của nó về và đem xài cho dự án cá nhân .Tất nhiên là có đọc qua code của nó rồi mới copy về
Với dự án cá nhân, ngoài xem những con số hơi “biết nói” như số stars trên GitHub, số lượng kết quả khi tìm kiếm thư viện đó trên Google và StackOverflow, họ có cập nhật repo thường xuyên không, mình thường đọc 1 lượt docs của họ, cài thử và chạy thử vài đoạn code demo (lượm lặt trên docs và SO) để xem lib đó có thật sự phù hợp với mình hay không. Nếu mình cần kíp quá, đụng phải repo hay quá mà lại ngưng support từ lâu rồi thì mình fork về, fix bug giùm người ta luôn
Còn trông công việc thì tuỳ, mình cũng tự viết vài cái lib nhỏ rồi dùng luôn.
Mình không chuyên bảo mật nên mình không đánh giá được. Đúng là có nhiều python lib cố tình nhúng mã độc vào, cái này đã có 1 số trang web thống kê danh sách những lib chứa mã độc (bạn tự google nhé).
Về cá nhân thì chỉ có dựa vào đọc code thôi.
Đối với các library lớn và opensource, mỗi khi ai đó commit code sẽ có “nhiều” người review xem commit đó có hợp lệ không hơn, v.v… Do đó, xác suất các lib này bị dính mã độc sẽ thấp hơn.
Mình thấy cũng đúng. Hiện tại mình có tìm thấy vài tool scan, nhưng trả phí cao quá, thôi dùng cơm ^^
Bác nói nó bị hợp lý mới cay :))
Cảm ơn bác nhiều
Ơ cái nút oánh solution mô rồi ta?
Chân thành cảm ơn cả nhà đã chia sẻ kinh nghiệm, mỗi ngày biết thêm 1 chút, vui thiệt.