JavaRush /جاوا بلاگ /Random-UR /انٹرویو کا ٹیسٹ اوپن سورس لائبریری میں کیسے تبدیل ہوا۔

انٹرویو کا ٹیسٹ اوپن سورس لائبریری میں کیسے تبدیل ہوا۔

گروپ میں شائع ہوا۔
سب کو ہیلو، JavaRush کمیونٹی! اپنے بارے میں تھوڑا سا: میں 2016 کے موسم بہار سے جاوا سافٹ ویئر انجینئر کے طور پر کام کر رہا ہوں۔ مجھے یہاں آنا اور ان مسائل کو حل کرنا پسند ہے جو میں نے اپنی پڑھائی کے دوران حل نہیں کیے تھے۔ آج میں آپ کو لائبریری کے بارے میں بتاؤں گا - تصویری موازنہ ۔ یہ ایک اوپن سورس لائبریری ہے جو GitHub پر عوامی طور پر دستیاب ہے ۔ انٹرویو ٹیسٹ کا ٹاسک اوپن سورس لائبریری میں کیسے تبدیل ہوا - 1اس مضمون کا مقصد یہ بتانا ہے کہ اوپن سورس پروڈکٹ بنانا صرف وقت کا ضیاع نہیں ہے، نہیں! یہ ایک بھرپور تجربہ ہے جو مختلف اطراف سے تیار کیا جاتا ہے، جب آپ کو ترقی کے پورے عمل پر کنٹرول حاصل ہوتا ہے، جب آپ کو ہر تفصیل کو جاننے کی ضرورت ہوتی ہے۔ اوپن سورس آپ کے آس پاس کی دنیا ہے۔ میں مذاق نہیں کر رہا ہوں، اس لائبریری کے وجود کے دوران، میں نے مختلف ممالک، جیسے کہ امریکہ، بھارت، چین، مصر، روس، جرمنی، یوکرین، سویڈن، نیوزی لینڈ، ناروے کے لوگوں سے رابطہ کیا۔ یعنی یہ مشترکہ ترقی، سمجھوتہ تلاش کرنے، کوڈ چیک کرنے وغیرہ کا حقیقی تجربہ ہے۔ یہ تو تعارف تھا، اب ترتیب سے شروع کرتے ہیں:

پرکھ. اگست 2017 کا آغاز

یہ سب اس حقیقت کے ساتھ شروع ہوا کہ میں نے ایک کمپنی کے ساتھ انٹرویو لیا تھا، جہاں پہلا قدم ٹیسٹ ٹاسک لکھنا تھا۔ کام ایک کوڈ لکھنا تھا جو ایک ہی سائز کی دو تصویروں کا موازنہ کرے، ان کے درمیان فرق تلاش کرے، ان کو گروپ کرے اور ان کے گرد ایک مستطیل کھینچے۔ پہلی تصویر ہے:
انٹرویو ٹیسٹ کا ٹاسک اوپن سورس لائبریری میں کیسے تبدیل ہوا - 2
دوسری تصویر ہے:
انٹرویو ٹیسٹ کا ٹاسک اوپن سورس لائبریری میں کیسے تبدیل ہوا - 3
ذیل میں دکھائے گئے اختلافات کو تلاش کرنا اور ان کا دائرہ بنانا ضروری تھا۔
انٹرویو ٹیسٹ کا ٹاسک اوپن سورس لائبریری میں کیسے بدل گیا - 4
جیسا کہ آپ دیکھ سکتے ہیں، Username فیلڈ میں ایک فرق ہے ، جسے سرخ مثلث کے ساتھ چکر لگایا گیا ہے۔ کام کی مزید تفصیلی وضاحت ۔ میں نے فیصلہ کیا کہ میں اسے نہ صرف عملی نقطہ نظر سے درست طریقے سے کرنا چاہتا ہوں بلکہ خوبصورتی سے بھی، تاکہ یہ شرمناک نہ ہو۔ ایسا کرنے کے لیے، میں نے فیصلہ کیا کہ میں اسے ایک پروجیکٹ کے طور پر GitHub پر شائع کروں گا ۔ میں طویل عرصے سے GitHub کا مطالعہ کرنا اور اس کے ساتھ کام کرنے کا تجربہ حاصل کرنا چاہتا ہوں۔ ایک سرسری نظر ڈالنے کے بعد، میں نے محسوس کیا کہ کوڈ کے معیار کا تجزیہ کرنے، ٹیسٹوں کے ساتھ کوڈ کوریج بنانے وغیرہ کے لیے فریق ثالث کی خدمات شامل کرنا اچھا ہوگا۔ درج ذیل ٹولز شامل کیے گئے:
  • کوڈیسی - کوڈ کا معیار۔ یہ واقعی توجہ دینے کے قابل ہے۔

  • Travis CI ایک CI (مسلسل انضمام) ٹول ہے جو ایک پروجیکٹ بناتا ہے، ٹیسٹ چلاتا ہے اور بتاتا ہے کہ آیا پروجیکٹ کامیابی سے بنایا گیا تھا۔ مثال کے طور پر، اگر نئی تبدیلیوں کے نتیجے میں ایک ٹیسٹ پاس نہیں ہوا، تو یہ کہے گا کہ پراجیکٹ کی تعمیر ناکام رہی اور اس کا رنگ سرخ کر دے گا۔

  • Coveralls ایک ٹول ہے جو دکھاتا ہے کہ آپ کے کوڈ کا کتنا فیصد ٹیسٹوں کے ذریعے احاطہ کرتا ہے۔

  • BetterCode Hub کوڈ کے معیار کا تجزیہ کرنے کا ایک اور ٹول ہے۔ ایک بہت ہی مفید چیز جو آپ کو نہ صرف یہ بتائے گی کہ برا کیا ہے بلکہ اس کی وجہ بھی بیان کریں اور کسی کتاب کا لنک دیں جہاں سے آپ اس کے بارے میں علم حاصل کر سکیں۔

