شروع یک سیستم مدیریت محتوا به صورت کد باز ( درخواست همکاری )

با درود خدمت شما دوستان و اساتید محترم ,

شاید این تیتر بازم به چشم شما آمده باشد . و بازم شما بگویید چه بحث کلیشه ای . بازم یک کار تکراری و بازم امکان دارد وسط کار قطع شود . با این همه سیستم مدیریت محتوا چرا بازم می خواهد یکی جدید ساخته شود ؟

خیلی از برنامه نویسایی که اینجا فعالیت می کنند شاید بیشتر از ۵ زبان برنامه نویسی بلد باشند و خیلی ها شاید از همین #وردپرس و #جوملا شروع کرده باشند و همینطور بسیار راضی هم بوده باشند . ولی آیا این سیستم های مدیریت محتوا که اکثرا با زبان فارسی درست شده اند دیگر جای کار ندارند ؟ یا بهتر از این ها تولید نمی شود ؟

برای من همیشه سوال هست که این همه زبان مدرن مثلا روبی , clojure و الکسیر اسکالا و یا همین پایتان چرا نمی تونند در کنار هم یک سیستم مدیریت محتوا خوب درست کنند ؟ چرا یک ایرانی نباید یک پروژه خوب در گیت هاب برای طولانی مدت داشته باشد ؟

بله همیشه سختی ها وجود دارد و همیشه وضعیت مالی و اقتصادی ولی کی هست که خبر نداشته باشد در جوملا یا وردپرس چه خبر هست و چه مشکلاتی در آن وجود دارد ؟ چرا با این همه به روز رسانی در ماه و سال باز در حال افت ترافیک هستند .

برای مثال : جوملا

برای اینکه با جوملا بسیار کار کردم در چندین سال و همینطور افزونه های زیادی براش نوشتم که بخشی از افزونه های رایگان من نیز در لینک زیر قرار دارد با جوملا شروع می کنم :

کافی هست شما با جوملا شروع به کدنویسی بکنید :

روتر بسیار بی ارزش با مشکلات زیاد :

شما به استک بروید ببنید چند سوال روتر جواب داده شده است ؟ و کافی هست شما به چند افزونه بزرگ نگاه کنید ببنید چندتای آن ها توانسته اند به خوبی یک افزونه خوب سازگار کامل با روتر بزند و شما کافیست به مارکت جوملا نگاه کنید و متوجه بشود چند افزونه خوب سئو در زمینه لینک ها کار کردند و مشکل کمی دارند یا اصلا می شود یک کار خوب را سالم انجام بدند ؟

دپریکیت شدن کلاس های جوملا در هر چند نسخه :

با هر به روز رسانی جوملا آنقدر ترس بر بدن ما می آید که خیر جوملا را خورده و دیتابیس را فقط نجات می دهیم برخی مواقع . این برای کاربر عادی هیچ وقت مشکلی نیست ولی برای کسی که افزونه می نویسند واقعا مشکلاتی فراوان ایجاد می کند . به عنوان مثال جوملای ۲.۵ به جوملای ۳خیلی از افزونه ها کامل از بین رفت از جوملا ۳ تا ۳.۳ ساختار قالب و بخشی از افزونه ها عوض شد در جوملای ۳.۶ ساختار xml فیلد های جوملا تغییر کرد و باعث یک لوپی می شد که سایت را برخی مواقع دچار مشکل بسیار زیادی می کرد در نسخه ۳.۷ خدارو شکر مشکلی نداشتیم در نسخه ۳.۸ روتر جدید آمد ولی افزونه های قدیمی مشکلی نداشتن ولی باعث تعجب هست یک سمپل کد و داکیومنت خوب برایش منتشر نشد . و جوملای ۳.۹ قرار هست انتشار پیدا کند و یک راه انتقال به جوملای ۴ باشد که باور کنید به زودی خیلی ها فنا می روند

باز هم می گوییم از بین رفتن کلاس ها و همینطور موارد به روز رسانی هیچ مشکلی ندارد بلخره باید برنامه نویس به روز باشد ولی مشکل اصلی نبود هیچ داکیومنت خوب در زمینه کدنویسی در جوملا !!! شما فکر می کنید جوملا یک داکیومنت چندین ساله دارد ولی به شدت اشتباه می کنید وقتی وارد شوید و بخواهید همه چیز در فریم ورک جوملا پیاده سازی شود متوجه می شوید هیچی در دست ندارید

