यह कैसे समझा जाए कि सार्वभौमिक रूप से क्रॉस-प्लेटफ़ॉर्म C ++ कोड और सभी OS के लिए शिपिंग उत्पाद लिखना इतना आसान नहीं है?


15

हमारी कंपनी विंडोज के लिए डेस्कटॉप उत्पादों की एक श्रृंखला को जहाज करती है और बहुत सारे लिनक्स उपयोगकर्ता उन मंचों पर शिकायत करते हैं जो हमें लिनक्स उत्पादों के लिए वर्षों पहले लिखे गए थे और यही कारण है कि हम ऐसा नहीं करते हैं।

  • हम एक लालची निगम हैं
  • हमारे सभी तकनीकी विशेषज्ञ अंडरक्लाइज्ड बेवकूफ हैं

हमारा औसत उत्पाद C ++ कोड की 3 मिलियन लाइनों की तरह है।

मेरा और मेरे सहयोगियों का विश्लेषण निम्नलिखित है:

  • क्रॉस-प्लेटफ़ॉर्म C ++ कोड लिखना इतना आसान नहीं है
  • बहुत सारे वितरण पैकेज तैयार करने और उन्हें लिनक्स के सभी व्यापक संस्करणों के लिए बनाए रखने में समय लगता है
  • हमारा अनुमान है कि लिनक्स बाजार सभी उपयोगकर्ताओं के 5-15% की तरह है और उन उपयोगकर्ताओं को संभवतः हमारे प्रयास के लिए भुगतान नहीं करना होगा

जब यह प्रतिक्रिया सामने लाई जाती है तो हम फिर से लालची अयोग्य बेवकूफ हो जाते हैं और जब सब कुछ सही हो जाता है तो यह सब आसान और दर्द रहित होता है।

इस तथ्य के बारे में हमारा मूल्यांकन कितना उचित है कि क्रॉस-प्लेटफ़ॉर्म कोड लिखना और कई द्वैत पैकेजों को बनाए रखना बहुत प्रयास करता है? हम वास्तविक जीवन की कहानियों के साथ कुछ आसान अभी तक विस्तृत विश्लेषण कहां पा सकते हैं जो एक संदेह की छाया से परे दिखाते हैं कि वास्तव में यह कितना प्रयास करता है?


3
WINE को लक्षित क्यों नहीं किया और घोषित किया?
btilly

1
@ बीटीली: यह पहले से ही वाइन पर काम करता है, लेकिन वाइन सही नहीं है , आप देखें।
शार्प्यूट

2
वाइन बहुत सारे मामलों में एक दर्द है, और आप जो अनुप्रयोग कर रहे हैं, उसके आधार पर आमतौर पर एक मूल ऐप के रूप में प्रदर्शन या सुंदर नहीं है। एक संपूर्ण लिनक्स ऐप बनाना जो कि पूरी विशाल दुनिया में बहुत अच्छा लगता है जो कि लिनक्स है, हालांकि स्वयं के लिए एक कार्य है।
मैथ्यू शार्ले

4
मुझे लगता है कि "लिनक्स उपयोगकर्ता भुगतान नहीं करना चाहते हैं" एक गलत धारणा है। अंत उपयोगकर्ताओं के लिए, वे शायद कॉपीराइट के बारे में अधिक परवाह करते हैं और बस विंडोज की पायरेटेड कॉपी का उपयोग नहीं करते हैं जैसा कि कई अन्य करते हैं।
जिग्गीस्टार

3
नफ़रत करने वाले नफ़रत ही करेंगे। मंचों पर व्हिनर्स की एकमात्र प्रतिक्रिया या तो (ए) उन्हें अनदेखा करती है, या (बी) उनके ऊपर चलती है और चेहरे पर उन्हें वर्ग बिफर कर देती है। (ए) आमतौर पर बहुत अधिक व्यावहारिक है।
टॉम एंडरसन

जवाबों:


8

