ทำไม Canonical ถึงเลือก QT มากกว่า GTK สำหรับรุ่นต่อไปของ Unity


33

มีการเขียนมากมายที่ฉันสับสน แต่ถ้าฉันไม่เข้าใจผิด Canonical กำลังสร้าง Unity รุ่นต่อไปสำหรับอุปกรณ์มือถือด้วย Qt และในอนาคตอันใกล้นี้เดสก์ท็อปก็จะถูกย้ายไปยัง qt ด้วยเช่นกัน

ฉันแค่อยากจะรู้เหตุผลทางเทคนิคและ / หรือเหตุผลทางการเมืองที่ผลักดันการตัดสินใจครั้งนี้


3
การเขียนโปรแกรมใน GTK นั้นเป็นเรื่องที่เจ็บปวดอย่างมากเพราะมันสร้างขึ้นจาก GObject ซึ่งเป็นความพยายามที่น่าสังเวชในแนวคิดของ OO ใน Chorn ซึ่งใช้ Q ++ เพียงแค่ใช้ C ++ ซึ่งรองรับ OO (และกระบวนทัศน์อื่น ๆ ) นอกกรอบ C ++ อาจไม่สมบูรณ์แบบ แต่ GObject เพิ่งตั้งค่าแถบต่ำมาก
weberc2

คำตอบ:


23

คุณสามารถหาคำตอบได้ในรายการทางและบนบล็อกของมาร์ค Shuttleworth โพสต์บล็อกนี้อาจตอบได้ดีที่สุด:

เป็นส่วนหนึ่งของการวางแผนสำหรับ Natty + 1 เราจะต้องค้นหาพื้นที่บนซีดีสำหรับไลบรารี Qt และเราจะประเมินแอปพลิเคชันที่พัฒนาด้วย Qt เพื่อรวมไว้ในแผ่นซีดีและติดตั้งเริ่มต้นของ Ubuntu

ความง่ายในการใช้งานและการรวมที่มีประสิทธิภาพเป็นคุณค่าสำคัญในประสบการณ์การใช้งานของเรา เราใส่ใจว่าแอปพลิเคชันที่เราเลือกนั้นกลมกลืนกันและเป็นระบบโดยรวม ในอดีตนั้นหมายความว่าเราได้ให้ความสำคัญกับแอปพลิเคชั่นที่เขียนด้วย Gtk อย่างมากเนื่องจากความกลมกลืนจำนวนหนึ่งมาจากการใช้ชุดเครื่องมือสำหรับนักพัฒนาเดียวกัน ที่กล่าวว่าด้วย OpenOffice และ Firefox ที่เคยมีมาตั้งแต่เริ่มต้น Gtk เห็นได้ชัดว่าไม่ใช่ข้อกำหนดที่แน่นอน สิ่งที่ฉันโต้เถียงในตอนนี้ก็คือมันเป็นค่าที่มีความสำคัญและชุดเครื่องมือเป็นเพียงวิธีการที่จะสิ้นสุด เราควรประเมินแอพตามความเหมาะสมของความต้องการไม่ใช่อคติบนพื้นฐานของตัวเลือกทางเทคนิคที่นักพัฒนาทำ

ในการประเมินแอพสำหรับการติดตั้งเริ่มต้นของ Ubuntu เราควรถาม:

  • เป็นซอฟต์แวร์เสรีหรือไม่
  • ดีที่สุดในชั้นเรียนหรือไม่
  • มันรวมเข้ากับการตั้งค่าระบบและการตั้งค่า?
  • รวมเข้ากับแอปพลิเคชั่นอื่น ๆ หรือไม่
  • ผู้ที่ไม่สามารถใช้เมาส์หรือแป้นพิมพ์สามารถเข้าถึงได้หรือไม่
  • มันมีลักษณะและความรู้สึกสอดคล้องกับส่วนที่เหลือของระบบหรือไม่

แน่นอนตัวเลือกของนักพัฒนาของ Qt ไม่มีผลต่อสองคนแรก Qt นั้นใช้งานได้ภายใต้ GPL เป็นเวลานานและเมื่อเร็ว ๆ นี้ก็มีให้บริการภายใต้ LGPL และมีซอฟต์แวร์ที่ดีที่สุดในระดับมากมายที่เขียนด้วย Qt เป็นชุดเครื่องมือที่มีความสามารถมาก

