Nguồn: hanoian.com.
1. Phần mềm mã nguồn mở là gì:
Open source software là những phần mềm được viết và cung cấp một cách tự do. Người dùng phần mềm mã nguồn mở không những được dùng phần mềm (executable hoặc binary files), mà còn được download mã nguồn (source code) của phần mềm (file text chứa ngôn ngữ lập trình, ví dụ như C, C++, Java, Smalltalk, Ruby ...), để tùy ý sửa đổi, cải tiến và mở rộng cho nhu cầu công việc của mình.
Có những phần mềm mã nguồn mở là no limit, có những cái có giới hạn nhất định về mặt thương mại. Các license mã nguồn mở là free, nhưng có những điều kiện kèm theo. Có khoảng 50 loại open source license khác nhau. Phổ biến nhất là GPL và Apache. Các bác nào quan tâm thì tự đi mà đọc, em cảm ơn.
2. Các loại phần mềm mã nguồn mở:
a) Application:
Các loại phần mềm ứng dụng, ví dụ như hệ điều hành, phần mềm văn phòng, phần mềm kế toán, phần mềm chỉnh sửa âm thanh hình ảnh, công cụ lập trình (IDE), Web server ...
Ví dụ:
* Hệ điều hành: Linux, Free BSD
* Phần mềm văn phòng: Open Office
* Công cụ lập trình: KDeveloper, Eclipse
* Web server: Apache
b) Software framework
Software framework là những tập hợp phần mềm (software package) cung cấp những chức năng thường gặp khi lập trình, để những lập trình viên khác dùng để viết phần mềm hiệu quả hơn, khỏi phải viết lại code cho những vấn đề đã có người giải quyết rồi.
Ví dụ:
* Framework cho web interface: Struts, Webwork, Tapestry, Velocity
* Framework cho light-weight container: Spring
* Framework cho security: Acegi
* Framework cho object-relational mapping: Hibernate
3. Những người làm phần mềm mã nguồn mở thu lợi từ đâu:
Tất cả những người làm phần mềm mã nguồn mở, tất nhiên là không thể bán phần mềm mã nguồn mở, vì nó là miễn phí, và ai cũng đọc source code được.
Nhưng không phải là người làm phần mềm mã nguồn mở viết phần mềm nhằm mục đích từ thiện, cứu vớt 50 triệu trẻ em ở châu Phi hay giúp đỡ một quốc gia nghèo đói như Việt nam.
Sau đây là lợi ích của mã nguồn mở:
a) Lợi dụng được chất xám của cộng đồng lập trình viên:
Khi một lập trình viên muốn có một chức năng gì đó, ví dụ muốn có một web server, nhưng không muốn bỏ tiền mua, anh ta hoặc một nhóm bạn có thể viết một web server đơn giản, open source nó. Thế là cộng đồng những lập trình viên muốn viết code cho web server có thể download source code về, chỉnh sửa, viết thêm vào, và lâu dần sẽ tạo ra một sản phẩm tốt, vì có sự tham gia và thử nghiệm của một cộng đồng lớn.
Apache (so far the best web server in the world) đã ra đời trong hoàn cảnh như thế.
IBM, sau khi chết một cách ngu xuẩn với Visual Age, đã quyết định open source Eclipse để lợi dụng chất xám của cộng đồng. Ngày nay, chúng ta thấy Eclipse is one of the best IDE. Và IBM cũng thu lợi bằng cách lấy lại những đóng góp của cộng đồng cho Eclipse để cho vào Web Sphere App Dev Studio, đem bán lấy hàng tỉ đô.
b) Lợi ích về công nghệ: Promote best practice và tránh Bureaucracy
Cộng đồng mã nguồn mở là một cộng đồng lớn với high spirit, kiểm soát chủ yếu bởi những kiến trúc sư phần mềm và lập trình viên có trình độ cao, giàu kinh nghiệm và đam mê lập trình.
Nếu không giỏi, tất nhiên chẳng ai tự viết ra được phần mềm hay framework, mà chỉ có đi copy, ăn cắp rồi chỉnh sửa, Việt hóa (như chúng ta thường thấy trong những phần mềm được giải cao của Trí tuệ Việt nam hay Nhân tài đất Việt).
Nếu không đam mê, thì chẳng ai sau mười mấy tiếng một ngày làm thân trâu ngựa cho loài chó dê, làm tay sai đế quốc xong về làm tay sai cho vợ con, mà sau khi ăn sushi trừ bữa, uống rượu ngoại cầm hơi, vẫn còn tiếp tục dành thời gian ngồi ôm laptop viết phần mềm thay vì ôm gái.
Với trình độ, kinh nghiệm, đam mê và sự thông minh, cộng đồng mã nguồn mở luôn luôn cố gắng phát minh công nghệ mới, ứng dụng công nghệ tốt, promote best practice và làm cho sản phẩm ngày càng tốt hơn.
Free-spirit của cộng đồng làm cho những phần mềm mã nguồn mở (usual) có thiết kế tốt hơn và chất lượng tốt hơn phần mềm được làm bởi những tập đoàn tư bản quan liêu thối nát, quản lí không phải bởi những người giỏi làm việc, mà chỉ bởi những con lợn tư bản only good at vibrating bullshit, những thằng không biết về kĩ thuật whatsoever, mà chỉ biết đến revenue, và công thức toán học duy nhất mà chúng biết là MBA = BMW.
Một ví dụ điển hình là JBoss Enterprise có chất lượng, features và performance far more better than IBM Web Sphere App Server.
c) Lợi ích về nghề nghiệp:
Những lập trình viên như Garvin King, Rod Johnson ... viết những open source framework để nhằm mục đích ứng dụng vào việc làm phần mềm cho khách hàng (viết phần mềm bảo hiểm, fianance ...) nhanh hơn, có chất lượng cao hơn.
Do đó họ có danh tiếng tốt, có nhiều khách hàng hơn.
Phần mềm của họ khi được cộng đồng đóng góp, sẽ có nhiều chức năng hơn, chất lượng cao hơn, sử dụng lại vào việc làm phần mềm tốt hơn.
Những người đóng góp vào việc viết phần mềm của họ cũng học hỏi được nhiều hơn, sử dụng công cụ thuần thục hơn, có nền tảng để phát minh ra các công nghệ khác.
Khách hàng khi thấy việc ứng dụng những open source framework đem lại thời gian phát triển nhanh hơn, chất lượng công việc cao hơn cũng sẵn sàng trả nhiều tiền hơn.
d) Lợi ích về tiền
d1 - Bán value added features:
Tất nhiên là không ai đi bán open source software, nhưng người ta có thể viết thêm các chức năng cho nó, cung cấp thêm giá trị gia tăng.
Ví dụ như Linux là free. Setup Linux nói chung là khó. Nhưng công ty Redhat viết thêm anaconda để setup linux dễ dàng hơn, đóng gói vào CD, DVD kèm với tài liệu hướng dẫn và bán.
Nên nhớ ở đây, Redhat không bán Linux, mà bán CD kèm với tài liệu và thêm anaconda. Hoặc Redhat thêm enterprise feature vào Linux và bán Redhat Enterprise Linux.
Nhưng do GPL, người dùng anaconda và added features của Enterprise phải được cung cấp source code, vì thế, chúng ta mới được download free Redhat Linux và Fedora (free Enterprise Linux) từ redhat.com.
Hoặc IBM bán WADS, nhưng license của Eclipse không bắt buộc những gì viết thêm vào phải open source, nên IBM (người Đức gọi IBM là Ich bin mueder - I am tired) cứ ung dung bán WADS.
d2 - Bán consultant service
Không phải phần mềm mã nguồn mở nào cũng dễ dùng.
Triển khai Linux Enterprise cho doanh nghiệp, hoặc phát triển J2EE cho những corporation lớn như Boeing, Airbus, Lockheed Martin, Nike, Liz Claiborne... dùng Spring, Hibernate, Acegi, Tapestry ... không phải là việc mà bọn giáo sư hay trẻ con học Ph.D. ở MIT, Berkerley, Standford hay Carnegie Melon ra có thể làm được.
Giá consultantcy cho những triển khai ứng dụng loại này hiếm khi dưới tiền triệu $.
Ví dụ project Nike trị giá khoảng 35 triệu, project Liz Claiborne khoảng hơn chục triệu.
Đấy là chưa kể tiền công vài trăm $ / giờ cho senior developer, senior consultant Ấn độ loại vét đĩa, tiền ăn sushi trừ bữa, uống rượu mạnh cầm hơi, tiền xe Lincoln, máy bay, khách sạn ...
d3 - Dùng phần mềm mã nguồn mở để làm phần mềm thương mại đem bán
Rất nhiều phần mềm thương mại sử dụng các framework mã nguồn mở để làm component trong phần mềm của mình.
Ví dụ Windchill, một phần mềm collaborative software chuyên dụng cho các tập đoàn sản xuất lớn như Boeing, Airbus, Lockheed Martin, NASA, Ferrari, Toyota ... sử dụng rất nhiều phần mềm và framework mã nguồn mở như Apache, Tomcat, Log4J, itext, JFreeChart, Jasper, Xerces, Xalan...
Giá của một Windchill deployment không bao giờ dưới tiền triệu.
e) Giải quyết khâu oai:
He..he..Lập trình viên cũng như các nghề khác như hàng thịt lợn hay gái bán hoa, đều có tự ái nghề nghiệp của mình.
Khi giải quyết được một vấn đề công nghệ khó, làm ra một phần mềm hay, có nhiều người biết cũng thích. Đôi khi có một số lập trình viên viết một số cái nho nhỏ để giải quyết khâu oai.
4. Lợi ích của mã nguồn mở đối với người sử dụng
* Được dùng phần mềm miễn phí.
* Có nhiều chọn lựa, không bị phụ thuộc vào một công ty nào.
* Có một cộng đồng support lớn.
* Có nhiều phần mềm đa dạng.
Còn nhiều lợi ích khác, em các bác lười viết.
5. Những điều cần quan tâm khi chuyển sang mã nguồn mở
Máy tính không phải là cái TV, để có thể đem TV đen trắng vứt ra bãi rác rồi bê về cái TV màu.
Khi chuyển từ một hệ điều hành này sang một hệ điều hành khác, từ một phần mềm này sang một phần mềm khác, người ta không thể vứt toẹt cái cũ đi rồi thay cái mới vào.Sau đây là những vấn đề cần quan tâm:
a) Những dữ liệu đã có:
Một công ty như JP Morgan không thể một sớm một chiều vứt bỏ toàn bộ dữ liệu khách hàng và tài chính được lưu trong mainframe hay AS 400 để nhảy qua làm mới trong J2EE.
Phải có integration planning to move data.
b) Availability of Application:
Một công ty chuyên làm đồ họa, vẽ bản vẽ trong một graphic apps trên Mac, không thể một sớm một chiều vứt bỏ Mac OS để nhảy qua Linux, nếu trên Linux không có graphic software that understand the existing graphic file format của các bản vẽ phò mà công ty đó đã vẽ trên máy Mac phò.
c) Existing application:
Một ngân hàng đần độn đã đầu tư khối tiền của và chất đen của sự ngu dốt để phát triển phần mềm quản lí ngân hàng trên Window (như đa số các ngân hàng ở Việt nam đã làm, đang làm và sẽ làm) thì không thể một sớm một chiều nhảy qua Linux, vứt đi vài năm và vài triệu USD đã đầu tư, rồi viết lại phần mềm quản lí ngân hàng từ đầu.
d) Education cost
Khi chuyển từ một phần mềm này qua một phần mềm khác, người sử dụng phải được đào tạo lại.
Phải tính toán đến chi phí tài liệu, đào tạo, thời gian nhân viên nghỉ để học ...
e) Productivity of User:
Một user chuyển từ phần mềm này sang phần mềm khác, bao giờ cũng cần thời gian để làm quen, học hỏi, rút kinh nghiệm. Productivity sẽ giảm trong một thời gian nhất định.
Tùy theo chức năng của phần mềm, việc giảm productivity sẽ có ảnh hưởng đến tài chính.
Ví dụ một nhân viên ngân hàng chuyển từ một phần mềm này sang phần mềm khác, thì giảm productivity sẽ giảm lợi nhuận của ngân hàng.
Còn một nhân viên lập trình Việt nam chuyển từ Window sang Linux hoặc từ Java qua Ruby, thì không có hại gì cho công ty, vì tất cả những gì nó viết trên Window hay Linux, bằng Java hay Ruby chỉ là "Hello, World" ;-)
f) Transition and deployment cost:
Khi chuyển phần mềm trong một công ty hay tổ chức lớn, thì phải tính đến transition and deployment code:
* Thời gian system down để triển khai phần mềm mới.
* Chi phí mua bán thiết bị để phục vụ cho phần mềm mới.
* Chi phí nhân công để triển khai phần mềm.
g) Availability of support
Các dự án phần mềm mở đa số là những dự án tình nguyện, trừ một số dự án có các công ty thương mại đứng đằng sau. Vì thế khi quyết định chuyển đổi phần mềm sang open source, công ty hay tổ chức phải cân nhắc:
* Dự án phần mềm mở mình định dùng có phát triển ổn định hay không.
* Phần mềm này có phổ biến rộng rãi trong cộng đồng hay không.
* Có dễ tìm chuyên gia tư vấn, đào tạo và hỗ trợ kĩ thuật cho phần mềm này hay không.
Tóm lại, quyết định "To move or not to move" từ phần mềm thương mại sang mã nguồn mở không phải - và không bao giờ - là một quyết định whole sale cho cả một quốc gia, một dân tộc hay thậm chí một công ty. Nó phụ thuộc vào hoàn cảnh, tổ chức của từng tập thể, đoàn thể, công ty cụ thể.
Trong nhiều trường hợp, dùng open source là có lợi. Trong nhiều trường hợp khác thì không.
Ví dụ một tổ chức giáo dục chỉ dùng hệ điều hành và phần mềm văn phòng, nhưng có nhiều máy tính, có thể chọn chuyển từ Window và M$ Office sang Linux và Open Office để giảm chi phí.
Ngược lại, một ngân hàng có vài trăm máy tính dùng Window, và đã đầu tư vài triệu $ vào việc phát triển phần mềm ngân hàng trên Window, thì việc chọn trả tiền bản quyền cho mấy trăm máy Window, tốn vài chục nghìn, sẽ kinh tế hơn là chuyển sang Linux để trốn tiền bản quyền, rồi chi mấy triệu để viết lại phần mềm ngân hàng từ đầu.
Hoặc một công ty thiết kế đồ họa trên Mac với phần mềm chuyên dụng chỉ có cho Mac, thì cũng không chuyển sang Linux được.
Đối với công chúng đần độn, thì nói chung là dùng Window vẫn dễ hơn Linux, Hơn nữa nói chung thì bọn đần độn không nên dùng máy tính. The more they sleep, the less harm they cause.
Chỉ có bọn cực kì ngu xuẩn hoặc bọn tìm cách ăn cắp tiền dự án của nhà nước thì mới tính chuyện convert whole sale cả nước hay cả bộ hay ban ngành sang dùng open source. Bọn này là bọn phản động, muốn phá hoại chủ nghĩa xã hội bằng cách đưa ra những dự án bất khả thi, không có lợi gì cho ai, tốn tiền của Tổ quốc và nhân dân, trong khi Tổ quốc còn khó khăn và nhân dân còn nghèo. Các đồng chí ! Bắt lấy chúng!