ان میں سے ہر ایک سروس کا ڈیٹا کے نتائج کے ساتھ اپنا بیج ہوتا ہے، جیسے کوڈ کوریج پروجیکٹ۔ اور اس بیج کو پروجیکٹ کی مرکزی تفصیل - README فائل میں شامل کیا جا سکتا ہے۔ کام تیار تھا - میں نے اسے جائزہ لینے کے لیے بھیج دیا۔ جائزہ لینے کے بعد، میں نے فوری طور پر، تازہ یادداشت سے، ہر تبصرے کے لیے ایک گیتھب ایشو بنایا ، جس سے مجھے اس پروجیکٹ کو بہتر بنانے میں مدد ملے گی۔ آجر کی طرف سے کوئی بہتری کا کام نہیں تھا، اس لیے میں تھوڑی دیر کے لیے پروجیکٹ کے بارے میں بھول گیا...

لائبریری کا راستہ۔ جولائی 2018

لوگو

ایک موقع پر، میں نے دریافت کیا کہ لوگ اکثر میرے پروجیکٹ پر آتے ہیں، اور یہ ہر روز ہوتا ہے۔ میں یہ سن کر حیران ہوا، اور اس سے بھی زیادہ حیران ہوا کہ تقریباً ایک سال بعد ایک ISSUE بنایا گیا، جس میں لکھا گیا تھا کہ ایک مخصوص گرافک ڈیزائنر مجھے اپنے پروجیکٹ کے لیے لوگو بنانے کی پیشکش کر رہا ہے۔ ان کا کہنا ہے کہ وہ اوپن سورس پروڈکٹس کے لیے ایسا کرنا پسند کرتا ہے اور یہ بالکل مفت کرے گا۔ ہم نے تعاون کرنا شروع کیا۔ کئی آپشنز تجویز کیے گئے، لیکن بالآخر ہم نے اس پر فیصلہ کر لیا:
انٹرویو ٹیسٹ کا ٹاسک اوپن سورس لائبریری میں کیسے تبدیل ہوا - 5
میں اس وقت بھی جوان تھا اور اوپن سورس کمیونٹی سے ناواقف تھا، اور اس طرح کی پیشکش کی حقیقت میرے لیے بے حد جان لیوا تھی اور میں نے پوچھا، وہ ایسا کیوں کر رہا ہے؟ جس پر اس نے جواب دیا: "لولز اوہ، صرف اس وجہ سے کہ مجھے اوپن سورس پروجیکٹس میں تعاون کرنا پسند ہے۔ زندگی کے مقاصد کی ایک قسم..." ( مسئلہ خود یہاں ہے )۔ اس وقت جب میں نے پہلی بار محسوس کیا کہ یہ کتنا اچھا ہوتا ہے جب مختلف لوگ آپ کو اوپن سورس پروجیکٹس کے ذریعے تلاش کرتے ہیں اور ایسی دلچسپ چیزیں پیش کرتے ہیں!

پہلا سائیڈ ڈیفیکٹ