อย่างไรก็ตามการตั้งค่าและการตั้งค่าระบบเป็นสาเหตุของความไม่ลงรอยกันระหว่าง Qt และ Gtk มาเป็นเวลานาน การรวมกับการตั้งค่าระบบและการกำหนดค่าตามความชอบมีความสำคัญต่อความรู้สึกของแอปพลิเคชัน“ เป็นของ” ในระบบ มันมีผลต่อความสามารถในการจัดการแอปพลิเคชันนั้นโดยใช้เครื่องมือเดียวที่ใช้ในการจัดการแอปพลิเคชันอื่นทั้งหมดและประเภทของประสบการณ์การตั้งค่าและการตั้งค่าที่ผู้ใช้สามารถมีกับแอพได้ นี่เป็นปัญหาที่เกิดขึ้นกับแอปพลิเคชั่น Qt / KDE บน Ubuntu เนื่องจากแอพ Gtk ทั้งหมดใช้การจัดเก็บค่ากำหนดที่จัดการได้จากส่วนกลางและแอพ KDE ทำสิ่งที่แตกต่างออกไป

เพื่อแก้ไขปัญหานี้ Canonical กำลังผลักดันการพัฒนาการเชื่อม dconf สำหรับ Qt ดังนั้นจึงเป็นไปได้ที่จะเขียนแอพ Qt ที่ใช้เฟรมเวิร์กการตั้งค่าเดียวกันกับทุกอย่างใน Ubuntu เราได้ทำสัญญากับ Ryan Lortie ซึ่งรู้ดีว่า dconf เป็นอย่างดีและเขาจะทำงานกับคนที่ Canonical ซึ่งใช้ Qt สำหรับงานพัฒนาตามความต้องการของลูกค้า เรามั่นใจว่าผลลัพธ์จะเป็นธรรมชาติสำหรับนักพัฒนา Qt และการแสดงออกที่สมบูรณ์ของความหมายและสไตล์ของ dconf

ทีม Qt ทำงานได้ดีในชุมชน Ubuntu ที่กว้างขึ้น - เรามีตัวแทน Qt ที่ยอดเยี่ยมที่ UDS ทุก ๆ หกเดือนทีม Kubuntu มีประสบการณ์และความสนใจในบรรจุภัณฑ์และการบำรุงรักษา Qt อย่างลึกซึ้งมีการแลกเปลี่ยนทางเทคนิคที่ดีระหว่าง Qt upstream และหลากหลาย ส่วนหนึ่งของชุมชน Ubuntu รวมถึง Canonical ตัวอย่างเช่น Qt folks กำลังทำงานเพื่อรวม uTouch

ฉันวาดความแตกต่างระหว่าง "Qt" และ "KDE" ในสถานที่ที่ชัดเจน แอป KDE ไม่รู้อะไรเกี่ยวกับการกำหนดค่าระบบ dconf และไม่สามารถรวมเข้ากับเดสก์ท็อป Ubuntu ได้อย่างง่ายดาย ดังนั้นเราจะไม่เสนอ Amarok ให้เปลี่ยน Banshee เร็ว ๆ นี้! แต่ฉันคิดว่ามันเป็นไปได้ทั้งหมดที่ dconf เมื่อมีการเชื่อมโยง Qt ที่ยอดเยี่ยมได้รับการพิจารณาโดยชุมชน KDE มีคนที่ดีกว่าในการเป็นผู้นำการสนทนาหากพวกเขาต้องการดังนั้นฉันจะไม่ผลักดันความคิดเพิ่มเติมที่นี่ อย่างไรก็ตามหากแอป KDE เรียนรู้ที่จะพูดคุย dconf นอกเหนือจากกลไกของ KDE มาตรฐานซึ่งควรจะตรงไปตรงมามันจะเป็นตัวเลือกสำหรับการติดตั้งเริ่มต้นของ Ubuntu

การตัดสินใจเปิดรับ Qt นั้นไม่ได้เป็นการวิจารณ์ของ GNOME แต่อย่างใด เป็นการเฉลิมฉลองความหลากหลายและความซับซ้อนของซอฟต์แวร์ฟรี คุณค่าของการใช้งานง่ายและการผนวกรวมยังคงเป็นค่าที่ใช้ร่วมกันกับ GNOME และเป็นพื้นฐานที่ยอดเยี่ยมสำหรับการทำงานร่วมกับนักพัฒนา GNOME และสมาชิกโครงการ บางที GNOME เองก็อาจจะยอมรับ Qt แต่ก็ไม่ได้ แต่ถ้าเป็นเช่นนั้นแล้วความตั้งใจของเราที่จะทำให้เส้นทางนี้น่าจะเป็นการมีส่วนร่วมในการเป็นผู้นำ มันง่ายกว่าที่จะสร้างระบบนิเวศที่มีชีวิตชีวาถ้าคุณยอมรับความแตกต่างจำนวนหนึ่งจากวิธีที่บัญญัติดังนั้นการพูดถึงงานออกแบบของเรานั้นมีศูนย์กลางที่ GNOME ด้วยการตั้งค่าและการตั้งค่าโฟกัสปัจจุบันที่เราย้ายไปที่ GNOME 3.0 และ gtk3

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

