Рәмізі
**Drupal** – PHP тілінде жазылған сайтты басқару жүйесі (CMS) және реляциондық дерекқор қоймасы ретінде пайдаланылады (MySQL, PostgreSQL және басқалары қолдалады). Drupal GPL лицензиясымен қорғалған тегін бағдарлама болып саналады және әлемдегі энтузиастар көмегімен дамып келеді.

Жоба тарихы
-----------

Әзірлеуді 2000 жылы Бельгиялық Дрис Байтаерт (Dries Buytaert) бастады, ол осы күнге дейін жобаның жетекшісі боп келе жатыр. Drupal атауы голланд тіліндегі druppel (тамшы) деген сөзден шыққан және қызықты қатеден кейін пайда болған. 2000 жылы бірнеше антверпендік студент интернетке шығу үшін және осы кішігірім желі қолданушыларымен сұхбаттасу үшін ортақ ADSL-модемді пайдалана отырып Дрис ішкі сайт жасап шығарды. Дрис жаңа сайттың домен атын тіркей бастамайынша сайт істеп тұрған бағдарламаның атауы болмады да, теру кезіндегі жаңылыс нәтижесінде dorp.org (голланд тіліндегі dorp – ауыл, осындай кішігірім қауымға үйлесімді) орнына drop.org (ағыл. drop - тамшы) тіркелді. Жаңа сайт аудиториясы жаңа веб-технологияларды дамытуды қызық көретіндерге ауысты және сайт келе-келе әуесқой тәжірибеден веб-бағдарламалауға қызмет көрсететін жобаға айналды. 2001 жылы Дрис drop.org қайнар кодын "Drupal" атауымен жариалады. Сол кезден бастап әзірлеу кейінірек тіркелген, жобаның ресми сайты статусын алған drupal.org сайтына көшті.

Жасалғаннан бері әзірлеу процесіне жүздеген адам қатысты. Өзектің ресми әзірлеушілері – ол ондаған адам, бірақ жүздеген адам өздерінің жүйе кодына қосылатын патчтарын жібереді. Сонымен қатар қозғаушы функционалдығы қосымша модульдермен кеңейтіледі. Мысалы, 4.6 шығарылымында 50 адам қатысты, кодаға түзету жібергендер 338, ал 4.7 шығарылымда 1500 түзету жіберген 338 әзірлеуші қатысты. Жобаның алғашқы бес (2006 жылға таман) жылында 13 шығарылым жіберілді. Бүгінгі таңда (2011 қаңтар) CMS-тің негізгі функцияларын ұлғайтатын 7000-нан астам қосымша модуль әзірленді. Санақ бойынша 2009 жылдың наурызында қозғауыш жаңартуларына Drupal 6-дағы 120 мың белсенді сайт жүгінуде (файрволл қорғанысындағы сайттарды, жаңарту механизмі сөндірілген сайттарды санамағанда). Және де мұнда Drupal ескі нұсқаларында істейтін сайттар саналмаған.

2007 жылы Дрис Байтаерт Drupal негізіндегі коммерциялық жобалар мен қызметтерге бағытталған, ашық жобаны қолдауда бизнес құрған Connonical мен RedHat сәттіліктерімен рухтанған Acquia фирмасын ашты. 2008 жылы Байтаерт информатикадан философиялық ғылым докторы атағын алды.

Уақыт өте келе халықаралық сайт айналасында ұлттық бірлестіктер пайда болды. Қазір түрлі тілдерде қолдауы бар 20-дан астам ұлттық сайт жұмыс істейді, оның ішінде 2003 жылы құрылған орыс тіліндегі drupal.ru қауымдастығы бар.

### Жоба эмблемасы