ध्यान रखें कि अधिकांश लोग कर्मचारी हैं, और इस तरह वे ऐसी दुनिया में नहीं रहते हैं जहाँ उन्हें लाभ कमाने की आवश्यकता है। वे काम पर दिखाते हैं, अपनी बात करते हैं, और घर जाते हैं, वास्तव में कभी नहीं सोचा कि पूरी प्रक्रिया कैसे काम करती है। और बहुत होशियार रहते हुए, बहुत सारी तकनीकें व्यवसाय के बारे में सकारात्मक रूप से अनभिज्ञ हैं, और अक्सर हठधर्मिता से अंधे हो जाते हैं।

आप सही हैं, निश्चित रूप से, उस पैमाने का एक्स-प्लेटफ़ॉर्म सॉफ्टवेयर बनाना कोई साधारण बात नहीं है। विशेष रूप से जब आप एक कंपनी का निर्माण करते हैं जिसमें कई दर्जनों डेवलपर्स और लाखों उपयोगकर्ता होते हैं। और इसकी न सिर्फ तकनीकी सीमाएँ। इसके सभी लागत बनाम लाभ के बारे में। हां, आप अगले वर्ष लिनक्स पर ऐप को पोर्ट कर सकते हैं (इसके बावजूद, जैसा कि आप ध्यान दें, यह पहले से ही वाइन में चलने योग्य है)। बेशक, विकास के समय के उस वर्ष मुक्त नहीं आता है। और अंत में, शायद आप नेट करेंगेअतिरिक्त 5-15% उपयोगकर्ता (आपके अनुमान के आधार पर)। या आप एक ही पैसा / प्रयास ले सकते हैं, और इसे एक नए संस्करण के रूप में अपने विंडोज विकास में केंद्रित कर सकते हैं, या इसे विपणन में डाल सकते हैं, और अपने उपयोगकर्ता आधार में 50% जोड़ सकते हैं। स्मार्ट पसंद कौन सा लगता है? (स्पष्ट रूप से संख्याओं को आपकी कंपनी को अनुकूलित करने की आवश्यकता है, और अंतिम परिणाम पोर्टिंग के पक्ष में हो सकता है)।

मुझे नहीं पता कि क्या यह 'सच्चे विश्वासियों' को मनाने में मदद करेगा, लेकिन यह स्मार्ट व्यवसाय है। और यदि आप स्मार्ट व्यवसाय चाल नहीं बनाते हैं, तो आप व्यवसाय से बाहर हो गए हैं। और फिर सुनिश्चित करने के लिए एक लिनक्स संस्करण नहीं होगा।


16

मेरे विचार से दो बातें हैं:

पहला यह कि एक तरह से वे सही हैं। यदि आप शुरुआत से ही इसके लिए योजना बनाते हैं तो क्रॉस प्लेटफॉर्म C ++ लिखना कठिन नहीं है । यह लगभग निश्चित रूप से समस्या है जिसे आप देख रहे हैं। अधिकांश खुले स्रोत एप्लिकेशन (अधिकांश अनुप्रयोग जो एक लिनक्स उपयोगकर्ता औसत दिन पर छूता है), बेतुका रूप से क्रॉस प्लेटफॉर्म होते हैं। उन अनुप्रयोगों की संख्या के बारे में सोचें, जो औसत लिनक्स उपयोगकर्ता दैनिक के साथ बातचीत करता है जो C या C ++ में लिखे गए हैं और न केवल विंडोज और लिनक्स पर, बल्कि x86-64, x86-64, ARM, SPARC पर MacOS, BSD, Solaris इत्यादि भी चलाते हैं। आदि यह आंशिक रूप से है क्योंकि एक खुजली वाले लोग अपने सिस्टम पर चलने के लिए कोड को पोर्ट करते हैं, लेकिन यह भी क्योंकि तब कन्वेंशन को क्रॉस प्लेटफॉर्म पोर्टेबिलिटी के लिए योजना बनाना होता है।

दूसरी बात यह है कि बाजार आपके विचार से अधिक व्यवहार्य हो सकता है। एक बड़ी गलत धारणा है कि लिनक्स पर लोग सॉफ़्टवेयर के लिए भुगतान नहीं करना चाहते हैं। कुछ लोगों के लिए जो सच हो सकते हैं, लेकिन बहुत सारे लोग हैं (ज्यादातर, मुझे लगता है) जो लिनक्स का उपयोग करते हैं क्योंकि यह उनके लिए बेहतर काम करता है और वे इसे पसंद करते हैं, कीमत के कारण नहीं। इसके अलावा, यदि आपकी कंपनी एक उत्पाद का उत्पादन कर रही है, जिसका उपयोग मुख्य रूप से एक पेशेवर सेटिंग में किया जाता है, तो कंपनियों को लिनक्स सिस्टम पर चलने के लिए सॉफ्टवेयर का भुगतान करने के लिए उपयोग किया जाता है।

