Google

ออราเคิลยื่นเอกสารอุทธรณ์ฉบับเต็มที่ประกาศไว้ตั้งแต่เดือนพฤศจิกายนที่ผ่านมา คัดค้านคำตัดสินของศาลชั้นต้นที่ระบุว่า API ไม่มีลิขสิทธิ์ ตรงกับแนวทางก่อนหน้านี้ที่การอุทธรณ์จะเน้นหนักไปที่ API เพราะสิทธิบัตรในส่วนของ JVM หลายตัวนั้นกำลังจะหมดอายุแล้ว

ส่วนที่เป็นข่าวที่สุด คงเป็นส่วนคำอุปมาอุปมัยระหว่าง API ของจาวากับนิยายเรื่องแฮร์รี พอตเตอร์ ว่า

แอน ดรอยด์ ต้องการตีพิมพ์หนังสือขายดี เธอก็อปปี้หนังสือเรื่อง "แฮร์รี พอตเตอร์และภาคีนกฟีนิกซ์" เธอก๊อปปี้ชื่อบททั้งหมด เธอก๊อปปี้ประโยคแรกของแต่ละย่อหน้า แล้วเขียนส่วนที่เหลือขึ้นใหม่ เธอรีบวางตลาดหนังสือของเธอวางตลาดก่อนผู้เขียนคนแรกโดยใช้ชื่อหนังสือว่า "แฮรี่ พอตเตอร์ภาค 5 โดยแอน ดรอยด์"

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

ออราเคิลระบุว่าคดีจาวาเป็นรูปแบบเดียวกับการเลียนแบบนิยายที่ระบุมา และยกตัวอย่างว่าบทกลอนที่สั้นกว่าก็ได้รับการคุ้มครองลิขสิทธิ์ ตัวซอฟต์แวร์เองไม่ควรถูกยกเว้น

ใน Groklaw ยังมีการพูดถึงคดีก่อนหน้านี้จำนวนหนึ่งเพื่อเทียบเคียงว่า API ควรได้รับการคุ้มครองหรือไม่ โดยกฎหมายลิขสิทธิ์ของสหรัฐฯ นั้นระบุชัดเจนว่าการการคุ้มครองวิธีการหรือกระบวนการต้องใช้กฎหมายสิทธิบัตรเท่านั้น แต่การใช้ "ชื่อ" กระบวนการ เช่น ชื่อคลาสและชื่อฟังก์ชั่นก็จะเป็นการทดสอบกฎหมายสหรัฐฯ ว่าจะคุ้มครองไปถึงชั้นไหน

ก่อนหน้านี้มีการระบุอย่างชัดเจนถึงส่วนที่ไม่ครอบคลุมกฎหมายสิขสิทธิ์ เช่น คำขวัญ, สโลแกน, สูตรอาหาร, ส่วนประกอบอาหาร, ฯลฯ คดีจาวาคดีนี้หากถึงที่สุดแล้วจะบอกว่า ชื่อฟังก์ชั่นและชื่อคลาสและเป็นส่วนหนึ่งของส่วนที่ไม่คุ้มครองโดยกฎหมายลิขสิทธิ์หรือไม่

ในแง่ของวงการคอมพิวเตอร์ หากคดีนี้ถึงที่สุดจะเปลี่ยนโฉมวงการในอีกหลายส่วน ทรัพย์สินทางปัญญาจำนวนมากถูกปกป้องโดยส่วนของ "อินเทอร์เฟซ" เช่น API ต่างๆ ของไมโครซอฟท์, ชุดคำสั่ง x86 ของอินเทลและเอเอ็มดี, ชุดคำสั่งของ ARM, รวมไปถึงเว็บเซอร์วิซของเว็บต่างๆ ทั่วโลก หากไม่มีการคุ้มครองหมายถึงเราจะสร้างบริการที่ "อินเทอร์เฟซเหมือนกัน" เช่น ออกแบบซีพียูที่ทำงานชุดคำสั่งรูปแบบเดียวกับ ARM ได้โดยมีการอิมพลีเมนต์ภายในต่างกัน

ทรัพย์สินทางปัญญาเช่นนี้อีกหลายส่วนก็เป็นทรัพย์สินทางปัญญาที่ออราเคิลถืออยู่ เช่น ชุดคำสั่งเพิ่มเติมจาก SQL ปกติในระบบฐานข้อมูลของออราเคิล หรือกระสั่งชุดคำสั่งของชิป SPARC ดังนั้นคดีนี้จึงเป็นบททดสอบที่ออราเคิลแพ้ไม่ได้

ที่มา - The Register, Groklaw

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

ตรรกะเพี้ยนๆ ในการเปรียบเทียบงานวรรณกรรม กับงานซอฟท์แวร์

รู้ทั้งรู้ว่าบริบทมันต่างกัน ผลิตภัณฑ์ที่ออกมาก็ต่างกัน สำหรับงานวรรณกรรมถ้าทำอย่างนั้นก็ลอกแนวคิดของผลงานไปเต็มๆ สร้างความเสียหายแก่เจ้าของลิขสิทธิ์ แต่ในทาง API ของซอฟท์แวร์นั้นมันเป็นเรื่องของความเข้ากันได้

ไม่น่าเชื่อว่าบริษัทยักษ์ใหญ่ระดับโลกจะมีตรรกะเพี้ยนๆ ออกมาเป็นข่าวด้วย แต่ถ้ามองด้วยความเข้าใจโลก ก็คิดว่าเป็นการดิ้นเฮือกสุดท้ายแล้วกัน อารมณ์ว่าโดนคนประณามก็ยอม