Drupal жасалғалы бері друпалға арнайы эмблема жасау және таңдау мәселесі туындады. Бірлестік қатысушылары оны сумен немесе тамшымен байланысты болу керек деп есептеді. Бастапқыда Друпал эмблемасы дөңгелек ішіндегі тамшы сияқты болған. Уақыт өте келе эмблеманы карикатуралық адам беті бар тамшы етіп ауыстыру идеясы пайда болды. Стивен Виттемнс (Steven Wittens) көлемдік тамшы жасады, бірақ идея көпке тарамады, себебі көлемдік объектіні қағазға басып шығу, өзгерту және басқалары қиын болды.

Друпалдың қазіргі эмблемасын Кристьян Янсен (Kristijan Jansen) ойлап тапты. Ол адам бетіне ұқсайтын тамшыға ұқсайды. Көздері қосылып кеткен екі тамшы сияқты көрсетілген, шексіздік белгісі сияқты және символикалық түрде Друпал мүмкіншіліктерінің шексіздігін білдіреді.

Орыс тіліндегі бірлестіктің эмблемасы төрт блоктан тұратын, жүйенің модульдігін көрсететін Drupal эмблемасы мен Ресей туының комбинациясы болып табылады.

### Жүлделер

Үш рет — 2007, 2008 және 2009 жылдары — Друпал Webware 100 жүлдесін ұтып алды (бүгінгі үздік сайттар, қызметтер, желі қосымшаларына беріледі);
Друпал — 2008 жылғы Packt Open Source CMS абсолютті жеңімпазы және 2008, 2009 жылдардағы PHP санаты жеңімпазы. Бұл CMS негізгі бәсекелесі Joomla!. Жеңімпаздарды өз саласындағы мамандардан жиналған жюри және Packt сайты кірушілері таңдаған. "Best open source applications 2010" конкурсының «Ең үздік web-контентті басқару жүйесі» категориясының жеңімпазы.

Техникалық ерекешеліктері
-------------------------

Drupal архитектурасы әр түрлі сайттарды кұрастыруға мүмкіндік беред – блог пен форумдардан бастап, жаңалықтар сайты мен ақпараттық архивтерге дейін. Әдепкілей келетін функционалды қосымша кеңейтулерді қондыру арқылы көбейтуге болады – Drupal терминологиясында "модуль" деп аталады. Drupal жинағында келетін ең маңызды функциялары: 

* барлық контент түрлерінің бірегей санатталуы (таксономия) — формудық жазбалардын бастап, блог пен жаңалықтарға дейін;
* рубрикатор құрастырғанда қолданыталын теңшелімдердің кең жинағы: тегіс тізімдер, иерархиялар, синонимдер, туыс санаттар;
* санаттардың кез келген тереңдікке кіруі;
* сайт материалдары бойынша іздеу, сонымен қатар таксономия және қолданушылар бойынша іздеу;
* қолданушылардың материалдарға қол жетімділігін реттеу (рөлдік модель).
* мәзірдің динамикалық түрде құрастырылуы;
* XML-форматтарын қолдау;
* материалдарды RDF/RSS форматында шығару;
* материалдарды басқа сайттардан агрегациялау;
* сыртқы бағдарламалар көмегімен материалдарды жариялау үшін арналған BlogAPI; OpenID арқылы авторизациялау;
* мағыналы URL (басқаша «адамға-түсінікті»);
* интерфейсті басқа тілдерге аудару мүмкіндігі және әр түрлі тілді контентпен жұмысты қолдау;
* қиылысатын мазмұны бар сайттарды жасау мүмкіндігі (мысалы ортақ қолданушылар қоры немесе ортақ теңшелімдері бар сайттар);
* сайттың әр түрлі виртуалды хосттарға арналған бөлек конфигурациялары (соның ішінде әр бір ішіндегі сайтқа өзіндік модуль жинақтары мен темалар);
* сайт жүктелуін щектеуге арналған механизм (жоғары келім кезінде автоматы түрде ақпараттық блоктарды және модульдерді сөндіру);
* модульдердің жаңартулары турады хабарландыру;

Локализацияларды қолдау
-----------------------