میں نے دیکھا کہ چین سے تعلق رکھنے والے ایک خاص ڈویلپر نے میرے لیے ایک مسئلہ بنایا ، جس میں اس نے بتایا کہ اسے لائبریری کے کام میں ایک خرابی ملی ہے، کہ اگر آپ بڑی تصاویر استعمال کرتے ہیں، تو آپ کو StackOverflowError ملتا ہے ۔ آدمی نے فائدہ اٹھانے کا فیصلہ کیا اور ایک غلطی پائی۔ اور مجھے صرف یہ نہیں ملا۔ اور اس کے بارے میں بھی لکھا۔ یہ لائبریری کی ترقی میں ایک نیا قدم ہے۔ اس کے علاوہ، میرے پاس واقعی کوئی حل نہیں تھا۔ ایک خاص مقام پر، روس کے ایک ٹیسٹر نے ایک حل تجویز کیا۔ لیکن یہ کچا تھا اور صحیح طریقے سے نہیں بنایا گیا تھا اور میں نے اسے قبول نہیں کیا۔ اور جب ماون سینٹرل میں لائبریری کی اشاعت کا وقت آیا تو اس عیب کے ساتھ کچھ حل کرنا ضروری تھا؛ میں اسے اس کے ساتھ شائع نہیں کرنا چاہتا تھا۔ اس کے علاوہ ایک اور خرابی تھی جسے میں نے کبھی ٹھیک نہیں کیا اور اس سے بہت زیادہ تکلیف ہوئی۔

کمانڈ لائن کا استعمال۔ خزاں 2018

ترقی کا اگلا مرحلہ ایک سویڈن (ریناتو ایتھائیڈز) کے ساتھ بات چیت کا تھا، جو لائبریری کو کمانڈ لائن کے ذریعے استعمال کرنا چاہتا تھا اور اس کے لیے کچھ تبدیلیاں اور اضافہ کرنا ضروری تھا۔ اس پر میں پھر حیران اور حیران رہ گیا۔ گرافک ڈیزائنر کے لکھنے کے بعد، میری حیرت کچھ کم تھی، لیکن پھر بھی بہت زیادہ تھی۔ یہ سوچ کہ کسی کو واقعی میرے کوڈ کی ضرورت ہے مجھے ناقابل یقین احساسات سے بھر دیا۔ اس نے ضروری تبدیلیاں کیں اور کوڈ تیار کیا۔ میں نے کوڈ کا جائزہ لیا، یعنی میں نے تبدیلیوں کو دیکھا، تبصرے تھے جو تبدیل کر دیے گئے تھے اور تبدیلیاں لائبریری میں پہلے سے موجود تھیں۔ میں نے ان تبدیلیوں کو ورژن v2.0 کے طور پر نامزد کیا ہے۔ اگلا مرحلہ لائبریری کو Maven Central میں شامل کرنا تھا - ایک مرکزی ذخیرہ، جہاں سے آپ اسے کسی بھی پروجیکٹ کے لیے ڈاؤن لوڈ کر سکتے ہیں اور اسے بطور انحصار استعمال کر سکتے ہیں۔ اس وقت، مجھے کوئی اندازہ نہیں تھا کہ یہ کیسے کرنا ہے، یہاں تک کہ دور سے، اس لیے میں نے کہا کہ میں مصروف ہوں اور اس سے کہا کہ وہ تمام اقدامات انجام دے جو اس پروجیکٹ کو ترتیب دینے کے لیے ضروری تھے۔ لیکن یہ بالکل بھی کافی نہیں نکلا اور سب سے دلچسپ بات یہ تھی کہ ماون سینٹرل کے ساتھ رابطہ قائم کرنا تھا۔ یہ ایک جنگلی درد ہے، جو میں پہلی بار نہیں کر سکا، اور یہ صرف 15 اپریل کو ہی تھا کہ میں اس پروجیکٹ کو ماون سینٹرل پر شائع کرنے میں کامیاب ہوا۔ یہ آسان نہیں تھا، لیکن جیسا کہ دوسرے یہ کہنا چاہتے ہیں، "ہر کوئی جو اپنا جاوا کوڈ شائع کرنا چاہتا ہے اس سے گزرتا ہے۔" لائبریری کو شائع کرنے سے پہلے، مجھے آخر کار معلوم ہوا کہ میں نے ایک طویل عرصے سے چلی آرہی خرابیوں کے ساتھ کیا اور کیسے کیا ہے اور ایک نیا ورژن v2.0.2 جاری کیا ، جس میں میں نے ان تمام لوگوں کا شکریہ ادا کیا جنہوں نے میری مدد کی، بتایا کہ میں نے کیا اور کیسے کیا۔ .