สำหรับคนดี ๆ ของ Trolltech ตอนนี้ Nokia ที่ทำให้ Qt เป็นเครื่องมือที่ยอดเยี่ยม - ขอบคุณ สำหรับนักพัฒนาที่ต้องการใช้และเป็นส่วนหนึ่งของประสบการณ์ Ubuntu - ยินดีต้อนรับ


6
ล่าสุดฉันตรวจสอบ QT ฟรีอย่างสมบูรณ์มันไม่เหมือนก่อนหน้านี้ แต่ตอนนี้ทุกอย่างฟรี
Mario Kamenjak

5
@VassilisGr Qt ใช้งานได้กับ GPL ในบางเวลาตอนนี้ (ซึ่งทำให้ฟรีเหมือนกับ GPL อื่น ๆ ) อย่างไรก็ตามเพื่อให้ Qt รับการสนับสนุนโค้ดจากชุมชนการบริจาคดังกล่าวจะต้องได้รับภายใต้ใบอนุญาตแบบคู่ซึ่งอนุญาตให้ บริษัท ใด ๆ ที่เป็นเจ้าของ Qt วันนี้ขายใบอนุญาตที่ไม่ใช่ GPL ให้กับรหัสหากมีคนจ่ายเงิน ซึ่งในคำจำกัดความของสตอลแมน "ซอฟต์แวร์เสรีในอิสระ" ไม่เป็นปัญหา(ตราบใดที่เราพิจารณาใช้ซอฟต์แวร์จากผู้ที่ไม่ได้ชำระเงินเท่านั้นดังนั้นการใช้ GPL ... ) Ubuntu จะไม่จ่ายเงิน และเป็น GPL ซึ่ง Linux อยู่แล้ว ... ก็ดี
HostileFork

14

GTK + ไม่สนับสนุนความละเอียดที่เป็นอิสระอุปกรณ์มือถือสมัยใหม่มีความหนาแน่นพิกเซลสูงเป็นพิเศษ หากคุณรันแอปพลิเคชัน GTK + บนหน้าจอมือถือองค์ประกอบส่วนติดต่อผู้ใช้ทั้งหมดจะเล็กจนไม่สามารถใช้งานได้

นี่เป็นข้อผิดพลาดแบบเปิดของ GTK +ตั้งแต่ปี 2008 จนกระทั่งมันถูกปิดในปี 2014 ด้วย "เรามีระบบสนับสนุนระดับ hi-dpi ในตอนนี้ - ไม่ใช่สิ่งเดียวกัน แต่ใกล้เพียงพอที่จะแสดงความคิดเห็นที่ล้าสมัย"

เมื่อเปิดตัว GTK + 3 โครงการนี้มีโอกาสที่สมบูรณ์แบบในการเพิ่มความเป็นอิสระในการแก้ปัญหา พวกเขาเลือกที่จะไม่ทำและตอนนี้มันก็สายเกินไปแล้วสำหรับพวกเขา

ในGTK + Roadmapความเป็นอิสระในการแก้ปัญหามีการวางแผนสำหรับการเปิดตัวหลังจาก 4.0 ดังนั้นพวกเขาจะปล่อย 4.0 จากนั้นจะปล่อยรุ่นใหญ่หลังจากนั้นจะมี หากพวกเขาทำตามแผนนั้นแม้แต่ GNU / Linux บนเดสก์ท็อปก็ยังต้องละทิ้ง GTK + เพราะหน้าจอเดสก์ท็อป DPI สูงและหน้าจอแล็ปท็อปนั้นมีวางจำหน่ายแล้วและกำลังจะกลายเป็นเรื่องปกติใหม่


2