Жүйе интерфейсті әр түрлі тілдердің локализациясын қолдайды. Drupal 5 интерфейсы 33 тілге аударылған, Drupal 6 – 70-тен астам тілге аударылған (алайда кейбір аудармалар толық емес). Қазақ. В Drupal-да локализация үшін өзіндік механизм қолданылады және аудармаларды дерекқорда сақтайды. Сонымен қатар стандартты gettext кітапханасымен жұмысқа адаптация оңай болып келеді. Аудармалардың импорты мен экспорты po-файлдары көмегімен орындалады (gettext кітапханасы қолданатын формат).

Сайттың толық локализациясы сыртқы модульдер көмегімен орындалады (олар Drupal-дың стандартты жинағына кірмейді, алайда қолданушы оларды әзірлеуші сайтынан жүктей алады).

Қазақ тілі үшін жеке локализация сервері бар, онда сіз Drupal өзегінің және әр түрлі модульдердың аудармаларын таба аласыз.

Мазмұнды құрылымдастыру тәсілдері
---------------------------------

Drupal таксономияға негізделген, сайт құрылысын ұйымдастыруға арналған икемді тәсіл ұсынады. Таксономия — сайт мазмұнына арналған тақырыптық санаттар жасауға және оларды ақпарат енгізу және шығаруға арналған модульдермен байланыстыруға мүмкіндік беретін механизм. Санаттар жазық тізімді немесе иерархиялы болуы мүмкін немесе әр элемент бірнеше ата-ана мен бірнеше еншісіндегі элементі бар күрделі құрылым болуы мүмкін.

Drupal-ға арналған Content Construction Kit (CCK) кеңейтілімі пайда болғаннан кейін басқа парадигма пайда болды. CCK құжаттарды әр түрлі өрістермен толықтыруға мүмкіндік береді —URL және email енгізуге арналған өрістерден бастап, мультимедиялық файлдарды сақтауға және көрсетуге арналған өрістерге дейін. Сонымен қатар CCK-ге арналған қосымша модульдер көмегімен (мысалы Node reference) құжаттар арасындағы байланыстарды таксономия көмегісіз ұйымдастыруға болады.

Жүйелік талаптар
----------------

Drupal негізі LAMP платформасына бағытталған, алайда басқа да жүйелік бағдарламар қолданылуы мүмкін.

* Операциондық жүйе: Unix отбасы (оның ішінде FreeBSD, Mac OS X), Windows (PHP интерпретаторы жұмыс жасай алатын кез келген ОЖ)
* Веб-сервер: Apache, Nginx, Lighttpd, IIS Versions 6, 7 (Fast CGI арқылы) (теория жағынан PHP коды орындала алатын кез келген веб-сервер)
* Дерекқор басқару жүйесі: MySQL, PostgreSQL (басқа да реляциялық ДҚБЖ-леріне бейімдеу қиын емес, мысалы IBM DB2)
* PHP 4.3.3 нұсқасы немесе одан жоғары (барлық сыртқы модульдермен сыйымды болу үшін PHP 4 орнына PHP 5 қолданған жөн). Drupal 7 жұмысы үшін PHP 5.2.4 немесе одан жоғары нұсқа керек.

Кемшіліктері
------------