जैसा कि आप पैकेजिंग के बारे में बात करते हैं, जैसा कि दूसरों ने कहा है, आपको वास्तव में प्रमुख वितरण के नवीनतम संस्करण के लिए पैकेज तैयार करने की आवश्यकता है। वास्तव में पैकेज बनाना वास्तव में कठिन नहीं है, और अधिकांश प्रमुख वितरण या तो डेबियन पैकेज (डेबियन, उबंटू, आदि) या आरपीएम (फेडोरा, स्यूस, सेंटो, मैंड्रेक) का उपयोग कर रहे हैं, इसलिए कुछ लिपियों को संशोधित करना मामूली है। एक बेसलाइन .deb और एक बेसलाइन .rpm से कई पैकेजों का उत्पादन करने के लिए, और बाकी सभी के लिए बस बायनेरिज़ और रीडमी के साथ एक टारबॉल को फेंक दें, लोग यह पता लगाएंगे कि इसे कैसे स्थापित किया जाए। वैकल्पिक रूप से, आप सभी पैकेजिंग को छोड़ सकते हैं, और इंस्टॉलेशन करने के लिए बस एक बैश या पर्ल स्क्रिप्ट के साथ एक एकल टारबॉल पोस्ट कर सकते हैं।

जो लोग आपके मंचों पर शिकायत करने वाले उपयोगकर्ताओं को कैसे संबोधित करते हैं, जैसा कि जो इंटरनेट ने कहा है, वे सिर्फ उन लोगों का प्रतिशत हो सकते हैं जो कोई बात नहीं करने जा रहे हैं, लेकिन पहली बात मैं यह समझाने की कोशिश करूंगा कि आपके पास एक है विरासत कोड की बड़ी मात्रा जिसे मन में क्रॉस प्लेटफ़ॉर्म समर्थन के साथ डिज़ाइन नहीं किया गया था। दूसरा, ईमानदारी से देखें कि क्या यह लिनक्स पोर्ट बनाने के लिए वित्तीय सहायता करेगा, और उसी के परिणामों के साथ खुला होगा। अंत में, यदि कोई पोर्ट वित्तीय रूप से व्यवहार्य नहीं है, तो WINE के साथ प्रोग्राम को अच्छी तरह से काम करने के लिए कुछ काम करने के बारे में देखें। WINE का पहला समाधान नहीं होना चाहिए, लेकिन यह उन लोगों को अच्छी तरह से पिघला सकता है जो केवल लिनक्स में आपके ऐप का उपयोग करना चाहते हैं, और एक पूर्ण पोर्ट की तुलना में कम खर्चीला प्रोजेक्ट हो सकता है। वास्तव में, यदि आप इस परियोजना के हिस्से के रूप में वाइन कोडबेस में कोड जोड़ते हैं, तो न केवल आप खुद को एक नए संस्करण तक खोल सकते हैं,


मेरा मानना ​​है कि सही क्रॉस-प्लेटफ़ॉर्म डिलीवरी के दर्द को कम करके आपका जवाब वास्तव में गलत है - खासकर क्योंकि आपने इन प्लेटफार्मों पर अपने वाणिज्यिक उत्पाद के परीक्षण की समस्या का उल्लेख नहीं किया है। न ही आपने कई प्लेटफार्मों के समर्थन की लागत का उल्लेख किया ।
दाविद्बक

10

Adobe, क्या आप हैं?

गंभीरता से हालांकि, किसी प्रकार का इनाम रखा जाता है ताकि वे लिनक्स संस्करणों को रोक सकें। यदि आपको पोर्ट के लायक समय बनाने के लिए पर्याप्त ऑर्डर मिलते हैं, अन्यथा उन्हें वापस कर दें और आपके पास अब इस बात का प्रमाण नहीं है कि लोग इस लायक बनाने के लिए पर्याप्त देखभाल करते हैं।