ماون سینٹرل میں اشاعت۔ بہار 2019

کسی لائبریری کو صحیح طریقے سے شائع کرنے کے لیے، آپ کو ورژن بنانے اور ورژن کو درست طریقے سے ترتیب دینے کے بارے میں اچھی طرح سمجھنا ضروری ہے۔ میں اس اسکیم پر قائم رہوں گا:
  • XX.YY.BBBB ، جہاں XX ایک بڑا ورژن اپ ڈیٹ ہے جس میں ایسی تبدیلیاں شامل ہیں جو پچھلے ورژن سے مطابقت نہیں رکھتی ہیں (مثال کے طور پر، طریقوں میں واپسی کے نتائج کو تبدیل کرنا)؛
  • YY ایک معمولی اپ ڈیٹ ہے - ایک اندرونی تبدیلی یا توسیع جو BBBB کو تبدیل نہیں کرتی ہے - یہ وہ نقائص ہیں جن کو ٹھیک کر دیا گیا ہے۔
  • مثال کے طور پر، ورژن 2.0.2 کا مطلب ہے کہ بڑا ورژن 2 ہے، کوئی معمولی اپ ڈیٹس نہیں تھیں، اور نقائص کے لیے دو اپ ڈیٹس ہیں۔
اگلا، یہ جاننا ضروری تھا کہ گروپ آئی ڈی اور آرٹیفیکٹ آئی ڈی کو صحیح طریقے سے کیسے سیٹ کیا جائے ۔ انہیں ایک بار منتخب کرکے مزید استعمال کرنا تھا۔ اور وہ وہ پیکج بناتے ہیں جس میں کوڈ کو محفوظ کیا جاتا ہے۔ تھا: ua.comparison.image اب: com.github.romankh3.image.comparison اور یہ واضح طور پر بہتر ہے، کیونکہ ہر کوئی جانتا ہے کہ یہ GitHub کا ایک پروجیکٹ ہے اور اسے کسی ایسے شخص سے مل سکتا ہے جس کا عرفی نام romankh3 ہے۔ جب میں نے یہ سب کیا تو میں نے ایک نیا ورژن v2.1.0 جاری کیا ۔

سویڈن کے ساتھ مواصلت۔ مئی 2019

لائبریری شائع کرنے کے بعد، ایک اور سویڈن (Mika Kytöläinen) نے مجھے ای میل کیا اور اپنے دوست سے میری لائبریری میں تبدیلیاں کرنے کو کہا۔ اس کا کہنا ہے کہ اسے واقعی اس کی ضرورت ہے اور وہ بہت خوش ہوں گے اگر ہم اسے کرتے ہیں اور جلدی کرتے ہیں۔ یقینا، میں ان تبدیلیوں کے خلاف نہیں تھا جن کی ضرورت تھی۔ اس نے ایک لکیر کی موٹائی کی ترتیب کو شامل کرنے کا مشورہ دیا جو مستطیل کھینچتا ہے۔ جیسے، کمزور بصارت رکھنے والوں کے لیے، یہ ایک مفید تبدیلی ہوگی۔ کوڈ تیار کیا ۔ کچھ اور تبدیلیاں شامل کرنے کے بعد، میں نے ورژن v2.2.0 جاری کیا۔

ایک جرمن کے ساتھ مواصلت۔ مئی 2019

اس کے بعد ایک جرمن نے ایک ایشو بنایا جس میں اس کا کہنا ہے کہ وہ اسے جانچ کے لیے استعمال کرنا چاہتا ہے لیکن اس میں فعالیت کا فقدان ہے۔ اس نے بہت سی تجاویز پیش کیں جو کہ بہت دلچسپ تھیں، اس نے مشورہ دیا کہ مقابلے کے نتیجے میں صرف نتیجے والی تصویر کو واپس کرنے کے بجائے، ڈیٹا کا ایک سیٹ واپس کریں: جس کا موازنہ کیا گیا، نتیجہ (اگر ضروری ہو) اور وہ حالت جس میں MATCH، MISMATCH، SIZE_MISMATCH ہوگا۔ یہاں تک کہ تبدیلیاں کیں۔ لیکن انہوں نے پچھلے ضابطے کو بالکل بھی مدنظر نہیں رکھا اور عجلت میں بنایا گیا۔ میں نے انہیں ٹھکرا دیا اور پیش کش کی کہ میں نے مناسب سمجھا۔ اس کے باوجود اس نے مزید جواب دیا اور میں نے فیصلہ کیا کہ میں خود کروں گا اور نیا ورژن جاری کروں گا۔ اسی وقت، Mika Kytöläinen نے ایک اور دلچسپ فعالیت کی تجویز پیش کی - ان علاقوں کو شامل کرنا جو مقابلے میں شامل نہیں ہوں گے۔ یہ ایک حقیقی معاملہ ہے۔ اور یہ سب v3.0.0 میں جاری کیا گیا تھا۔

