دیرک لمرمن پس از 15 سال توسعه، کتابخانهٔ FlexGanttFX را متن‌باز کرد و آن را تحت مجوز AGPL منتشر نمود تا دسترسی به کد و شفافیت نگهداری پروژه افزایش یابد. برای توضیحات بیشتر دربارهٔ مجوزها می‌توانید این بررسی را نیز مشاهده کنید: AGPL.

چه چیزی FlexGanttFX را متمایز می‌کند

چارچوب مبتنی بر JavaFX اجرا می‌شود و برای محیط‌های دسکتاپ و دستگاه‌های همراه مناسب است. پروژه شامل دموهای قابل اجراست که تکنیک‌های ساخت و رندر نمودارهای گانت را نشان می‌دهند. نمودارهای گانت ابزار استاندارد نمایش پیشرفت و وابستگیِ چندین کار در طول زمان هستند و در حوزه‌هایی مانند لجستیک، هوانوردی، بهداشت و درمان و برنامه‌ریزی پروژه‌های نرم‌افزاری کاربرد دارند (منبع توضیحی).

معماری و قابلیت‌های کلیدی FlexGanttFX

FlexGanttFX با ترکیب رندرینگ Canvas و نودهای استاندارد JavaFX عملکرد بالایی ارائه می‌دهد: کل نمودار به‌صورت یک Canvas واحد رندر می‌شود و نیازی به اعمال مجدد کامل افکت‌ها برای هر عنصر جداگانه نیست، که امکان رندر سریع نمودارهای پیچیده را فراهم می‌کند.

چهار جزء بنیادین چارچوب به‌شرح زیر هستند:

  • Rows — ردیف‌ها، درختی از منابع را می‌سازند و ساختار اصلی نمایش را فراهم می‌کنند.
  • Activities — فعالیت‌ها آیتم‌های زمان‌بندی‌شده‌ای هستند که به یک ردیف متصل می‌شوند.
  • Layers — لایه‌ها فعالیت‌ها را گروه‌بندی کرده و ترتیب عمق (z-order) و قابلیت دید را کنترل می‌کنند.
  • Links — پیوندها وابستگی‌ها و ترتیب اجرای فعالیت‌ها را نمایش می‌دهند.

زمان در سراسر چارچوب با java.time.Instant مدل‌سازی شده است و تایم‌لاین می‌تواند با دقت‌های مختلف از میلی‌ثانیه تا دهه‌ها رندر شود. مناطق زمانی، تغییرات ساعت تابستانی، تعطیلات آخر هفته و ساعات کاری به‌عنوان بخشی از مدل در نظر گرفته شده‌اند، نه صرفاً تنظیمات نمایش. برای نمایش هر ردیف چند چیدمان مختلف وجود دارد: چیدمان استاندارد (نوارهای کلاسیک)، چیدمان نمودار (نمایش فعالیت‌ها به‌صورت خط یا مساحت برای نمایش منحنی ظرفیت) و چیدمان pool (انباشت خطوط برای فعالیت‌های هم‌پوشان). ویرایش‌ها با دست‌کاری مستقیم انجام می‌شوند و قلاب‌های محدودیتی امکان اعمال قوانین اختصاصی برنامه را فراهم می‌کنند.

چرایی انتخاب AGPL و پیامدهای آن

لمرمن مجوز AGPL را انتخاب کرد؛ مجوزی که دربارهٔ استفاده از نرم‌افزار تغییر‌یافته از طریق شبکه الزامات مشخصی دارد. برخلاف مجوزهایی مانند Apache 2.0، AGPL شرکت‌هایی را که نسخهٔ تغییر یافته را به‌عنوان سرویس شبکه‌ای به‌کار می‌گیرند موظف می‌کند کد منبع تغییرات را در دسترس قرار دهند حتی اگر نرم‌افزار را بازتوزیع نکنند. این روش امکان مدل‌های کسب‌وکار با مجوز دوگانه را فراهم می‌آورد، اما در عمل برخی ارائه‌دهندگان سرویس‌های SaaS از پروژه‌های تحت AGPL پرهیز می‌کنند.

تصمیم لمرمن در هماهنگی با نمونه‌هایی مانند iText قرار دارد که تحت AGPL منتشر شد و سپس مدل‌های مجوزی برای حمایت از کسب‌وکارهای تجاری انتخاب شد. تغییرات مجوز در پروژه‌های بزرگ نیز نشان می‌دهند که تصمیم دربارهٔ مجوز تأثیر گسترده‌ای بر پذیرش و مدل کسب‌وکار پروژه‌ها دارد؛ نمونه‌هایی در این زمینه گرافانا و MongoDB نیز این بحث‌ها را برجسته ساخته‌اند.

پیام برای توسعه‌دهندگان و تیم‌های محصول

برای تیم‌هایی که نیاز به نمایش و ویرایش نمودارهای برنامه‌ریزی و تخصیص منابع دارند، FlexGanttFX گزینهٔ مناسبی است: اجرای JavaFX، دموهای آماده و مدل زمان دقیق آن را برای کاربردهای بزرگ‌مقیاس قابل‌استفاده می‌کند. با این حال، انتخاب AGPL پیامدهای حقوقی خواهد داشت و تصمیم برای استفاده از کتابخانه باید هم از منظر فنی و هم از منظر مجوزی سنجیده شود.

  • بررسی سازگاری فنی: آزمایش عملکرد با داده‌های واقعی و سناریوهای هم‌پوشانی فعالیت‌ها.
  • بازبینی مجوزی: ارزیابی تأثیر AGPL بر سرویس‌های داخلی و ارائه‌های مبتنی بر وب؛ در صورت نیاز مشورت حقوقی دریافت کنید.
  • برنامهٔ مهاجرت/پشتیبانی: سنجش قابلیت نگهداری، دموها و نمونه‌های آماده جهت تسریع پیاده‌سازی.
  • گزینه‌های تجاری: در صورت لزوم بررسی امکان همکاری با نگهدارنده برای مجوز دوگانه یا راه‌حل‌های تجاری.

نگاه رو به جلو

متن‌باز شدن FlexGanttFX می‌تواند سرعت توسعه و هم‌آفرینی را افزایش دهد و جامعهٔ کاربران را در ارزیابی و نگهداری کد درگیر کند؛ اما پذیرش آن در محیط‌های تجاری وابسته به سیاست‌های مجوزی و مدل کسب‌وکار سازمان‌ها خواهد بود. تعامل میان پروژه‌های متن‌باز و سرویس‌های ابری در ادامه مسیر، نقش تعیین‌کننده‌ای ایفا خواهد کرد.