بله گفتم فریمورک جوملا چون تقریبا چند سالی هست فکر می کنم جوملا تبدیل به یک فریمورک شده است علاوه بر یک سیستم مدیریت محتوا


این هارو گفتم که هر سیتمی افزونه زیادی دارد یا قالب های زیادی برای آن درست شده است چیز خوبی نیست ۱۰۰ درصد مصرف کاربردی برای کاربری که نمی خواهد هزینه کند شاید داشته باشد ولی برای برنامه نویسی که می خواد روی پروژه هی خودش کدنویسی کند باور کنید من که تجربه خوبی نداشتم و بعید می دانم داشته باشم .


تجربه من در پیدا کردم سیستم مدیریت محتوای خوب :

به هر صورت بخاطر اینکه من می خواهم برای خودم یک پروژه ای را بالا بیاورم که برای ادامه تحصیلم قرار هست تبدیل به مقاله شود و یک پروژه ای در زمینه e-health هست , نیازمند به یک سیستم مدیریت محتوایی هستم که روی الکسیر نوشته شود و همینطور دارای json API های خوب و جانانه ای باشد . به همین منظور من چه بخواهم و چه نخواهم باید برای خودم به تنهایی چه بایک تیم یک سیستم مدیریت محتوا درست کنم . پس من شروع کردم به نصب انواع سیستم های مدیریت محتوای رایگان در گیت ها در زمان های GO و الکسیر و حتی جاوااسکریپت و … خیلی هاشو خوشبختانه تونستم شروع کنم به نوشتن یک محتوا ولی باز تجربه خوب مثل جوملا یا وردپرس در آن نداشتم . با اینکه به عنوان یک برنامه نویس تازه وارد زیاد با جوملا در این چندین سال نتونستم سازگار بشم ولی بازم چندین برابر این تجربه ارزشش بیشتر از این سیستم های مدیریت محتوای جدید بود .

شاید بدنم عادت جدید پذیرا نیست :smile:


حال چه کاری مدنظر من هست :

من بعد از گشتن و نوشتن خوبی های هر سیستم مدیریت محتوا برای خودم . تصمیم بر ساخت یک cms جندین برابر جدی تر شد . حال من تصمیم گرفتم بجای اینکه روی یک سیستم مدیریت محتوا با افزونه های زیادی تمرکز کنم . بیشتر روی سیستمی باشم که بتواند راه های ساخت و توسعه در آن را تسهیل نمایم. من به این قانون نانوشته کاملا تسلط دارم که تا یک پایه خوب با تمام امکانات مناسب در زمینه یک سیستم مدیریت محتوا را ننویسم . برای یک بار نمی توانم به هدفم برسم . من در این برهه زمانی نمی توانم بیاییم بگویم من بخش مدیریت کاربران ضعیف تری نسبت به جوملا خواهم داشت یا وردپرس !! پس این پروژه راه بسیار زیادی را پیش رویش خواهد داشت که من باید آزمون خطا کنم .

نتیجه گیری

من این مطلب تقریبا بلند که بیشتر دلنوشته بود را تولید کردم تا از شما دوستان دلنوشته از تجربه های بدتون در سیستم های مدیریت محتوا را جمع کنم و تمامی نظرات شما در مورد چطور زدن یک سیستم محتوای جدید و تمرکز ویژه بر برخی از امکانات و ویژگی های شما را نیز جمع آوری نمایم و قطعه قطعه در همین پست کد های خودم را به اشکراک گذاشته و از شما مشورت بگیرم.

و اگر شما با هر زبانی با تمام مشغله های زیادی که دارید و من هم این موضوع را می دانم , تمایل داشتید همکاری بکنید و بخشی را به عهده بگیرید به عنوان مثال شاید یکی پایتان بلد باشد و دوست داشته باشد بر اساس ایده اش ماشین لرنینگ بنویسد و رفتار کاربر را یاد گرفته و برخی از امکانات را به مدیریت توضیح بدهد با کمال میل در خدمتیم . و فکر کند ما کار آموزش هستیم و در حال یادگیری از این دوستان . حال می خواهد هر زبانی باشد این وسط می تواند با جی سان یا راه های دیگیری که شما عزیزان می دانید به هم متصل کرد .