Сыншылар Drupal-да PHP-дың объекттік мүмкіндіктерін шала қолданғанын айтады. Шынымен де, API Drupal PHP-дың объектке бағытталған бағдарламаудың мүмкіндіктерін аз қолданған. Әзірлеушілердің айтуы бойынша бұның себебі PHP-де объектке бағытталған бағдарламаудың шала орындалғаны (әсіресе PHP 5 нұсқасында). Drupal-да объекттік модель бар, алайда PHP-ге дәстүрлі емес күйде. Алайда жасалып жатқан Drupal 7 нұсқасында PHP 5 объекттік мүмкіндіктерін қолданатын жаңалықтар бар.
Drupal-дың кемшіліктеріне (соған қоса артықшылықтарына) API-дың кері үйлесімділігі болмауын жатқызуға болады. Әр жаңа релиз сайын API өзгерістері болып тұрады, бұл кезде жаңа функцияларды қосумен қатар кейбір ескі функциялар алынып қалады немесе функцияны шақыру параметрлері өзгереді. Ол сыртқы модульдердің әзірлеушілерін өз жобаларын Drupal-дың жаңа нұсқасына бейімдеуге мәжбүр етеді. Алайда API өзгерістері және модульдерді жаңа нұсқаларға бейімдеу процедурасы әр релиз құжаттарында сипатталады, сонымен қоса жүйенің өзегін автоматы түрде жаңарту механизмы ұсынылады. Бұл тәсілдің артықшылығы — бір нұсқадан келесісіне ескі API-мен үйлесімділіктің бағдарламалық қабатын тасымалдау қажет болмай қалады, нәтиже ретінде жүйенің коды жеңілдейді.

Сілтемелер
----------

* Drupal ресми сайты (ағыл.)
* «Drupal Ресей»  (орыс.)
* Қазақ Drupal  (орыс.)

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

|   Веб қосымшалар құралдары |
| --- |
|  |
| ASP.NET | 
ASP.NET MVC \* ASP.NET Web Forms \* ASP.NET Dynamic Data \* BFC \* DotNetNuke \* MonoRail \* OpenRasta \* Umbraco |
|  |
| ColdFusion | 
ColdBox Platform \* ColdSpring \* Fusebox \* Mach-II \* Model-Glue \* onTap \* on Wheels |
|  |
| Common Lisp | 
CL-HTTP \* UnCommon Web \* Weblocks |
|  |
| C++ | 
CppCMS \* Wt |
|  |
| Java | 
Apache Struts \* AppFuse \* Flexive \* GWT \* Grails \* Vaadin \* ItsNat \* JavaServer Faces \* Jspx \* Makumba \* OpenXava \* Play \* Portofino \* Eclipse RAP \* Reasonable Server Faces \* RIFE \* Seam \* Spring \* Stripes \* Tapestry \* WebWork \* Wicket \* ZK \* ICEfaces \* WaveMaker |
|  |
| Scala | 
Circumflex \* Lift (web framework) \* Play \* Scalatra |
|  |
| JavaScript | 
Ample SDK \* Closure \* Ext JS \* Helma \* Prototype JavaScript Framework \* Rico \* Sencha Touch \* script.aculo.us \* SproutCore \* jQuery \* Dojo Toolkit |
|  |
| Perl | 
Catalyst \* Dancer \* Gantry \* Mason \* Maypole \* Mojolicious \* Poet \* WebGUI |
|  |
| PHP | 
AppFlower \* CakePHP \* CodeIgniter \* Drupal \* e107 \* eZ Publish \* FuelPHP \* Horde \* Joomla! \* Lithium
* Midgard \* MODX \* Qcodo \* Seagull \* SilverStripe \* Symfony \* TYPO3 \* WordPress \* Xaraya \* Yii \* Zend Framework \* Zeta Components
 |
|  |
| Python | 
BlueBream \* CherryPy \* Django \* Flask \* Grok \* Nevow \* Pyjamas \* Pylons \* Pyramid \* Quixote \* TurboGears \* web2py \* Zope 2 \* Tornado |
|  |
| Ruby | 
Ruby on Rails \* Merb \* Sinatra \* Hobo \* Camping \* Nitro \* Ramaze |
|  |
| Smalltalk | 
AIDA/Web \* Seaside |
|  |
| Other languages | 
Application Express (PL/SQL) \* Happstack (Haskell) \* Kepler (Lua) \* OpenACS (Tcl) \* SproutCore (JavaScript/Ruby) \* Yaws (Erlang) \* SymbolicWeb (Clojure) |

 |