ซอฟต์แวร์โอเพนซอร์ซ คือ ซอฟต์แวร์ที่เปิดแผยหลักการหรือแหล่งที่มาของเทคโนโลยีของซอฟต์แวร์นั้นให้บุคคลภายนอกได้ใช้ ภายใต้เงื่อนไขบางประการที่เปิดโอกาสให้ผู้ใช้ทำการแก้ไข ดัดแปลงและเผยแพร่ซอร์สโค้ดได้ ภายใต้เงื่อนไขทางข้อตกลงทางกฎหมาย เช่น สัญญาอนุญาตสาธารณะทั่วไปของกนู (จีพีแอล) และสัญญาอนุญาตแจกจ่ายซอฟต์แวร์ของเบิร์กลีย์ (บีเอสดี) ซอฟต์แวร์โอเพนซอร์ซที่เป็นที่รู้จักกันดีได้แก่ เพิร์ล ไฟร์ฟอกซ์ ลินุกซ์ เป็นต้น

ปัจจุบันมีการกำหนดโดยกลุ่มผู้กำหนดโอเพนซอร์ซที่วางข้อกำหนดคำนิยาม 10 ประการในการกำหนดว่าเงื่อนไขที่เกี่ยวกับโอเพนซอร์ซ คือ

  1. เงื่อนไขจะต้องไม่จำกัดผู้หนึ่งผู้ใดในการจำหน่ายหรือการจ่ายแจกซอฟต์แวร์ให้เป็นส่วนใดส่วนหนึ่งของซอฟต์แวร์แบบแยกส่วนที่ประกอบด้วยซอฟต์แวร์จากหลากหลายแหล่ง และจะต้องไม่มีข้อกำหนดใด ๆ ที่เกี่ยวกันกับค่าใช้สิทธิหรือค่าสิทธิใด ๆ ในการจำหน่ายซอฟต์แวร์นั้น กล่าวคือให้มีการจ่ายแจกได้อย่างไม่มีการคิดค่าตอบแทน
  2. โปรแกรมนั้นจะต้องเผยแพร่โปรแกรมต้นฉบับ (ซอร์สโค้ด) และจำต้องยินยอมให้มีการแจกจ่ายโปรแกรมต้นฉบับได้เช่นเดียวกันกับโปรแกรมที่อยู่ในรูปของการแปลงเป็นโปรแกรมที่ใช้งานได้แล้ว โดยหากแม้ไม่สามารถนำสินค้านั้นแจกจ่ายได้พร้อมโปรแกรมต้นฉบับ ก็จำต้องมีสถานที่ในการแจกจ่ายแบบสาธารณะ เพื่อให้สามารถเข้าถึงโปรแกรมต้นฉบับ ซอร์สโค้ดได้โดยปราศจากค่าใช้จ่ายหรือต้นทุนอื่นใด ทั้งนี้โปรแกรมต้นฉบับนั้นจะต้องอยู่ในรูปแบบที่นักโปรแกรมสามารถที่จะแก้ไขได้โดยจำต้องปราศจากซึ่งการเขียนโปรแกรมต้นฉบับในลักษณะที่เป็นการสับสนโดยเจตนา รวมทั้งต้องไม่มีลักษณะของโครงสร้างการทำงานของโปรแกรมต้นฉบับที่จำต้องมีตัวแปลภาษาเฉพาะ (translator) หรือมีส่วนที่ต้องนำเข้าสู่โปรแกรมในรูปแบบของโปรแกรมที่แปลงสภาพแล้ว (preprocessor)
  3. เงื่อนไขจะต้องยินยอมให้สามารถทำการพัฒนาต่อยอดได้ ภายใต้เงื่อนไขการจ่ายแจกเช่นเดียวกันกับเงื่อนไขของโปรแกรมฉบับเริ่มต้น
  4. เงื่อนไขอาจจะวางข้อกำหนดในการจำกัดเผยแพร่โปรแกรมต้นฉบับ ฉบับที่แก้ไขแล้วได้ต่อเมื่อเงื่อนไขนั้นได้ยินยอมให้มีการแจกจ่ายแพตช์ไฟล์ (patch file) พร้อมโปรแกรมต้นฉบับเพื่อประโยชน์ในการแก้ไขโปรแกรมนั้นในเวลาทำการสร้างโปรแกรม ทั้งเงื่อนไขจำต้องยินยอมให้มีการแจกจ่ายโปรแกรมนั้นที่ได้รับการแก้ไขโปรแกรมต้นฉบับได้ แต่เงื่อนไขนั้นอาจจะกำหนดให้โปรแกรมฉบับต่อยอดใช้ชื่อที่แตกต่างหรือใช้รุ่นที่แตกต่างจากโปรแกรมฉบับเริ่มต้นก็ได้
  5. เงื่อนไขจะต้องไม่จำกัดเฉพาะบุคคลหรือกลุ่มบุคคลใด ๆ
  6. เงื่อนไขต้องไม่จำกัดการใช้งานของโปรแกรมในรูปแบบใดรูปแบบหนึ่งอันเป็นการเฉพาะ
  7. เงื่อนไขที่กำหนดจะต้องใช้กับทุกคนที่เกี่ยวข้องกับโปรแกรมนั้น
  8. สิทธิใด ๆ ของโปรแกรมนั้นจะต้องไม่มีเงื่อนไขที่เฉพาะเจาะจงกับสินค้าหนึ่งสินค้าใด
  9. เงื่อนไขต้องไม่กำหนดอันเกี่ยวกับข้อจำกัดในการใช้ร่วมกันกับโปรแกรมอื่น เช่นกำหนดให้ต้องใช้โปรแกรมดังกล่าวกับโปรแกรมแบบโอเพนซอร์ซเท่านั้น
  10. ต้องไม่มีข้อกำหนดใด ๆ ในเงื่อนไขที่กำหนดให้ใช้เทคโนโลยีของใครหรือเทคโนโลยีแบบใดเป็นการเฉพาะ

รายละเอียดเพิ่มเติมเกี่ยวกับโอเพนซอร์ส

นอกเหนือจากข้อกำหนด 10 ประการข้างต้น ที่จะเป็นเครื่องบ่งบอกว่าซอฟต์แวร์นั้นๆ เป็นโอเพนซอร์สหรือไม่แล้วนั้น ซอฟต์แวร์ยังมีสัญญาอนุญาต (License) ที่เป็นข้อกำหนดอีกด้วยว่าเรามีสิทธิ์ใช้งานซอฟต์แวร์นั้นๆ ได้อย่างไรบ้าง ซึ่งสัญญาอนุญาตที่เป็นโอเพนซอร์สที่เป็นที่นิยมก็มีด้วยกันดังนี้

สัญญาอนุญาต ใช้งานได้อย่างเสรี การแจกจ่ายชิ้นงานที่ได้จากการใช้ซอฟต์แวร์ เปิดเผยซอร์สโค้ส การแก้ไขซอร์สโค้ด เผยแพร่ซอร์สโค้ดที่ได้แก้ไขแล้ว การมีส่วนประกอบที่เป็นซอฟต์แวร์เชิงพานิช
GPL (2) O O O O O X
LGPL O O O O O O
MPL O O O O O O
BSD license O O O O X O
Apache lilcense O O O O X O