در آخر در یک ماه آینده شاید زودتر بنده شروع به اسکچ کردن طرح هام به صورت ساده می کنم و همینطور آن را در همین صفحه به اشتراک قرار می دهم .و سعی می کنم تا اونجایی که سوادم می کشد در این راه کم نیارم و از کمک شما دوستان استفاده کنم . اگر بزرگ شد و استفاده کننده زیاد که باعث افتخار من هست که در این همه سال مصرف کننده بودیم و بلخره خدماتی درخورد در اختیار کاربران قرار دادیم .

به مرور پست به روز رسانی می شود

با تشکر از دوستان گرامی

شهریار توکلی

پیوست

امید وارم سوتفاهم برای دوستان نشده باشه. من تمام درامدم یا تمام هزینه هام :smile: با جوملاست و به هیچ عنوان نمی تونم بخاطر تعداد مشتریانی که روی اون دارم به این زودی ها یا هیچ وقت حتی از این سیستم مدیریت محتوا بیرون بیام و همیشه جزو توسعه دهنده های افزونه اش هم خواهم بود تازه می خواستم به زودی برای وردپرس هم شروع کنم افزونه های نیاز بومی رو بزنم .


نکته ۱ : شروع اولیه برای ساخت امکانات مورد نظر با الکسیر و فونیکس می باشد
نکته ۲ : در شروع اولیه بیشتر سعی می شود از استفاده کتابخانه های جاوااسکریپت دوری گردن و بیشتر به پایه و هسته سیستم مدیریت محتوا پرداخته شود

1 پسندیده

من با وردپرس از صفر شروع کردم. یعنی هیچی از طراحی و بروزرسانی سایت نمیدونستم. طبیعتا برای شروع خوب بود و تجربه ی خوبی کسب کردم. ولی از یه جایی به بعد اصلا پاسخگوی نیاز نیست. خیلی کنده، دیتابیس بزرگ بشه برای بکاپ گیری دردسر خیلی زیادیه. همش باید آپدیت بشه. و از همه بدتر، برای نوشته هایی که معمولا ساختار خاصی دارن، اگه یه تغییر کوچیک بخوای در ساختار بدی، باید دونه دونه همه ی نوشته ها رو تغییر بدی!

الان خیلی وقته (یکسال) از jekyll استفاده میکنم به شدت راضی هستم. سرعت لود وبسایتم از ۳ ثانیه به نیم ثانیه رسیده! و کاربرا بسیار راحت تر هستن. اخیرا چون تعداد نویسنده ها زیاد شده، برای هماهنگی بیشتر دارم از gitlab قسمت gitlab pages، برای مدیریت محتوا استفاده میکنم که بسیار فوق العاده شده.

1 پسندیده

درود خدمت شما . خیلی ممنون که نظر دادید به شدت تشکر می کنم . حتما از خوبی های این سیستمی که معرفی کردید یاد خواهم گرفت و تحقیق زیادی هم در موردش می کنم .

پس شما دو مشکل داشتید در مورد سیستم های مدیریت محتوا :

۱. بعد از مدتی کند می شدند ؟
۲. بعد از مدتی حجم دیتابیس دیگه قابل پیشبینی نبود ؟

تقریبا من هم همیشه مشکل شما دارم و داشتم . و این علتشو بیشتر به نظرم می رسه بخاطر تمپلیت انجینی هست که این سیستم ها استفاده می کنند . امکانات یک پارچه خوبی می ده مخصوصا در طراحی قالب ولی به خیلی از جاها وصل هست و به شدت در موقع لود صفحه نیاز هست پیوستگی های زیادی رو فراخوانی کنه .
در جوملا هم همینطوره متاسفانه

باز اگر ویژگی نسبت به وردپرس دیدید که این سیستم مدیریت محتوا دارا هست لطفا بفرمایید

اگر می شود و وقت دارید لطفا در مورد اون ویژگی که متصل به گیت لب می شود بیشتر توضیح بدهید ؟