यदि आपको कुछ पोर्ट किया गया है, तो बस नवीनतम Ubuntu LTS रिलीज़, RHEL, SLED को लक्षित करें, और शायद एक टारगेट प्रदान करें। लोग कुछ और उपयोग करना चाहते हैं तो काम पाने की कोशिश कर सकते हैं। आप के बारे में चिंता करने के लिए 3 पैकेज के साथ छोड़ देता है और किसी और को शायद tar.gz संस्करण प्राप्त करने के लिए पर्याप्त पता है।


बहुत सारी कंपनियाँ केवल बायनेरिज़ वितरित करना चाहती हैं, इसलिए .tar.gz विधि की संभावना है।
डेविड थॉर्नले

4
@ डेविड थॉर्नली: सिर्फ इसलिए कि यह एक टारबॉल है इसका मतलब यह नहीं है कि यह एक स्रोत पैकेज होना चाहिए। वे संबंधित बायनेरिज़, डॉक्यूमेंटेशन और README फ़ाइल को टारबॉल में पैकेज कर सकते हैं, और फिर इसे बायनेरिज़ और लाइब्रेरीज़ को स्थापित करने के लिए उपयोगकर्ता पर छोड़ सकते हैं जहाँ उन्हें जाना चाहिए, और ऐप को काम करने के लिए कोई भी सिस्टम कॉन्फ़िगरेशन करना चाहिए।
Cercerilla

5

क्रॉस-प्लेटफ़ॉर्म C ++ कोड लिखना इतना आसान नहीं है

बिल्कुल इसके विपरीत। जब आप क्रॉस-प्लेटफ़ॉर्म काम की योजना बनाते हैं, और आपके द्वारा उपयोग किए जाने वाले प्लेटफ़ॉर्म-विशिष्ट एपीआई के लिए सार प्रदान करते हैं, तो आपके कोड का विशाल बहुमत पहले से ही क्रॉस-प्लेटफ़ॉर्म है। यदि आप पहले से ही बूस्ट या क्यूटी या एनएसपीआर जैसी लोकप्रिय लाइब्रेरी का उपयोग कर रहे हैं, तो आप पहले से ही काम कर रहे क्रॉस-प्लेटफॉर्म बिल्ड के बहुत करीब हैं।

विकास चक्र में देर से पोर्ट करते समय सबसे अधिक समस्या यह है कि कोड के महत्वपूर्ण भाग हैं जो प्रोग्राम के कुछ हिस्सों में प्लेटफ़ॉर्म-विशिष्ट एपीआई पर निर्भर करते हैं, जिनका उन्हें सीधे उपयोग करने की आवश्यकता नहीं है और शायद बिल्कुल भी नहीं होना चाहिए। (एक अच्छे डिजाइन में जोरदार डिकोड्ड मॉड्यूल होंगे, और कक्षाओं के समूहों को वसीयत में फिर से लिखे गए प्रतिस्थापन के साथ स्वैप किया जा सकता है। यदि यह किसी दिए गए मॉड्यूल के मामले में नहीं है, तो यह एक मजबूत कोड गंध है।)

बाहर का आसान तरीका अक्सर "यूटिलिटी" क्लास लिखना और वहां अपने सभी प्लेटफ़ॉर्म-विशिष्ट सामान को टॉस करना है। यह "आसान और दर्द रहित" नहीं है, लेकिन निश्चित रूप से कम कठिन है जितना आप सोच सकते हैं।

बहुत सारे वितरण पैकेज तैयार करने और उन्हें लिनक्स के सभी व्यापक संस्करणों के लिए बनाए रखने में समय लगता है