ایک حقیقی پروجیکٹ میں استعمال کریں۔

مئی کے آخر میں، Kyiv کے ایک آٹومیشن ٹیسٹر نے مجھے لکھا، جو لائبریری میں دلچسپی لینے لگا اور اسے ایک حقیقی پروجیکٹ میں استعمال کرنا چاہتا ہے جس سے پیسہ کمایا جائے۔ یہ ایک پیش رفت تھی! پالتو جانوروں کے پروجیکٹ میں اسے کہیں استعمال کرنا ایک چیز ہے، لیکن اسے حقیقی پروجیکٹ میں استعمال کرنا بالکل مختلف معاملہ ہے۔ ہم نے بحث کی کہ یہ کیا اور کیسے کام کرتا ہے۔ درخواست بہت دلچسپ ہے: ان کی درخواست میں ان کے چیک ہیں جو پرنٹ کیے گئے ہیں اور یہ چیک کرنا ضروری تھا کہ چیک ایک مخصوص ٹیمپلیٹ کے مطابق بنائے گئے ہیں اور یہ تبدیل نہیں ہوتے ہیں۔ لیکن ایک مسئلہ تھا کہ تاریخ اور وقت جیسے حصے ہمیشہ بدلتے رہتے تھے اور انہیں نظر انداز کرنا پڑتا تھا۔ ہم نے پہلے ہی کچھ علاقوں کو نظر انداز کرنے کے لیے فعالیت کا اضافہ کر دیا تھا، لیکن یہ اب بھی حقیقی استعمال کے لیے بہت کچا ثابت ہوا اور ہم نے اس پر کئی ہفتوں تک مل کر نتیجہ خیز کام کیا۔ نتیجہ ورژن v3.1.1 کی رہائی تھا۔

ایک طاق کی تلاش

اس کے بعد، میں نے محسوس کیا کہ میری لائبریری کا اصل مقام اسے ٹیسٹوں میں استعمال کر رہا تھا۔ ایسا کرنے کے لیے، میں نے ٹیسٹرز کے لیے کسی قسم کا فورم تلاش کرنے اور انھیں اس کے بارے میں لکھنے کا فیصلہ کیا تاکہ کچھ رائے حاصل کی جا سکے اور شہرت میں اضافہ ہو سکے۔ مجھے ایک روسی زبان کا فورم ملا اور وہاں ایک مضمون شائع کیا: آرگنائزیشن آف ٹیسٹنگ امیجز - دو ملتے جلتے کا موازنہ ۔ اس میں مجھے کوڈ اور فعالیت کے بارے میں حقیقی رائے ملی، جسے میں نے لاگو کیا اور ایک نیا ورژن v3.2.0 ، اور پھر v.3.3.0 جاری کیا ۔

ابھی

لائبریری میں فی الحال Github پر 60 ستارے ہیں اور 33 فورک ہیں۔ مجھے لگتا ہے کہ یہ اس حقیقت پر غور کرتے ہوئے بہت اچھا ہے کہ میں نے آٹومیٹرز کے فورم پر ایک مضمون کے علاوہ کسی بھی طرح سے اس کی تشہیر نہیں کی۔ ہر ایک کا شکریہ جنہوں نے آخر تک پڑھا۔ یہ حقیقت میں میری توقع سے کہیں زیادہ طویل مضمون نکلا۔ ماون سینٹرل میں لائبریری کو کیسے شائع کیا جائے اس پر ایک مضمون۔ اگر آپ کے پاس شامل کرنے کے لیے کچھ ہے تو لکھیں! اگر آپ کے پاس لائبریری کو بہتر بنانے کے لیے کوئی تجویز ہے تو لکھیں! میں سب کچھ پڑھوں گا اور اس کے لیے مناسب وقت نکالوں گا۔ کوئی بھی جس نے مضمون کو پسند کیا اور اسے مفید پایا - اس کی درجہ بندی کریں اور تبصرے میں لکھیں۔ اس کے علاوہ، میرے github اکاؤنٹ romankh3 کو سبسکرائب کریں میرے دوسرے مضامین بھی دیکھیں:
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION