بازخورد کاربران درباره Splync
حدود یک و نیم ماه پس از انتشار Splync v1.5 - بهروزرسانی که بهطور نهایی امکان نسبتبندی سفارشی بهازای هر پروژه و هر دسته را فراهم کرد - موج جدیدی از بازخوردها رسید. بهروزرسانی v1.5 تغییرات سنگینی در سرور نیاز داشت، بنابراین در آن زمان، معتقد بودم جزئیات کافی برای اکثر موارد استفاده ارائه میدهیم. سپس چند کاربر جدید سوال ساده و معقولی پرسیدند: «آیا میتوانیم نسبتهای سفارشی برای هر هزینه جداگانه تنظیم کنیم؟» پروژه سفرشان لحظاتی داشت که تنها دو عضو نیاز به تقسیم یک هزینه خاص داشتند و در لحظات دیگر همه سه نفر میخواستند چیزی را به اشتراک بگذارند. در Splync v1.8، متاسفانه پاسخ منفی بود. توضیح دادم که میتوانند دستهبندیهای اضافی با نسبتهای سفارشی برای آن موارد خاص ایجاد کنند - یک راهحل موقت، نه یک راهحل واقعی.
جنگل فراکتال بیش از حد گسترده به نظر میرسید
به یاد آوردن مقدار کاری که در نسخه v1.5 انجام شد، کمی ترسناک بود. ابتدا باید به پروژهها اجازه میدادم نسبتهای خود را داشته باشند. سپس دستهها نیز نیاز به نسبتهای سفارشی خود داشتند. در آن لحظه فکر کردم که کل درخت را پوشش دادهام - همه میوهها را از هر شاخه جمعآوری کردهام. اما کار بر روی نسبتهای هر هزینه متفاوت بود. احساس میشد که هر بار که میوهای را میچینم، درخت جدیدی از همان نقطه روییده میشود. نه یک جنگل بینهایت فراکتال، بلکه ساختاری دو طبقه واضح: یک لایه به لایه بعدی زندگی میبخشد. در منطق v1.5، یک هزینه ابتدا نسبت پروژه را به ارث میبرد. اگر دسته آن نسبتهای سفارشی داشت، آنها مقادیر پروژه را بازنویسی میکردند. بنابراین، هنگامی که نسبتهای هر هزینه را اضافه کردم، متوجه شدم که سعی دارم یک بازنویسی دیگر بر روی آن بازنویسی اضافه کنم. ساختار به یک پلهپله از بازنویسیها تبدیل شد - از نظر فنی درست، اما ذهنی پیچیده. سخت بود که ساختن یک لایه دیگر از منطق تکهپارهها را توجیه کنم.
تغییرات پارادایم در Splync v1.9
در نهایت، نقطه عطفی از برعکس کردن ساختار بهدست آمد. بهجای انجام «پروژه → دسته → هزینه» و بازنویسی هر لایه با لایه بعدی، چرا در جهت معکوس فکر نکنیم؟ سهمهای هر هزینه → سهمهای دستهای → سهمهای پروژهای. این ترتیب نشان میدهد که چگونه افراد واقعی ممکن است فکر کنند: اگر یک هزینه خاص قوانین خود را دارد، باید بهسادگی از آنها پیروی کند. اگر نه، الگوی دسته منطقی است. اگر حتی این نیز شکست خورد، به پیشفرض پروژه بازگردید. دیگر هیچ پلهپلهای از بازنویسیها نیست - فقط سلسلهمراتبی تمیز از اولویتها. هنگامی که اینگونه به ساختار نگاه کردم، مه جنگل شبه فراکتال فورا برطرف شد. مسیر پیادهسازی واضح شد: «هر هزینه بررسی میشود که آیا سهمهای سفارشی هر هزینه وجود دارد. اگر وجود دارد، از آنها استفاده کنید. اگر نه، سهمهای دستهای را بررسی کنید. اگر نه، از پیشفرض پروژه استفاده کنید.»
زیر آسمان راه رفتن
منطق جدید ساده، قابل پیشبینی و ریاضیوار صحیح به نظر میرسید. برای پشتیبانی از این سیستم اولویت، ما یک جدول اختصاصی در MariaDB برای تقسیمبندیهای هر هزینه اضافه کردیم، که به نوعی جدول تقسیمبندیهای دستهای را منعکس میکند. جدول جزئیات هزینه نیز نیاز به گسترش داشت، درست مانند جدول جزئیات دسته در v1.5. هنگامی که طراحی زیربنایی «دو طبقه» واضح شد، بقیه آن فقط برنامهنویسی دقیق بود - هم در اپلیکیشن و هم در سرور. با این حال، مسیر در برخی جاها خطرناک به نظر میرسید، مانند راه رفتن در جنگل تاریک بدون نقشه. برای پاک کردن ذهنم به بیرون رفتم. هوا تیز و تمیز بود. در حال قدم زدن در محلههایم، کوه فوجی را در فاصله دور دیدم، آبی کریستالی زیر آسمانی آبی کامل. تقریباً 100 کیلومتر دورتر بود، اما به اندازهای نزدیک به نظر میرسید که بتوان آن را لمس کرد. این لحظه به نظر میرسید که یادآور باشد: حتی اگر فکر میکنم در جنگل راه میروم، در واقع زیر آسمان باز راه میروم.
چه کارهایی میتوانید با Splync v1.9 انجام دهید — تقسیم سفارشی برای هر هزینه
Splync v1.9 از آن لحظه شفافیت به دنیا آمد. به خانه برگشتم، نقاط پایان جدید را سیمکشی کردم، منطق جدید سرور را آماده کردم، رابطهای مرتبط را سازماندهی کردم، v1.9 را به Apple ارسال کردم و در نهایت خوابیدم. بررسی زودتر از حد معمول به پایان رسید. وقتی بیدار شدم، Splync v1.9 قبلاً تأیید شده و بهطور خودکار در App Store منتشر شده بود. از این نسخه به بعد، تقسیمبندی انعطافپذیرتر میشود. اگر با جان و کیت در حال سفر هستید، میتوانید هزینههای اساسی را بهطور مساوی بین سه نفر خود تقسیم کنید. اما برای غذا، ممکن است به سهم «25% : 50% : 25%» تغییر دهید زیرا جان معمولاً دو برابر میخورد. و اگر جان از یک شام صرفنظر کند - مثلاً در یک رستوران صدف - میتوانید آن وعده غذایی خاص را به «50% : 0% : 50%» تنظیم کنید تا او هزینه چیزی که نخورده را پرداخت نکند. با نسخه v1.9، Splync اکنون از نسبتهای پروژهای، دستهای و هزینهای در یک منطق یکپارچه پشتیبانی میکند. زیرساختها پایدار و از لحاظ ریاضی صحیح هستند. چالش بعدی رابط کاربری است: برخی از برنامههای دیگر تقسیمبندی، راههای نرمتر و شیکتری برای تنظیم این نسبتها ارائه میدهند. Splync اکنون قدرت پشتزمینهای برای پشتیبانی از چنین بهبودهایی دارد. ما روی آنها یکییکی کار خواهیم کرد.