เหตุผลทางด้านเทคนิค / การปฏิบัติของฉัน: Nokia ซื้อ Trolltech และลงทุนใน QT เป็นจำนวนมาก มันมีน้ำหนักเบาและมีปีของการเพิ่มประสิทธิภาพสู่แพลตฟอร์มมือถือ โดยไม่คำนึงถึงความคิดเห็นในปัจจุบันของ Nokia ของคุณ N900 คือหลายปีก่อนเวลา ... และมันก็เป็นเดเบียน / QT ตาม ... แต่ราคาแพง อย่างไรก็ตามฉันไม่มีความรู้ที่แท้จริงเกี่ยวกับการตัดสินใจ


2
QT ยังพกพาสะดวกกว่ามาก ผลตอบแทนมากกว่าสำหรับผู้พัฒนาที่สร้างแอปพลิเคชันโดยใช้ QT เนื่องจากพวกเขาจะพบการสนับสนุนดั้งเดิมในระบบปฏิบัติการอื่น ๆ อีกมากมายเช่น Android, Blackberry, Windows Mobile, WebOS และอื่น ๆ และแน่นอนว่า Mac OS และ Windows QT ยังได้รับประโยชน์จากผู้มีส่วนร่วมอย่างมาก
ไมค์สจ๊วต

1

บล็อกของ Ubuntu CTO Matt Zimmermanเป็นข้อมูลเช่นกัน:

มันอยู่ในจิตวิญญาณนี้ที่ฉันได้คิดถึง Qt เมื่อเร็ว ๆ นี้ เราต้องการทำให้มันรวดเร็วง่ายและไม่เจ็บปวดในการพัฒนาแอพพลิเคชั่นสำหรับ Ubuntu และ Qt เป็นตัวเลือกที่คุ้มค่าสำหรับนักพัฒนาแอพพลิเคชั่น ในการคิดเกี่ยวกับสิ่งนี้ฉันได้ตระหนักว่ามีความธรรมดาสามัญอยู่บ้างระหว่างจุดแข็งของ Qt และทิศทางใหม่ใน Ubuntu:

  • Qt มีประวัติการใช้งานมายาวนานบนARM รวมถึง x86โดยอาศัยความนิยมในอุปกรณ์ฝังตัว ผลิตภัณฑ์เพื่อผู้บริโภคได้ถูกสร้างขึ้นโดยใช้ Qt บน ARM มานานกว่า 10 ปี เราได้จัดทำผลิตภัณฑ์ Ubuntu สำหรับ ARM เป็นเวลาเกือบสองปีแล้วและ 10.10 รองรับบอร์ด ARM มากขึ้นกว่าเดิมรวมถึงบอร์ดอ้างอิงจาก Freescale, Marvell และ TI Qt กำลังเพิ่มการเพิ่มประสิทธิภาพ ARMv7 เพื่อประโยชน์ของชิป ARM ล่าสุด เราทำเช่นนี้เพื่อเสนอตัวเลือกฮาร์ดแวร์ให้กับ OEM โดยไม่ต้องเสียสละเลือกซอฟต์แวร์ Qt รักษาทางเลือกเดียวกันนี้สำหรับนักพัฒนาแอปพลิเคชัน
  • Qt เป็นเฟรมเวิร์กแอปพลิเคชันข้ามแพลตฟอร์มที่มีพอร์ตอย่างเป็นทางการสำหรับ Windows, MacOS และอื่น ๆ และพอร์ตชุมชนทดลองไปยัง Android, iPhone และ WebOS การสนับสนุนข้ามแพลตฟอร์มที่แข็งแกร่งเป็นหนึ่งในหลักการดั้งเดิมของ Qt และแสดงให้เห็นในช่วงอายุของพอร์ตอย่างเป็นทางการ ด้วย Ubuntu Light ถูกติดตั้งบนคอมพิวเตอร์ที่มี Windows และ Ubuntu One เชื่อมโยงไปถึงบน Android และ iPhone เราต้องการการทำงานร่วมกันกับแพลตฟอร์มอื่น ๆ นอกจากนี้ยังมีนักพัฒนาจำนวนมากที่ทราบวิธีกำหนดเป้าหมายไปยัง Windows ซึ่งสามารถเข้าถึงผู้ใช้ Ubuntu ได้ด้วยการเลือก Qt
  • Qt มีระบบอินพุตแบบสัมผัสที่ค่อนข้างเป็นผู้ใหญ่ซึ่งตอนนี้รองรับมัลติทัชและท่าทาง (รวมถึง QML) แม้ว่าจะใช้งานได้กับ Windows 7 และ Mac OS X 10.6 เท่านั้น ในขณะเดียวกัน Canonical ได้ทำงานร่วมกับชุมชนเพื่อพัฒนากรอบการทำงานแบบ multi-touch ระดับต่ำสำหรับ Linux และ X11 เพื่อประโยชน์ของ Qt และชุดเครื่องมืออื่น ๆ ความพยายามเหล่านี้จะพบกันในที่สุด