من در یک نسخه از سیستم های مدیریت محتوایی که پیدا کردم به زبان Go به این صورت بود که شما یک فایل تسکت به صورت شماره می زاشتید مثلا 2121.html یا یک چنین چیزی بعد تو یک فایلی معرفی می کردید و دیگر نیازی به دیتابیس نبود و ازش می خوند بیشتر این مورد برای وب سایت ها یا بلاگ های کوچکی کاربرد داشت به نظرم . خیلی استاتیک به نظر می رسید

Jekyll یه جور html generator برای سایت های کاملا static

1 پسندیده

این دو مشکل ، عمده هست و همه بعد از مدتی وقتی بزرگ و بزرگتر میشن، این مشکلات هم باهاشون بزرگ و بزرگتر میشن. اما مشکل اصلی من ساختار محتوا بود.

مثلا فرض بفرمایین من برای یک دسته از پست هام این ساختار رو دارم:

۱- مقدمه
۲- فایل صوتی
۳- فایل تصویری
۴- توضیحات
۵- نتیجه گیری

حالا اگه یدفه وسط کار بخوام تصمیم بگیرم جای مورد دوم و سوم رو عوض کنم، بایستی وقت بذارم و تک تک پستها رو آپدیت کنم. حالا فرض بفرمایید وسط این کار بخوام یه تغییر دیگه هم بدم. اونجوری دیگه همه چیز به هم میریزه.

jekyll هم همین هست. یک سایت استاتیک میشه ساخت. و کلا هم با فایل تکست در ارتباطی که همین ویژگی باعث میشه راحت بشه با سیستم های مدیریت git مثل github یا gitlab راحت باهاش کار کرد.

گیت لب یا گیتهاب میشه محلی برای ذخیره فایلهای سایت، اعم از پستها، css ها و js ها. بعد هر تغییر جدیدی که انجام میدی و push میکنی، خود این دو مخزن git میان و سایت رو مجدد برات میسازن و میتونی فایلهاشو به هر سروری که دوست داری انتقال بدی.

1 پسندیده

یعنی gitlab نقش CDN بازی میکنه؟

1 پسندیده

نه نقش CDN نداره. نمیدونم با سیستم های سایت استاتیک ساز چقدر آشنا هستین. اکثرا اینطور هستن که تمامی فایل های مورد نیاز در خود کامپیوتر شخصی هست. و تغییرات رو در کامپیوتر به صورت آفلاین میدی و سایت رو در خود کامپیوترت میسازی و مشاهده میکنی و اگر اوکی بود همون فایلها رو روی سرور قرار میدی.

خوب این مورد برای وبسایتی که فقط یه نفر روش کار میکنه خیلی مناسب و کافی به نظر میرسه. اما فرض کن حالا چند نفر روی یه وبسایت کار میکنن. برای اینکه دقیقا تغییرات رو بدونیم چی هست و هر کسی کار دیگری رو overwrite نکنه بایستی از یه مخزن git استفاده کنیم. مثل همون کاری که برای کد نویسی میشه.

حالا خوبی مخازن گیت مثل github و gitlab این هست که خودشون با هر تغییری که اضافه میکنی، تمامی فایل های مورد نیازی که بایستی روی سرور قرار بگیره رو برات میسازن و فرد میتونه فایل رو به هر سروری که دوست داره منتقل کنه.

2 پسندیده

آهان! همون ورژن کنترل خودمون، من فکر کردم gitlab سرویس CDN راه اندازی کرده

1 پسندیده

در کل من یکی از تجربه های مهمی که تو این سه سال کسب کردم این هست که قسمت هایی از وبسایت که میتونه استاتیک باشه، بایستی استاتیک باشه. نه اینکه بذاریمشون تو دیتابیس.

قبلا من برای همه چیز از وردپرس استفاده میکردم. به طور کلی سه تا مورد مهم میخواستم. ۱- بلاگ ۲- سیستم فروش ۳- فروم

الان همه این سیستم ها رو جدا کردم و تجربه ی خیلی بهتری شده. برای کارهای بلاگ که عموما استاتیک هست از jekyll استفاده میکنم. سیستم فروش وبسایتم از wordpress استفاده میکنم که خیلی به نظرم راحته. و ۳ - برای فروم هم از discourse استفاده میکنم.

1 پسندیده