यह एक दुर्भाग्यपूर्ण भ्रांति है। हालांकि यह सच है कि कई प्लेटफार्मों के लिए बिल्ड बनाए रखने के लिए अतिरिक्त प्रयास की आवश्यकता होती है (एक समर्पित दैनिक बिल्ड सर्वर स्थापित करने और किसी विशेष वितरण के लिए पैकेज बनाना सीखना), यह सच नहीं है कि आपको "बहुत सारे वितरण" के लिए उन्हें बनाए रखने की आवश्यकता है ]। " बिल्कुल इसके विपरीत। आपको केवल कुछ मुट्ठी भर पैकेज बनाए रखने की आवश्यकता है - जैसे, उबंटू, फेडोरा, और एक एकल एलएसबी-संगत टारबॉल - और विभिन्न लिनक्स समुदाय बाकी काम करेंगे। खासकर यदि आपका सॉफ्टवेयर लोकप्रिय है, तो HOWTO हर वितरण के लिए स्प्रिंग देगा, जो आवश्यक सेटअप निर्देश प्रदान करेगा। या, यदि आपके सॉफ़्टवेयर को स्वतंत्र रूप से वितरित किया जा सकता है (जो आप कर सकते हैं, भले ही वह मुफ्त उत्पाद न हो, बशर्ते आपका लाइसेंस इसकी अनुमति देता है), अधिक लोकप्रिय वितरण में आपके सॉफ़्टवेयर की प्रतियों को ले जाने वाले वैकल्पिक प्रकार के कुछ विकल्प होंगे।

समुदाय आम तौर पर इस बारे में बहुत अच्छे हैं, और अनुभवी उपयोगकर्ता स्वेच्छा से आपके लिए इस विरासत का एक बहुत कुछ करेंगे, यदि आप उन्हें करते हैं।

हमारा अनुमान है कि लिनक्स बाजार सभी उपयोगकर्ताओं के 5-15% की तरह है और उन उपयोगकर्ताओं को संभवतः हमारे प्रयास के लिए भुगतान नहीं करना होगा

एक और दुर्भाग्यपूर्ण, और बहुत गलत धारणा।

सिर्फ इसलिए कि लिनक्स उपयोगकर्ता मुफ्त में अपना ऑपरेटिंग सिस्टम प्राप्त करते हैं, इसका मतलब यह नहीं है कि वे सॉफ़्टवेयर के लिए भुगतान करने को तैयार नहीं हैं। यदि सॉफ़्टवेयर बहुत अच्छा है और इसके लिए व्यापक मांग है, तो लिनक्स उपयोगकर्ता अक्सर अपने पैसे के साथ भाग लेने के लिए अधिक इच्छुक होंगे, आपके विंडोज उपयोगकर्ता होंगे। बस विनम्र इंडी बंडलों को देखें , जहां लिनक्स उपयोगकर्ताओं ने औसतन, विंडोज उपयोगकर्ताओं की तुलना में प्रति उपयोगकर्ता दो गुना अधिक भुगतान किया ।

यह भी संभव है कि आपके उत्पाद की अन्य प्लेटफॉर्मों की तुलना में लिनक्स उपयोगकर्ताओं के बीच अधिक मांग हो सकती है (जिसे हम आपके उत्पाद को जाने बिना नहीं जान सकते हैं), इस बात पर निर्भर करता है कि उस क्षेत्र में किस प्रकार के मौजूदा सॉफ़्टवेयर मौजूद हैं। आपके द्वारा महसूस किए जाने से बड़ा संभावित बाजार हो सकता है।


4

इस तरह के रवैये के साथ, मैं उन्हें अनदेखा करूंगा। वे एक्स के सेगमेंट की तरह आवाज करते हैं, जहां एक्स कुछ भी हो सकता है , जो कि आप क्या करते हैं, इससे कोई शिकायत नहीं होगी। लिनक्स संस्करण जारी करें या नहीं, यह आपकी पसंद है, न कि उनकी।


1

यदि आप एनवीडिया के लिए काम करते हैं ...

भगवान के प्यार के लिए, इसे चूसो और पहले से ही कुछ सभ्य ड्राइवरों को लिखो।

अन्यथा, यदि आप नियमित व्यावसायिक अनुप्रयोग कर रहे हैं, तो C # पर चलने के लिए भविष्य की परियोजनाओं को लक्षित करें।

मोनो पूरी तरह से .NET 3.5 के अनुरूप है और यहां तक ​​कि winforms GUI का उपयोग कर सकते हैं। केवल उन मॉड्यूलों के लिए जिन्हें आपको देखने की आवश्यकता है वे ओएस विशिष्ट हैं, लेकिन वे कुछ और दूर के बीच हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.