โดยรวมแล้วฉันคิดว่า Qt มีอะไรมากมายที่จะให้คนที่ต้องการพัฒนาแอพพลิเคชั่นสำหรับ (และบน) Ubuntu โดยเฉพาะตอนนี้ มันให้พลังกับแอพพลิเคชั่นข้ามแพลตฟอร์มยอดนิยมอย่าง VLC ไม่ต้องพูดถึงการแจกจ่าย Kubuntu ทั้งหมด ฉันพลาดเมื่อเกิดเหตุการณ์เมื่อปีที่แล้ว แต่ตอนนี้มี Qt ภายใต้ LGPL 2.1 หรือ GPL 3.0 ซึ่งควรจะเหมาะสำหรับแอปพลิเคชัน Ubuntu ทุกชนิด มันมีการสนับสนุนทางการค้าที่แข็งแกร่งเช่นเดียวกับชุมชนนักพัฒนาขนาดใหญ่ ไม่มีวิธีแก้ปัญหาเดียวที่จะตอบสนองความต้องการของนักพัฒนาทั้งหมดและ Ubuntu สนับสนุนชุดเครื่องมือและกรอบงานที่หลากหลายด้วยเหตุผลนี้ แต่ Qt ดูเหมือนว่าเป็นเครื่องมือที่ยอดเยี่ยมที่มีอยู่ในกล่องเครื่องมือของเราเพื่อก้าวไปข้างหน้า

บทความของArs Technica ที่พูดถึงบล็อกโพสต์นี้ให้ข้อมูลเชิงลึกบางอย่าง:

Qt สามารถนำนักพัฒนาบุคคลที่สามมาสู่ Linux

แม้ว่า Gtk + ยังคงมีคุณค่าและมีหลายเหตุผลที่จะใช้มันต่อไปเพื่อสร้างซอฟต์แวร์ Linux ดั้งเดิม แต่ตอนนี้ Qt เป็นตัวเลือกที่ชัดเจนสำหรับ ISV ที่กำหนดเป้าหมายหลายแพลตฟอร์ม Qt ทำให้ง่ายเป็นพิเศษเพื่อให้สอดคล้องกับรูปลักษณ์ดั้งเดิมของแพลตฟอร์มพื้นฐานหรือสร้างส่วนต่อประสานผู้ใช้แบบกำหนดเองทั้งหมดที่เหมาะสมที่สุดกับอุปกรณ์เป้าหมายหรือฟอร์มแฟคเตอร์

เนื่องจาก Nokia และ Intel นำ MeeGo ไปสู่อุปกรณ์หลากหลายประเภทมันจะดึงดูดผู้ค้าซอฟต์แวร์รายใหญ่บางราย มันจะค่อนข้างง่ายสำหรับ บริษัท ซอฟต์แวร์เหล่านั้นที่จะนำแอปพลิเคชั่น Qt มือถือของพวกเขาไปยังเดสก์ท็อป Linux โดยใช้รหัสเดียวกับที่พวกเขาใช้บน MeeGo Qt ได้รับการออกแบบมาโดยเฉพาะเพื่อให้ง่าย นี่จะเป็นชัยชนะที่ยิ่งใหญ่สำหรับเดสก์ท็อปลีนุกซ์เพราะมันจะนำแอพพลิเคชั่นของบุคคลที่สามซึ่งไม่สามารถหามาใช้ได้

เป็นที่น่าสังเกตว่าผู้จำหน่ายซอฟต์แวร์มือถือที่โดดเด่นบางคนกำลังกระตือรือร้นที่จะยอมรับ Qt เนื่องจากการสนับสนุนของ Nokia สำหรับชุดเครื่องมือ ยกตัวอย่างเช่น บริษัท Qik สำหรับสตรีมมิ่งวิดีโอบนมือถือกำลังทำงานบนพอร์ตที่ใช้ Qt รุ่นทดลองของแอปพลิเคชันยอดนิยมโดยมีจุดประสงค์เพื่อนำมาไว้ที่ MeeGo

ผู้เขียนบทความนี้เป็นผู้สร้างแอพ Gwibber IM ดังนั้นเขาจึงมีประสบการณ์ในการพัฒนา GUI สำหรับ Linux

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.