ออราเคิลยื่นเอกสารอุทธรณ์ฉบับเต็มที่ประกาศไว้ตั้งแต่เดือนพฤศจิกายนที่ผ่านมา คัดค้านคำตัดสินของศาลชั้นต้นที่ระบุว่า API ไม่มีลิขสิทธิ์ ตรงกับแนวทางก่อนหน้านี้ที่การอุทธรณ์จะเน้นหนักไปที่ API เพราะสิทธิบัตรในส่วนของ JVM หลายตัวนั้นกำลังจะหมดอายุแล้ว
ส่วนที่เป็นข่าวที่สุด คงเป็นส่วนคำอุปมาอุปมัยระหว่าง API ของจาวากับนิยายเรื่องแฮร์รี พอตเตอร์ ว่า
แอน ดรอยด์ ต้องการตีพิมพ์หนังสือขายดี เธอก็อปปี้หนังสือเรื่อง "แฮร์รี พอตเตอร์และภาคีนกฟีนิกซ์" เธอก๊อปปี้ชื่อบททั้งหมด เธอก๊อปปี้ประโยคแรกของแต่ละย่อหน้า แล้วเขียนส่วนที่เหลือขึ้นใหม่ เธอรีบวางตลาดหนังสือของเธอวางตลาดก่อนผู้เขียนคนแรกโดยใช้ชื่อหนังสือว่า "แฮรี่ พอตเตอร์ภาค 5 โดยแอน ดรอยด์"
เจ เค โรว์ลิง ฟ้องเพื่อปกป้องลิขสิทธิ์ แต่แอน ดรอยด์ระบุว่าเธอเขียนหนังสือขึ้นใหม่เกือบทั้งหมด และการวางโครงเรื่องให้คล้ายกันเป็นการใช้งานอย่างเป็นธรรม
ออราเคิลระบุว่าคดีจาวาเป็นรูปแบบเดียวกับการเลียนแบบนิยายที่ระบุมา และยกตัวอย่างว่าบทกลอนที่สั้นกว่าก็ได้รับการคุ้มครองลิขสิทธิ์ ตัวซอฟต์แวร์เองไม่ควรถูกยกเว้น
ใน Groklaw ยังมีการพูดถึงคดีก่อนหน้านี้จำนวนหนึ่งเพื่อเทียบเคียงว่า API ควรได้รับการคุ้มครองหรือไม่ โดยกฎหมายลิขสิทธิ์ของสหรัฐฯ นั้นระบุชัดเจนว่าการการคุ้มครองวิธีการหรือกระบวนการต้องใช้กฎหมายสิทธิบัตรเท่านั้น แต่การใช้ "ชื่อ" กระบวนการ เช่น ชื่อคลาสและชื่อฟังก์ชั่นก็จะเป็นการทดสอบกฎหมายสหรัฐฯ ว่าจะคุ้มครองไปถึงชั้นไหน
ก่อนหน้านี้มีการระบุอย่างชัดเจนถึงส่วนที่ไม่ครอบคลุมกฎหมายสิขสิทธิ์ เช่น คำขวัญ, สโลแกน, สูตรอาหาร, ส่วนประกอบอาหาร, ฯลฯ คดีจาวาคดีนี้หากถึงที่สุดแล้วจะบอกว่า ชื่อฟังก์ชั่นและชื่อคลาสและเป็นส่วนหนึ่งของส่วนที่ไม่คุ้มครองโดยกฎหมายลิขสิทธิ์หรือไม่
ในแง่ของวงการคอมพิวเตอร์ หากคดีนี้ถึงที่สุดจะเปลี่ยนโฉมวงการในอีกหลายส่วน ทรัพย์สินทางปัญญาจำนวนมากถูกปกป้องโดยส่วนของ "อินเทอร์เฟซ" เช่น API ต่างๆ ของไมโครซอฟท์, ชุดคำสั่ง x86 ของอินเทลและเอเอ็มดี, ชุดคำสั่งของ ARM, รวมไปถึงเว็บเซอร์วิซของเว็บต่างๆ ทั่วโลก หากไม่มีการคุ้มครองหมายถึงเราจะสร้างบริการที่ "อินเทอร์เฟซเหมือนกัน" เช่น ออกแบบซีพียูที่ทำงานชุดคำสั่งรูปแบบเดียวกับ ARM ได้โดยมีการอิมพลีเมนต์ภายในต่างกัน
ทรัพย์สินทางปัญญาเช่นนี้อีกหลายส่วนก็เป็นทรัพย์สินทางปัญญาที่ออราเคิลถืออยู่ เช่น ชุดคำสั่งเพิ่มเติมจาก SQL ปกติในระบบฐานข้อมูลของออราเคิล หรือกระสั่งชุดคำสั่งของชิป SPARC ดังนั้นคดีนี้จึงเป็นบททดสอบที่ออราเคิลแพ้ไม่ได้
ที่มา - The Register, Groklaw
Comments
ออราเคิลสู้ๆ เป็นกำลังใจให้น้า
555+
ตรรกะเพี้ยนๆ ในการเปรียบเทียบงานวรรณกรรม กับงานซอฟท์แวร์
รู้ทั้งรู้ว่าบริบทมันต่างกัน ผลิตภัณฑ์ที่ออกมาก็ต่างกัน สำหรับงานวรรณกรรมถ้าทำอย่างนั้นก็ลอกแนวคิดของผลงานไปเต็มๆ สร้างความเสียหายแก่เจ้าของลิขสิทธิ์ แต่ในทาง API ของซอฟท์แวร์นั้นมันเป็นเรื่องของความเข้ากันได้
ไม่น่าเชื่อว่าบริษัทยักษ์ใหญ่ระดับโลกจะมีตรรกะเพี้ยนๆ ออกมาเป็นข่าวด้วย แต่ถ้ามองด้วยความเข้าใจโลก ก็คิดว่าเป็นการดิ้นเฮือกสุดท้ายแล้วกัน อารมณ์ว่าโดนคนประณามก็ยอม
อัลกิรทึมบนโลกนี้มีไม่จำกัดเหมือนเนื้อหานิยายครับ ถ้าผมนั่งคิดแทบตาย แต่อยู่ดีๆ มีคนมาเอาไปแล้วเปลี่ยนแค่ตัวแปร กับอัลกอริทึมเล็กๆน้อยๆแล้วบอกว่าเป็นของเขาเขาคิดเองหมดก็น่าเจ็บใจอยู่ครับ(ซึ่งตอนนี้ผมก็ทำอยู่แต่เพื่อการศึกษานะไม่ได้ขาย><)
ปล.การฟ้องร้องบางทีไม่ได้จะเอาชนะแต่แค่กำลังบอกว่าแกกำลังล้ำเส้นนะ...
พฤติการที่ฟ้องเป็นเรื่อง API ครับ เรื่อง algorithm จบไปนานแล้วว่าไม่มีปัญหา
มันเรื่องของ API นะครับ ผมว่าชีวิตผมต้องมีปัญหาแน่ ๆ ถ้าจะตั้งชื่อ API ต้องดูลิขสิทธิ์ก่อนทุกครั้ง - -"
เพ้อเจ้อนะ เทพพยากรณ์
เดี๋ยว Smith ก็มาจัดการแล้วครับ
พี่จะคุ้มครองถึงชื่อเลยเหรอครับ
I need healing.
ข่าวต่อมา "เจ เค โรว์ลิงยื่นฟ้องออราเคิล ฐานเอาชื่อเธอและชื่อหนังสือแฮรี่ พอตเตอร์มาใช้เพื่อหาผลประโยชน์"
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
ฮ่าห้า๕5Ha
Joanne Jo Rowling ชื่อคนแต่งช่างปั้นหม้อครับ แต่ J K Rowling มันนามปากกา
คนละคน?
ใครเป็นเจ้าของวลี "กาลครั้งหนึ่ง นานมาแล้ว" หรือ "Once upon a time" ละนี่ ถ้ามาทวงสิทธ์กันคงป่วนกันแย่
อิสป เลยมั๊งครับ
จดสิทธิบัตร เมดธอด .toString คลาสไหนใช้ เก็บตังแม่ม เหอๆ -*-
iPAtS
ใช้ .to_s แทน
เอางั้นเลยเหรอ ...
ว่าแต่คนเขียน Hello World นี่เค้ายังอยู่มั๊ยครับ
ถ้าคนเขียนโปรแกรม hello world ยืนฟ้องเรียกเก็บลิขสิทธิ์นี่ โปรแกรมเมอร์ทั้งโลกเลยนะ....
เปลี่ยนไปใช้ hi world แทน
หรือ 'sup world
'sup mann
'sup dude
yo yo!
hello kitty
Dennis M. Rithcie เสียชีวิตไปเมื่อปี 2011 ครับ
ส่วน Brian Kernighan ยังมีชีวิตอยู่
ตัวอย่างนี้ปรากฎครั้งแรกในหนังสือ The C Programming Language
lewcpe.com, @wasonliw
ของไทยเราก็มี "สวัสดีชาวโลก" ใครเคยใช้เดี๋ยวบริษัทผลิตปุ๋ยตาม้าบินฟ้องเอาได้ 555+
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
ถ้าผมเป็นศาลคนจะสั่งให้เปลียนชื่อfunctionที่ใช้สำหรับคูณ(ไม่ให้ใช้multiplyและที่มีความหมายเหมือนกัน) และการใช้ x ออกไปให้ใช้คำอื่นๆแทนในภาษาใหม่ของgoogleเพื่อดูว่าgoogleสามารถทำได้โดยdeveloperไม่มีปัญหาในการหาฟังก์ชันใช้จริง
กูเกิล น่าจะซื้อ จาวา ไปด้วยเลย
ไม่น่าปล่อยให้อยู่ในมือ ออราเคิล
ไร้สาระ
ตามฉบับพิมพ์ภาษาไทยใช้ "แฮร์รี่" นะครับ
ถ้าเทียบกันอย่างนี้ โปรแกรมเมอร์ควรได้รับคุ้มครองซอสโค้ดในฐานะวรรณกรรม?
ตามกฎหมายก็เป็นอย่างนั้นอยู่แล้วนิครับ?
อยากให้ Oracle ทำเว็ปตรวจสอบนะครับว่าชื่อฟังชันหรือคลาสมีมีคนใช้ไปรึยัง หรือทำ checker ยัดลง netbeans เลยก้อได้ น่าจะลดปัญหานี้ได้นะครับ
อยากเข้าไปช่วยทนาย Google จัง วิธีโต้แย้งง่ายมาก โดยให้ทาง Oracle อธิบายความหมายของโค้ดต่อไปนี้
ประเด็นคือ หากท่านต้องการป้องกันชื่อของบทต่าง ๆ ในวรรณกรรม รวมถึงประโยคแรกของทุกบทจริง ก็ต้องเขียนโค้ดเป็นอย่างอื่น ซึ่งในทางเทคนิคทำได้เช่น default interface หรือ default abstract class การเขียนโค้ดในลักษณะนี้มันมีความชัดเจนในเรื่องขององค์ประกอบภายใน (เจตนา, ความตั้งใจ) ของผู้เขียนโค้ดตั้งแต่แรกแล้วว่าต้องการให้ API สามารถใช้ได้โดยทั่วไป และคนอื่นสามารถเขียน API ที่มีโครงสร้างเดียวกัน แต่มี algorithm ที่ต่างออกไปได้
เคสนี้ขอถือหางออราเคิลแหะ เพราะการออกแบบ object model ให้ดีนี่ใช้ "พลัง" ไม่น้อยเลย ทั้งการออกแบบโครงสร้างและการออกแบบชื่อ
ในกรณีนี้ โดยส่วนตัวแล้วสิ่งที่ต้องการคือ เมื่อออราเคิลได้สิทธิ์ในส่วนนี้ อยากให้ออราเคิลให้สิทธิ์นี้แบบ fair use .. ซึ่งโดยส่วนตัวแล้ว คิดว่าสิ่งนี้คงเกิดยากแหง แต่ก้อไม่ใช่เหตุที่จะให้ไปถือหางข้างกูเกิลให้ออราเคิลไม่ได้สิทธิ์นี้อยู่ดี (เฮ้อ แอบกลุ้มแต่กลุ้มไม่มาก ห่างฟากจาวามานานละ เพราะหลังๆ foundation มันพัฒนาช้าเหลือเกิน .)
แต่เกรงว่าถ้า Oracle ชนะจิง คงไม่ใช่ปัญหาแค่ของ java หรอกนะครับ :D
ใช่ครับ ถ้าเป็นอย่างนั้น แค่เราตั้งชื่อคลาสว่า JOptionPane ก็ถือว่าละเมิดลิขสิทธิแล้ว
(ใช้ชื่อคลาสที่ชื่อโหลน้อยหน่อยนะ)
ในเม้นแรกถึงได้เลี่ยงไปใช้คำว่า object model อ่ะ.. คือต้องมองรวมหมดตั้งแต่ namespace ยัน member เลย, ไม่ใช่หยิบมาแค่ชื่อ class หรือ member แบบโดดๆ
หากถือว่า object model คือ tree .. จะไม่เทียบทั้ง tree และไม่เทียบราย node, แต่จะเทียบ top-to-bottom path เปนราย path ไป (ดังนั้นพวก interface/abstract จะไม่มีผล เพราะเมื่อ implement/inherit ออกมาแล้ว มันจะมี full name ต่างกัน)
ทว่าต้องดูเชิง semantic ด้วยนะ.. เช่น พวก namespace ที่พ่วงชื่อบริษัท ไม่ใช่เปลี่ยนชื่อบริษัทแล้วจะถือว่าต่างกัน, หรือเปลี่ยน system เปน framework/foundation/etc แล้วก้ออาจไม่ถือว่าต่างกัน, แต่ระหว่าง data กับ graphics/io/etc นี่น่าจะถือได้ว่ามันต่างกันละ (พวก gardening namespace นี่ไม่สนใจเช่นกัน อย่าง helpers/misc/etc ไรงี้ การ ตัด/เพิ่ม/เปลี่ยน ไม่ได้ถือว่าทำให้ต่าง เพราะแทบไม่มีผลอะไรในเชิง semantic)
ถ้าพูดถึง object model แล้ว แม้เรื่องชื่อจะสำคัญอยู่ไม่น้อย แต่มันไม่ได้มีแค่เรื่องชื่ออย่างเดียวเช่นกัน.. คนที่เก่งอาจเฉยๆ แต่คนที่ไม่ค่อยเก่งนักอาจจับความต่างได้ว่า object model อันไหนใช้ยากง่ายกว่ากัน คือถ้าออกแบบมาดีจะช่วยให้เดา mechanism ได้สะดวก ทำให้เข้าใจและเอาไปใช้ต่อได้ง่าย (พูดอีกแบบคือ ใน object model ก้อมี algo เช่นกัน) ซึ่งการออกแบบรวมถึงการตั้งชื่อต้องล้อคู่กันไปกับ high-level syntax ของภาษาต่อด้วยอีกชั้นนึง เพื่อช่วยให้เมื่อโค้ดออกมาแล้วทำความเข้าใจได้ง่าย การ debug/maintenance/reuse โค้ดในภายหลังจะได้สะดวก ซึ่งรวมถึงการแก้ไขปรับปรุงโค้ดในภายหลังเพื่อใช้กับ version ใหม่ๆ ของ object model ด้วย
ฟังดูวุ่นชะมัด แต่ไงคงต้องคุยกันให้ดี จะ ignore เลยคงไม่เหมาะเช่นกัน.. ของมันไม่ได้มาฟรี ถ้าคุยกันอย่างมีเหตุผล ถ้าต่างฝ่ายต่างมาตกลงกันอย่างแฟรๆ คงหาทางจบได้ (และหวังว่าจะจบด้วยดี แม้หลังๆ จะไม่ค่อยได้สุงสิงกับจาวาแล้ว แต่ว่าแอบร่วมลุ้นผลด้วยเช่นกัน)
ความเห็นคุณ tontpong กำลังบอกว่าการเลียนแบบชื่อ API ต่างๆมันคือการเลียนแบบแนวความคิดการออกแบบระบบด้วยปะครับ?
ถ้าผมจะยกตัวอย่างสมมุติแบบง่าย (เวอร์ๆ) แบบนี้ถูกต้องมั้ยครับ?
เช่น ในอดีตคนทั้งโลก print ข้อความทักทายโดยแยก function กันหมด helloWorld(), helloDog(), helloCat()
วันนึง Oracle คิด function ที่ใช้ง่ายกว่าชื่อ helloSomethingYouPassIntoThisFunc(String smt)
ทีนี้ Google เห็นว่าดี เลยขอลอกชื่อ API นี้ ซึ้งมันก็เหมือนการลอกแนวความคิดเรื่องการ pass parameter เข้าไป print ดีกว่าเขียนหลาย function ใช่ปะ
ปล.คือในความเป็นจริงมันคงจะยากกว่่านี้อะนะ
ก่อนอื่นเลย.. โดยส่วนตัวแล้ว ผมไม่ได้มองแค่เรื่อง "ชื่อ" อ่ะ
และเพื่อป้องกันความสับสน จะขอเลี่ยงไปเอ่ยถึง object model แทนการเอ่ยถึง api ละกัน.. ทว่ามันคือเรื่องเดียวกันแหละ ขออ้างถึงเอกสารของ w3c เกี่ยวกับ dom ตามนี้ละกัน "Document Object Model (DOM) is an application programming interface (API) for valid HTML and well-formed XML documents [www.w3.org/TR/DOM-Level-3-Core/introduction.html]"
ทีนี้พอเอ่ยถึง object model แล้ว เชื่อว่าคนส่วนใหญ่น่าจะนึกไปถึงภาพของ class diagram เช่นกัน.. จุดที่น่าสนคือส่วนนี้แหละ คือเมื่อระบบเริ่มใหญ่ จะมีโอกาสมากน้อยแค่ไหนที่พอทำ diagram ออกมาแล้วจะได้ภาพเหมือนกัน
ซึ่งตอนทำ class diagram นี่ เชื่อว่าทุกคนคงคิดไว้คร่าวๆ แล้วด้วยว่า interaction จะทำเช่นไร ไม่งั้น ตอนเอาไปใช้จะมีปัญหาเกี่ยวกับ coupling/cohesion แล้วพามึนแน่ๆ (หรือถ้าเอาไปใช้แล้วมีปัญหา ก้อจะ refactor/restructure ตัว class diagram ซะใหม่)
ดังนั้นใน object model จึงมี mechanism หรือ algo ฝังอยู่ด้วย ไม่ได้มีแค่เรื่องการตั้งชื่อ (หรือถ้าจะพูดถึงเรื่องการตั้งชื่อ เรื่องนี้นี่มันต้องใช้พลังเช่นกัน ไม่งั้นคนเอาไปใช้คงมึนถ้าหาก ชื่อไม่สื่อไม่คุ้น/ชื่อยาว/ชื่อขาด consistency)
เคส ออราเคิล กับ กูเกิล นี่คิดว่ายิ่งง่าย.. เหมือนจะยอมรับกันอยู่แล้ว ว่ากูเกิลเอา object model ไปใช้ ไม่ใช่ว่าคิดออกมาใหม่แล้วเผอิญผลดันเหมือนกัน ดังนั้นน่าจะมีปัญหาแค่ว่าทุกคนใช้ object model ของคนอื่นได้ฟรีมั้ย
ยกอีก ตย .. สมมติมีคนทำ engine ขึ้นมา แน่นอนว่ามันต้องมี api หรือ object model สำหรับใช้ร่วมกับ engine ด้วย, ถ้ามีคนทำจะ engine มาขายแข่ง สามารถเอา object model ของคนก่อนมาใช้ได้เลยมั้ย?
แน่นอนว่า interop/portability/compatibility นั้นควรมี แต่มันคืออีกเรื่องนึง.. โดยส่วนตัวแล้ว คิดว่าการ ปิด/เปิด ส่วน object model นี่มันคือสิทธิ์ของคนที่ออกแบบ (แต่เวลาเลือกใช้ผมไม่เลือกคนที่ปิด ทว่าอีกมุมนึงนั้น ผมมักทำ abstraction layer ไว้ด้วยเช่นกัน เพื่อฝัง code pattern ไว้ในนั้นให้ใช้ได้ง่ายๆ)
อีกคำถามที่ตามมาคือ.. หาก object model ต้องเปิดเสมอ แล้ว data model ต้องเปิดเสมอด้วยมั้ย (มีคนที่ขาย data model อยู่เยอะแยะ รายได้งามด้วย ปีๆ นึงมีรายได้กันหลายล้านเลย)
แม้สิ่งที่ออราเคิลทำจะดูขัดกับเป้าหมายและแนวทางที่ผ่านมาของจาวา.. แต่ถ้าออราเคิลมีสิทธิ์ เค้าจะใช้สิทธิ์มั้ย อันนี้คงไปบังคับโดยตรงไม่ได้ ถ้าจะใช้มาตรการเชิงสังคมกันนั้นอีกเรื่อง ออราเคิลมาบังคับไม่ให้คนอื่นใช้สิทธิ์นี้ไม่ได้เช่นกัน
ปล. ทำไมยิ่งตอบยิ่งยาวหว่า >.<"
ขอบคุณมากครับผม ผมเข้าใจจากคำว่า "ระบบใหญ่ๆ มันมีโอกาสที่ Class Diagram เหมือนกันเป๊ะมั้ย"
สรุป ลอกแน่ๆ ดังนั้นประเด็นอยู่ที่ว่า "ทุกคนใช้ object model ของคนอื่นได้ฟรีมั้ย" ในระบบใหญ่ๆยากๆ
API น่ะ ไม่ใช่ประโยคแรกของทุกย่อหน้าหรอกมั้ง ?
ผมว่าก็แค่ชื่อบทมากกว่า :P
ส่วนตัวผมมองว่า Software เป็น วรรณกรรม อันมี ...ลิขสิทธิ์
ส่วน API ผมมองมัน เป็น Name หากให้มีความหมาย ทางกฏหมาย ต้องไปจด ...เครื่องหมายการค้า
ปล. ส่วนตัวที่ศึกษากฏหมาย ลิขสิทธิ์ - เครื่องหมายการค้า และ ติดตาม แนวทางการพิจารณา ของ อเมริกา ผมเชื่อ Oracle แพ้ครับ
ผมว่า ต้องจดชื่อทุกคลาส/ฟังก์ชั่นด้วยนะ ถึงจะคุ้มครองหมดทั้งชุด
+1
ปกติเวลาจด ...เครื่องหมายการค้า
ต้องระบุอยู่แล้วว่า เป็นหมวดไหน ...ให้ระบุเป็น API เท่านั้นจบ ฮิ ๆ ๆ
พ่อตูชื่อ xxx ตูเรียกได้คนเดียวคนอื่นห้ามเรียก ละเมิด
android โต้ ถ้าก็อบมาจริง คงพรุนไปแล้ว (ฮา)
ไม่รู้จะเข้าข้างใคร