-
Design Pattern
- Singleton Design Pattern
- Factory Design Pattern
- Factory Method Design Pattern
- Abstract Factory Design Pattern
- Builder Design Pattern
- Prototype Design Pattern
- Object Pool Design Pattern
- Chain of Responsibility Design Pattern
- Command Design Pattern
- Interpreter Design Pattern
- Iterator Design Pattern
- Mediator Design Pattern
- Memento Design Pattern
- Observer Design Pattern
- Observer Design Pattern - Xử Lý Exception
- Strategy Design Pattern
- Template Method Design Pattern
- Visitor Design Pattern
- Null Object Design Pattern
- Adapter Design Pattern
- Bridge Design Pattern
- Composite Design Pattern
- Decorator Design Pattern
- Flyweight Design Pattern
- Proxy Design Pattern
- S.O.L.I.D
- Clean code
- Lập trình socket
- Java Core
- Multi-Thread
- Spring
- Java Web
- Memory Caching
- Message Queue
- DevOps
- Xây dựng một nền tảng
- MongoDB
- MySQL timestamp
- Properties vs yaml
- Kotlin
- Lập Trình Machine Learning với PyTorch
- Mã Nguồn Mở
- Ezy HTTP
- Free Chat
- Một số kinh nghiệm với Git
- Review cho đồng nghiệp!
- Kinh nghiệm phát triển dự án phức tạp, nhiều người - Tuân thủ
- Kinh nghiệm phát triển dự án phức tạp, nhiều người - Lựa chọn người đi cùng
- Ngành công nghiệp phần mềm tại Việt Nam - Mới chỉ là bắt đầu.
- Ngành công nghiệp phần mềm tại Việt Nam - Dây chuyền sản xuất.
- Ngành công nghiệp phần mềm tại Việt Nam - Thị trường
- Ngành công nghiệp phần mềm tại Việt Nam - Công ăn việc làm
- Setup Dev Environment
- Hello World
- Create a Server Project
- Handle Client Requests
- Using ezyfox-server-csharp-client
- Using ezyfox-es6-client
- Client React.js Interaction
- Build And Deploy In Local
- Tham gia phát triển open source!
- Buôn có bạn, bán có phường
- Đam mê đi đâu rồi?
- Giữa lửa đam mê!
- Tương lai nào cho tester? Thay đổi để dẫn đầu xu thế!
- Tương lai nào cho tester? - Khi thế sự đổi thay!
- Tương lai nào cho lập trình viên? Khi không có hệ quy chiếu!
- Tương lai nào cho lập trình viên - Làm đến bao nhiêu tuổi?
- Tương lai nào cho lập trình viên? Có làm giàu được không?
- Tương lai nào cho lập trình viên? Có cân bằng cuộc sống được không?
- Tương lai nào cho lập trình viên - Nhảy việc đến khi nào?
- Tương lai nào cho lập trình viên - Con đường sự nghiệp (Career path)!
- Tương lai nào cho lập trình viên - Tổng kết lại!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn sơ cấp (Junior)!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn trung cấp (Intermediate)!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn lành nghề (Senior)!
- Giai đoạn lành nghề (Senior) - Giữa những hoang mang!
- Giai đoạn lành nghề (Senior) - Phân hoá trong doanh nghiệp!
- Con đường sự nghiệp cho lập trình viên - Trở thành chuyên gia (Expert)!
- Con đường sự nghiệp cho lập trình viên - Trở thành người ảnh hưởng (Influencer)!
- Các giai đoạn phát triển của lập trình viên - Tổng kết lại!
- Metaverse - Câu chuyện 10 nghìn CCU (Người tham gia đồng thời)
- Metaverse có khả thi ở Việt Nam?
- Lựa chọn nghề nghiệp - DevOps!
- Lựa chọn nghề nghiệp - Project Manager (PM)!
- Lựa chọn nghề nghiệp - Data Engineer!
- Lựa chọn nghề nghiệp - BackEnd Engineer!
- “Talk is cheap. Show me the code” ― Linus Torvalds
- Lựa chọn nghề nghiệp - Web Front-End Engineer!
- Lựa chọn nghề nghiệp - Mobile Engineer!
- Lựa chọn nghề nghiệp - Game Engineer!
- Lựa chọn nghề nghiệp - Product Owner!
- Tuổi trẻ cần đột phá!
- Tuổi trẻ cần sự đồng cảm!
- Tuổi trẻ - điều đáng sợ đầu tiên là gì?
- Tuổi trẻ - Điều đáng sợ thứ 2 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 3 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 4 là gì?
- Nếu tận dụng hết năng lực thì sẽ thế nào?
- Tuổi trẻ - Điều đáng sợ thứ 5 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 6 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 7 là gì?
- Tuổi trẻ - ham học hỏi là như thế nào?
- Đầu tư cho bản thân là gì?
- Học chủ động!
- Có nên quay lại công ty cũ?
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 1)
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 2)
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 3)
- Tự học
- Học tập tại doanh nghiệp
- Học tại trung tâm
- Cách đọc sách kỹ thuật hiệu quả
- Học trong một tổ chức mã nguồn mở.
- Câu chuyện lập trình viên - Công việc đầu tiên
- Câu chuyện lập trình viên - Mức lương đầu tiên
- Câu chuyện lập trình viên - 2018
- Định hướng là gì?
- Wordpress nguy hiểm thế nào?
- Danh sách 10 trung tâm đào tạo trình uy tín, chất lượng ở Hà Nội
Là phẳng thế giới
Thứ quan trọng nhất đối với ngành công nghệ thông tin đó chính là mã nguồn. Tất cả những gì chúng ta thấy, từ hình ảnh đến video, từ chương trình soạn thảo văn bản đến trình duyệt web, từ hệ điều hành cho đến các ứng dụng điện thoại, tất tần tật những gì chúng ta thấy trên máy tính hay điện thoại đều được tạo nên bởi mã nguồn. Từ xa xưa các công ty công nghệ như Microsoft hay Apple coi mã nguồn như một tài sản bí mật không thể tiết lộ, thì ngày nay họ đã buộc phải mở mã nguồn của mình để tránh đi ngược lại với xu thế toàn cầu. Có thể nói mã nguồn mở đã là phẳng thế giới này, giúp cho các doanh nghiệp có thể chia sẻ tri thức, thu hẹp khoảng cách giữa các nước giàu, các nước nghèo và các nước đang phát triển.
Nguyên nhân ra đời
Không có một tài liệu chính thức nào nói về nguyên nhân ra đời của mã nguồn mở, nhưng theo mình xuất phát điểm nó đến sự cao thượng, tinh thần học hỏi và chia sẻ không ngừng của những lập trình viên trên toàn cầu. Tư tưởng của những người làm lập trình và những người làm kỹ thuật đều cơ bản như nhau:
- Họ luôn nghĩ rằng tri thức này là của cả nhân loại chứ không phải của một công ty hay một tổ chức nào cả
- Cách nhanh nhất để giải quyết 1 vấn đề chính là chia sẻ nó, chính vì vậy mã nguồn mở là cách tốt nhất để chia sẻ
- Họ đam mê và muốn thể hiện kỹ năng của mình. Không có gì tuyệt với hơn bằng sự công nhận của những người làm kỹ thuật khác
Giá trị mang lại
Sự ra đời của mã nguồn mở đã mang lại những giá trị vô cùng to lớn:
- Giúp cho tất cả mọi người đều có thể dễ dàng tiếp cận được với lập trình: nếu tất cả các công ty đều đóng mã nguồn, thì có lẽ chỉ có những nhân viên trong công ty đó mới có thể dễ dàng tiếp cận được đến các thư viện lập trình mà thôi
- Tăng khả năng sáng tạo từ đó tạo ra nhiều nền tảng mã nguồn mở nữa: chúng ta sẽ không bị phụ thuộc vào một nền tảng cụ thể, thậm chí chúng ta có thể tự xây dựng nền tảng của riêng mình nếu chúng ta muốn
- Huy động được trí tuệ của rất nhiều người trên khắp thế giới tham gia phát triển và tạo ra một sản phẩm hoàn thiện
- Giúp chúng ta chia sẻ vấn đề và nhận được sự hỗ trợ nhanh chóng từ cộng đồng
- Giúp chúng ta phát hiện các lỗ hổng và kịp thời vá nó
- Giúp các tổ chức giảm được chi phí đào tạo mà vẫn có được nguồn nhân sự chất lượng tốt
Những rào cản
Mặc dù phát triển mạnh mẽ nhưng đa phần các dự án mã nguồn mở đều xuất phát từ ý tưởng của một cá nhân, chính vì vậy nguồn lực là không đủ và phải mất nhiều năm, thậm chí có nhưng thư viện lập trình phải mất hơn 10 năm mới có thể hoàn thiện được tài liệu và được sử dụng rộng rãi bởi cộng đồng. Chính vì vậy mà nguồn lực (tài chính, nhân lực và thời gian) chính là những rào cản lớn nhất đang cản trở sự phát triển của mã nguồn mở. Nhưng với sự tham gia của các tập đoàn lớn trên toàn cầu và các tổ chức phi lợi nhuận, rào cản này sẽ sớm bị phá bỏ.
Trách nhiệm của cộng đồng
Để các phần mềm, thư viện lập trình phát triển rộng rãi, rất cần sự chung tay từ cộng đồng. Xuất phát điểm là phục vụ cho nhu cầu phát triển các sản phẩm cho mình hay tổ chức của mình, từ đó giảm thiểu chi phí, sống sót và phát triển. Trong quá trình sử dụng chúng ta có thể sửa lỗi, đóng góp tài liệu cho nguồn mở. Khi đã thành công, chúng ta sẽ quay trở lại hỗ trợ (donate) cho cá nhân hay tổ chức đã tạo ra mã nguồn để thay lời cảm ơn.
Không phải mở tất cả
Nói rằng mã nguồn mở nhưng không có nghĩa là các tổ chức phải mở toàn bộ mã nguồn của họ. Họ có thể chỉ mở mã nguồn của các thư viện lập trình hay các công nghệ lõi, còn lại các mã nguồn để tạo ra các sản phẩm vẫn cần đóng lại, bảo vệ thật kỹ để đảm bảo bí mật kinh doanh và các đặc trưng riêng của tổ chức.
Có quy định riêng
Khi phát hành một phần mềm hay một thư viện lập trình mã nguồn mở, người tạo ra nó có thể đính kèm một trọng những loại giấy phép để thể hiện rằng:
- Phần mềm hay thư viện có cho phép sử dụng cho mục đích thương mại không
- Người sử dụng có thể phát hành lại (dưới tên mình) phần mềm hay thư viện không
- Các thư viện sử dụng có phải đính kèm cùng loại giấy phép hay không
Về cơ bản thì người sử dụng không nhất thiết phải tuân thủ các điều lệ trong giây phép nguồn mở, tuy nhiên nến vi phạm trọng phạm vi thương mại bạn có thể bị phạt tiền, ngoài phạm vi thương mại, bạn có thể đối diện với sự tẩy chay từ cộng đồng và có thể bị xoá bỏ khỏi các nền tảng mã nguồn mở.
Các giấy phép
Tính đến thời điểm hiện tại đã có hàng triệu các phầm mềm, thư viện lập trình mã nguồn mở khác nhau. Đa phần chúng đều sử dụng một trong các giấy phép:
- Apache 2.0: giấy phép này cho phép ngưởi sử dụng tự do với bất kì mục đích nào, kể cả chỉnh sửa, thay đổi hay phân phối lại mà không có bất kì chi phí nào
- Mozilla 2.0 (MPL 2.0): giấy phép này cho phép ngưởi sử dụng tự do, tuy nhiên khi muốn sao chép hay thay đổi thì phải giữ nguyên giấy phép MPL
- MIT: cũng giống với Apache 2.0 giấy phép này cho phép ngưởi sử dụng tự do với bất kì mục đích nào, bạn có thể thoải mái làm bất kì hành động nào bạn muốn
- Giấy phép GNU GPL: Giấy phép này đã có từ lâu đời, nó cho phép người dùng tự do làm bất kì điều gì họ muốn nhưng không được phân phối lại bản gốc
Mã nguồn mở ở Việt Nam
Hiện nay các trường đại học ở Việt Nam đã đưa mã nguồn mở trở thành một môn học chính thức cho sinh viên. Mục tiêu là để giúp các bạn hiểu được mã nguồn mở là gì, lợi ích nó mang lại là gì và cần phải chú ý gì đến các giấy phép. Đây là một môn học rất hay giúp lan toả tri thức về mã nguồn mở và thúc đẩy các bạn sinh viên tham gia vào phát triển nó. Ở Việt Nam đa phần chúng ta vẫn đứng trên vai trò là người sử dụng là chính, chưa có một tổ chức nào đủ lớn để tạo ra các phần mềm hay thư viện phục vụ cho Việt Nam và thế giới. Một phần do việc sử dụng các sản phẩm lậu tràn lan, phần là do chúng ta chưa quy tụ được những nhân tài vào một nơi để phát triển nguồn mở giống như các tổ chức khác đang làm. Chính vì điều này bọn mình đã thành lập tổ chức phi lợi nhuận youngmonkeys.org quy tụ các kỹ sư từ khắp các quốc gia, để tạo ra các hệ sinh thái, nền tảng, phần mềm và thư viện nguồn mở phục vụ cho Việt Nam và thế giới. Tất cả mã nguồn sẽ được mở trên nền tảng Github.
Tham khảo
-
Design Pattern
- Singleton Design Pattern
- Factory Design Pattern
- Factory Method Design Pattern
- Abstract Factory Design Pattern
- Builder Design Pattern
- Prototype Design Pattern
- Object Pool Design Pattern
- Chain of Responsibility Design Pattern
- Command Design Pattern
- Interpreter Design Pattern
- Iterator Design Pattern
- Mediator Design Pattern
- Memento Design Pattern
- Observer Design Pattern
- Observer Design Pattern - Xử Lý Exception
- Strategy Design Pattern
- Template Method Design Pattern
- Visitor Design Pattern
- Null Object Design Pattern
- Adapter Design Pattern
- Bridge Design Pattern
- Composite Design Pattern
- Decorator Design Pattern
- Flyweight Design Pattern
- Proxy Design Pattern
- S.O.L.I.D
- Clean code
- Lập trình socket
- Java Core
- Multi-Thread
- Spring
- Java Web
- Memory Caching
- Message Queue
- DevOps
- Xây dựng một nền tảng
- MongoDB
- MySQL timestamp
- Properties vs yaml
- Kotlin
- Lập Trình Machine Learning với PyTorch
- Mã Nguồn Mở
- Ezy HTTP
- Free Chat
- Một số kinh nghiệm với Git
- Review cho đồng nghiệp!
- Kinh nghiệm phát triển dự án phức tạp, nhiều người - Tuân thủ
- Kinh nghiệm phát triển dự án phức tạp, nhiều người - Lựa chọn người đi cùng
- Ngành công nghiệp phần mềm tại Việt Nam - Mới chỉ là bắt đầu.
- Ngành công nghiệp phần mềm tại Việt Nam - Dây chuyền sản xuất.
- Ngành công nghiệp phần mềm tại Việt Nam - Thị trường
- Ngành công nghiệp phần mềm tại Việt Nam - Công ăn việc làm
- Setup Dev Environment
- Hello World
- Create a Server Project
- Handle Client Requests
- Using ezyfox-server-csharp-client
- Using ezyfox-es6-client
- Client React.js Interaction
- Build And Deploy In Local
- Tham gia phát triển open source!
- Buôn có bạn, bán có phường
- Đam mê đi đâu rồi?
- Giữa lửa đam mê!
- Tương lai nào cho tester? Thay đổi để dẫn đầu xu thế!
- Tương lai nào cho tester? - Khi thế sự đổi thay!
- Tương lai nào cho lập trình viên? Khi không có hệ quy chiếu!
- Tương lai nào cho lập trình viên - Làm đến bao nhiêu tuổi?
- Tương lai nào cho lập trình viên? Có làm giàu được không?
- Tương lai nào cho lập trình viên? Có cân bằng cuộc sống được không?
- Tương lai nào cho lập trình viên - Nhảy việc đến khi nào?
- Tương lai nào cho lập trình viên - Con đường sự nghiệp (Career path)!
- Tương lai nào cho lập trình viên - Tổng kết lại!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn sơ cấp (Junior)!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn trung cấp (Intermediate)!
- Con đường sự nghiệp cho lập trình viên - Giai đoạn lành nghề (Senior)!
- Giai đoạn lành nghề (Senior) - Giữa những hoang mang!
- Giai đoạn lành nghề (Senior) - Phân hoá trong doanh nghiệp!
- Con đường sự nghiệp cho lập trình viên - Trở thành chuyên gia (Expert)!
- Con đường sự nghiệp cho lập trình viên - Trở thành người ảnh hưởng (Influencer)!
- Các giai đoạn phát triển của lập trình viên - Tổng kết lại!
- Metaverse - Câu chuyện 10 nghìn CCU (Người tham gia đồng thời)
- Metaverse có khả thi ở Việt Nam?
- Lựa chọn nghề nghiệp - DevOps!
- Lựa chọn nghề nghiệp - Project Manager (PM)!
- Lựa chọn nghề nghiệp - Data Engineer!
- Lựa chọn nghề nghiệp - BackEnd Engineer!
- “Talk is cheap. Show me the code” ― Linus Torvalds
- Lựa chọn nghề nghiệp - Web Front-End Engineer!
- Lựa chọn nghề nghiệp - Mobile Engineer!
- Lựa chọn nghề nghiệp - Game Engineer!
- Lựa chọn nghề nghiệp - Product Owner!
- Tuổi trẻ cần đột phá!
- Tuổi trẻ cần sự đồng cảm!
- Tuổi trẻ - điều đáng sợ đầu tiên là gì?
- Tuổi trẻ - Điều đáng sợ thứ 2 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 3 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 4 là gì?
- Nếu tận dụng hết năng lực thì sẽ thế nào?
- Tuổi trẻ - Điều đáng sợ thứ 5 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 6 là gì?
- Tuổi trẻ - Điều đáng sợ thứ 7 là gì?
- Tuổi trẻ - ham học hỏi là như thế nào?
- Đầu tư cho bản thân là gì?
- Học chủ động!
- Có nên quay lại công ty cũ?
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 1)
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 2)
- Làm cho startup (công ty nhỏ) hay làm cho công ty lớn? (Phần 3)
- Tự học
- Học tập tại doanh nghiệp
- Học tại trung tâm
- Cách đọc sách kỹ thuật hiệu quả
- Học trong một tổ chức mã nguồn mở.
- Câu chuyện lập trình viên - Công việc đầu tiên
- Câu chuyện lập trình viên - Mức lương đầu tiên
- Câu chuyện lập trình viên - 2018
- Định hướng là gì?
- Wordpress nguy hiểm thế nào?
- Danh sách 10 trung tâm đào tạo trình uy tín, chất lượng ở Hà Nội