อัลกิรทึมบนโลกนี้มีไม่จำกัดเหมือนเนื้อหานิยายครับ ถ้าผมนั่งคิดแทบตาย แต่อยู่ดีๆ มีคนมาเอาไปแล้วเปลี่ยนแค่ตัวแปร กับอัลกอริทึมเล็กๆน้อยๆแล้วบอกว่าเป็นของเขาเขาคิดเองหมดก็น่าเจ็บใจอยู่ครับ(ซึ่งตอนนี้ผมก็ทำอยู่แต่เพื่อการศึกษานะไม่ได้ขาย><)

ปล.การฟ้องร้องบางทีไม่ได้จะเอาชนะแต่แค่กำลังบอกว่าแกกำลังล้ำเส้นนะ...

มันเรื่องของ API นะครับ ผมว่าชีวิตผมต้องมีปัญหาแน่ ๆ ถ้าจะตั้งชื่อ API ต้องดูลิขสิทธิ์ก่อนทุกครั้ง - -"

ข่าวต่อมา "เจ เค โรว์ลิงยื่นฟ้องออราเคิล ฐานเอาชื่อเธอและชื่อหนังสือแฮรี่ พอตเตอร์มาใช้เพื่อหาผลประโยชน์"

ใครเป็นเจ้าของวลี "กาลครั้งหนึ่ง นานมาแล้ว" หรือ "Once upon a time" ละนี่ ถ้ามาทวงสิทธ์กันคงป่วนกันแย่

ถ้าผมเป็นศาลคนจะสั่งให้เปลียนชื่อfunctionที่ใช้สำหรับคูณ(ไม่ให้ใช้multiplyและที่มีความหมายเหมือนกัน) และการใช้ x ออกไปให้ใช้คำอื่นๆแทนในภาษาใหม่ของgoogleเพื่อดูว่าgoogleสามารถทำได้โดยdeveloperไม่มีปัญหาในการหาฟังก์ชันใช้จริง

conandark Sat, 16/02/2013 - 18:51

อยากให้ Oracle ทำเว็ปตรวจสอบนะครับว่าชื่อฟังชันหรือคลาสมีมีคนใช้ไปรึยัง หรือทำ checker ยัดลง netbeans เลยก้อได้ น่าจะลดปัญหานี้ได้นะครับ

อยากเข้าไปช่วยทนาย Google จัง วิธีโต้แย้งง่ายมาก โดยให้ทาง Oracle อธิบายความหมายของโค้ดต่อไปนี้

public interface SomeInterface{
    public void doSomething();
}

ประเด็นคือ หากท่านต้องการป้องกันชื่อของบทต่าง ๆ ในวรรณกรรม รวมถึงประโยคแรกของทุกบทจริง ก็ต้องเขียนโค้ดเป็นอย่างอื่น ซึ่งในทางเทคนิคทำได้เช่น default interface หรือ default abstract class การเขียนโค้ดในลักษณะนี้มันมีความชัดเจนในเรื่องขององค์ประกอบภายใน (เจตนา, ความตั้งใจ) ของผู้เขียนโค้ดตั้งแต่แรกแล้วว่าต้องการให้ API สามารถใช้ได้โดยทั่วไป และคนอื่นสามารถเขียน API ที่มีโครงสร้างเดียวกัน แต่มี algorithm ที่ต่างออกไปได้

เคสนี้ขอถือหางออราเคิลแหะ เพราะการออกแบบ object model ให้ดีนี่ใช้ "พลัง" ไม่น้อยเลย ทั้งการออกแบบโครงสร้างและการออกแบบชื่อ

ในกรณีนี้ โดยส่วนตัวแล้วสิ่งที่ต้องการคือ เมื่อออราเคิลได้สิทธิ์ในส่วนนี้ อยากให้ออราเคิลให้สิทธิ์นี้แบบ fair use .. ซึ่งโดยส่วนตัวแล้ว คิดว่าสิ่งนี้คงเกิดยากแหง แต่ก้อไม่ใช่เหตุที่จะให้ไปถือหางข้างกูเกิลให้ออราเคิลไม่ได้สิทธิ์นี้อยู่ดี (เฮ้อ แอบกลุ้มแต่กลุ้มไม่มาก ห่างฟากจาวามานานละ เพราะหลังๆ foundation มันพัฒนาช้าเหลือเกิน .)

ใช่ครับ ถ้าเป็นอย่างนั้น แค่เราตั้งชื่อคลาสว่า 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 ของคนอื่นได้ฟรีมั้ย" ในระบบใหญ่ๆยากๆ

mr_tawan Sat, 16/02/2013 - 23:11

API น่ะ ไม่ใช่ประโยคแรกของทุกย่อหน้าหรอกมั้ง ?

ผมว่าก็แค่ชื่อบทมากกว่า :P

ส่วนตัวผมมองว่า Software เป็น วรรณกรรม อันมี ...ลิขสิทธิ์

ส่วน API ผมมองมัน เป็น Name หากให้มีความหมาย ทางกฏหมาย ต้องไปจด ...เครื่องหมายการค้า

ปล. ส่วนตัวที่ศึกษากฏหมาย ลิขสิทธิ์ - เครื่องหมายการค้า และ ติดตาม แนวทางการพิจารณา ของ อเมริกา ผมเชื่อ Oracle แพ้ครับ

roongroj Sun, 17/02/2013 - 12:44

In reply to by mr_tawan

+1

ปกติเวลาจด ...เครื่องหมายการค้า

ต้องระบุอยู่แล้วว่า เป็นหมวดไหน ...ให้ระบุเป็น API เท่านั้นจบ ฮิ ๆ ๆ