Recently Drupal celebrated its 15th birthday and while everybody is busy with learning Drupal 8 we would like to stop and take a look at where our beloved system emerged from 15 years ago.
Most of the people don’t know about history of Drupal and how it evolved from message board platform (Drop 1.0) to a fully scaled enterprise level CMS (Drupal 8.0).
Did you know some of key features of Drupal like modules, nodes, watchdog and multilingual support where available since Drupal 2.0?
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
History of Drupal: From Drop 1.0 to Drupal 8
1.
2. Tamer Zoubi
from Zagreb, Croatia
CTO at WEBSOLUTIONS | HR (http://websolutions.hr)
President of Drupal Croatia Association (http://drupal.hr)
Drupalist in free time (https://www.drupal.org/u/tamerzg)
Twitter @WEBSOLUTIONSHR
About me
3. 1. Web before Drupal
2. How Drupal not only survived massive changes in web industry; but it
has also helped drive them
3. Why and how was Drupal created?
4. Tour through Drupal 1.0 to 8.0
a. Lookback of how key Drupal features we use today (eg: concept of modules,
nodes and multilingual support) evolved over time
b. Important Drupal events
5. Drupal in future
Agenda
1990. 2016.
5. How Drupal not only survived massive changes in the web
industry,
but it has also helped drive them:
⇁ Open source
⇁ Modularity
⇁ Concept of "nodes" rather than "pages"
⇁ Constant evolution and reinvention over backward compatibility
massive changes in web industry
How Drupal survived
6. “For me the history of Drupal is a chain
of interesting surprises.”
— Dries Buytaert, Drupal Founder and Project Lead
Why and how was Drupal created?
10. ⇁Fully-featured content management/discussion engine suitable
for a news-driven community or portal site
⇁Concepts of stories & books for content
⇁Written after Slash and Scoop
⇁No menu router, everything is accessed through .php files
⇁ eg: account.php, admin.php, submission.php, module.php, etc.
⇁Name for guest users: "Anonymous Chicken"
Drupal 1.0
15.01.2001
1.0 2.0 3.0
11. ⇁Database abstraction layer
⇁ mySQL only but it should be straightforward to port to other
databases
⇁ db_query(), db_fetch_object(), db_fetch_array() identical functions remained
until Drupal 7
⇁ no install script, comes with SQL file
⇁ 15 tables only
Drupal 1.0
15.01.2001
1.0 2.0 3.0
15. Modularity from beginning
Drupal 1.0
⇁Dries wanted to have a system which is as modular as possible
⇁ “modular design provides flexibility, adaptability, and continuity
which in turn allows people to customize the site to their needs and
likings”
- Dries Buytaert in documentation.module
⇁A drupal module is simply a PHP file containing a set of routines
⇁No UI for enabling/disabling modules,
manual copy-paste to the /modules directory
1.0 2.0 3.0
18. Themes
⇁ Drupal's theme system is simple, elegant, flexible and powerful
⇁ You control all aspects of your drupal site in terms of colors,
markup, layout and even the position of most blocks (or boxes)
⇁ Very simple, just one *.theme file
⇁ Theme() class with five PHP functions
⇁ header(), story(), controls(), box(), footer()
⇁ Drupal core themes: jeroen, marvin, unconed
Drupal 1.0
20. ⇁It is possible for each and every user to become a contributor
⇁diff and patch for content control
⇁Patches were submitted via e-mail and in plain text;
maintainers can read and judge the patch
Community engagement
Drupal 1.0
1.0 2.0 3.0
22. ⇁Added translation / localization / internationalization support,
the famous t()
⇁ “because many people would love to see their website showing a lot
less of English, and far more of their own language, drupal provides a
framework to setup a multi-lingual website or to overwrite the default
English text in English.”
⇁ Adding a new language requires you to edit configuration file and
SQL database manually
Drupal 2.0
15.03.2001
2.0 3.01.0 4.0
23. ⇁Added fine-grained user permission (or group) system
⇁ user_access()
⇁Added "user ratings"
⇁ similar to SlashCode's karma or Scoop's mojo
⇁Added sections for stories
⇁ this will later evolve in taxonomy
⇁Rewrote comment/discussion
Drupal 2.0
15.03.2001
2.0 3.01.0 4.0
28. Number of Core modules
Development Time
22
presented in months 2
Drupal 2 in numbers
29. Everything is based on nodes
⇁Framework for all content types (story, book, diary, forum, blog)
⇁Fortuitous early decision was to focus Drupal on the concept
of "nodes" rather than "pages"
⇁It wasn't until 10 years later with the rise of mobile that we
started to see the web revolve less and less around pages
Drupal 3.0
15.09.2001
3.0 4.02.01.0 4.1
34. Number of Core modules
Development Time
26
presented in months 6
Drupal 3 in numbers
35. Coming out to the world of techies
kerneltrap.org
⇁In 2002 Dries initiated a relationship with Jeremy Andrews author
of kerneltrap.org and suggested Drupal as an alternative to PHP-
Nuke
⇁ kerneltrap.org was a very popular news site reporting about Linux
⇁ Feb.2002 kerneltrap.org is migrated on Drupal 3.0.2
⇁Jeremy wrote Throttle module which will later be included in core
and became one of top Drupal contributors
⇁He reported on his early conversion to work with Drupal on
kerneltrap.org
kerneltrap.org
2002
37. “Drupal is now really a platform for any type of web application
as users can easily extend it and modify it to better fit their
needs.”
- Drupal 4 PR
⇁Close to 100 major sites running Drupal
⇁With developers from all parts of Europe and the U.S.,
Drupal became an international open source project.
Drupal 4.0
15.06.2002
4.0 4.13.02.0 4.2
39. ⇁D3 used metatags and attributes to classify the content,
in a parent-child relationships, but those relationships
aren't being used
⇁Added taxonomy module which replaces the meta module
⇁ supports relations, hierarchies and synonyms
⇁Controlled vocabulary with ability to 'bookmark'
or organize content
⇁It was at this point that Drupal started to look more like a
enterprise CMS
Drupal 4.0
4.0 4.13.02.0 4.2
Taxonomy
43. Unsuccessful concepts
Drupal 4.0
⇁Next generation distributed authentication based on XML-RPC
allows users to be identified with existing Drupal logins
(even across sites) or Jabber or Yahoo logins
⇁Blogger API support allowing Drupal to both be posted to
and post with the Blogger API
⇁Automatic notification to www.weblogs.com of changes
to a user's blog
4.0 4.13.02.0 4.2
44. Drupal 4.1
01.02.2003
⇁Added profile.module
⇁ extend the user and registration page
⇁Added pager support
⇁First theming functions
⇁ theme_invoke() later to become theme()
⇁Comment moderation, improved forums,
improved statistics tracking, various performance improvements
4.1 4.24.03.0 4.3
45. Unsuccessful concepts
Drupal 4.1
⇁removed the rating.module
⇁added throttle.module
⇁ auto-throttle congestion control mechanism
⇁ eg. you might choose to disable pictures when the site is too busy
(reducing bandwidth)
⇁ as of D7, will be removed from core
⇁ today there are far better mechanisms
⇁ eg. aggressive anonymous page caching
4.1 4.24.03.0 4.3
46. Drupal 4.2
01.08.2003
⇁Focus on improving ease of use and administration
⇁Clean URLs
⇁ simple, easy to remember "clean URLs"
⇁First ideas leading to menu router
⇁ every request goes through index.php
⇁ using _GET[‘q’] param and hook_page()
⇁ now you could access nodes through /node/view/{nid} instead of
node.php?op=view&id={nid}
4.2 4.34.14.0 4.4
47. New features
Drupal 4.2
⇁Support for extending Drupal with WYSIWYG editors
⇁Support for Microsoft SQL server
⇁Node API which allows for better integration
⇁ hook_nodeapi()
⇁"Xtemplate", a template driven theme engine instead of custom
made Theme() class
4.2 4.34.14.0 4.4
48. Drupal coming out to the world
2003
⇁Interest in Drupal got a significant boost in summer of 2003 when
it helped build "DeanSpace" for Howard Dean, one of the 2004
U.S. presidential election candidates
⇁DeanSpace provided something like Drupal distribution which
anyone could download and install his own Dean-site
⇁As campaign grew more and more, Drupal saw 300% increased
activity on drupal.org in terms of content
4.2 4.34.14.0 4.4
50. Drupal 4.3
01.11.2003
⇁Focus has gone into improving user-friendliness, both to end-
users and administrators
⇁URL alias support through new path.module
⇁Database prefixing
⇁Breadcrumbs
⇁Mass node operations
4.3 4.44.24.1 4.5
51. Drupal 4.4
01.04.2004
⇁Added a file API
⇁ enables better document management
⇁Added fieldsets
⇁Added many new theme functions and refactored existing theme
functions
⇁ improved themability of Drupal
⇁ made all theme functions start with 'theme_'
⇁First E-commerce contributed module
4.4 4.54.34.2 4.6
52. Drupal 4.5
18.10.2004
⇁Configurable menus
⇁ made it possible to add, delete, rename and move menu items
⇁ hook_menu() is born
⇁Tab based user interface
⇁ introduced tabs and subtabs for local tasks
⇁Multiple roles per user
⇁Customizable user profiles
⇁ made it possible to add custom profile fields through UI
4.5 4.64.44.3 4.7
53. Translation improvements
Drupal 4.5
Finally since Drupal 2.0 we are seeing some major improvements
on translation
⇁managing translations is now completely done through the
administration interface
⇁no more manually editing tables in SQL to add new language
⇁added support for importing/exporting gettext .po files
4.5 4.64.44.3 4.7
57. Drupal 4.6
4.7
⇁PHP5 support
⇁Multi-site support to run multiple Drupal sites
from a single code base
⇁Personal contact forms for registered users
⇁Added an image API: enables better image handling
⇁ image resizing, crop, scale using GD2
⇁ predecessor to imagestyle module in D7
⇁Made the ping module ping pingomatic.com which, in turn,
will ping all the major ping services
5.0
15.04.2005
4.64.54.4
59. Drupal 4.7
01.05.2006
⇁More than five years, 30+ servicing firms employing 100+
Drupal professionals, 300+ contrib modules, and 55,000+
Drupal powered sites later, Drupal 4.7.0 is finally here and it
rocks!
⇁There have been over 338 contributors with over 1500 patches
⇁Major usability improvements and new Drupal core functionality
⇁Later this year Views module is born
4.7 5.04.64.5 6.0
60. New features
Drupal 4.7
⇁Lots of JS & AJAX
⇁ autocomplete & file uploading
⇁New Forms API: The forms API has been refactored to make it
possible to alter, extend or theme any form in Drupal
⇁ made it possible to alter, extend or theme forms
⇁ however broke hundreds of contributed modules
⇁ but eventually pay-off was huge
4.7 5.04.64.5 6.0
61. Module improvements
Drupal 4.7
Modules can install database tables
⇁each module can define its .install file
⇁using hook_install() table would be created using db_query()
⇁ later to be replaced with Database schema API
⇁prior to this if module needed to install database tables, it would
come with sql dump and instructions how to manually import it!
4.7 5.04.64.5 6.0
62. Theme improvements
Drupal 4.7
⇁PHPTemplate
⇁ written by Adrian Rossouw specifically for use with Drupal
⇁ Xtemplate engine removed
⇁ Existing core themes ported to PHPTemplate
⇁ uses individual tpl.php files to theme Drupal's theme_something()
functions
⇁ PHPTemplate was used until Drupal 8 when it was replaced by Twig
⇁Multiple Block Regions
⇁ added support for theme-specific block regions
4.7 5.04.64.5 6.0
64. Number of Core modules
Development Time
31
in months, all 4.x releases 55.5
Drupal 4 in numbers
4.7
65. Drupal 5.0
15.01.2007
⇁Released on Drupal's 6th birthday
⇁Drupal 4.0 was released in 2002 and finally community feel
confident to increase the major version number from 4 to 5
⇁Over 492 contributors to the Drupal 5.0 release,
submitting 1173 patches
⇁Over 2500 contributed modules
5.0 6.04.74.6 7.0
66. Features
Drupal 5.0
⇁Web-based installer
⇁ no more manual import of sql dump
⇁ checks run-time requirements
⇁ Reorganized module directory structure
⇁ modules now have their own directory
⇁ contrib modules & themes go to sites/all directory
⇁Module dependencies
⇁ added .info files for module meta-data
⇁ added support for module dependencies
5.0 6.04.74.6 7.0
67. Features
Drupal 5.0
⇁Pluggable cache backends
⇁ can plugin alternative cache backends
⇁ use file caching, memcached or other cache strategies instead of the
default database caching
⇁jQuery 1.0.4
⇁ all existing JS in Drupal core has been converted to use it
⇁ Drupal was early adopter, today jQuery is used on 60% of top-million
sites
⇁Custom content types
⇁Added support for Drupal distributions
⇁ distributions allow people to create ready-made downloadable
packages
with their own focus and vision
5.0 6.04.74.6 7.0
68. Theme improvements
Drupal 5.0
⇁Garland as the new default theme
⇁ uses the new color module to change the theme's entire color scheme
on the fly
⇁CSS preprocessor
⇁ all (cacheable) stylesheets are now aggregated into one compressed
file
⇁ makes site faster
5.0 6.04.74.6 7.0
71. Number of Core modules
Development Time
29
presented in months 8.5
Drupal 5 in numbers
72. Drupal 6.0
13.02.2008
⇁Reached EOL recently (24 Feb 2016)
⇁Still estimated of 120,000 websites are using Drupal 6
⇁Over 7000 contributed modules and 600 custom themes
⇁Friendlier installer
⇁Drag-and-drop administration
⇁Drupal's menu system has been rewritten from scratch,
making it much more efficient and powerful
⇁Improved security
⇁ update module to notify about new releases
⇁ security Announcements email list
6.0 7.05.04.7 8.0
74. Number of Core modules
Development Time
34
presented in months 13
Drupal 6 in numbers
75. Drupal 7.0
05.01.2011
⇁Drupal is now used for building any kind of website from blogs
and microsites to enterprise level systems
⇁11000+ contrib modules, 600+ themes & 200+ distributions
⇁Everything is an entity
⇁ Content types
⇁ Taxonomy
⇁ Users
⇁ Custom entity types
⇁Now it’s all about web apps
7.0 8.06.05.0 8.1
78. ⇁Starting with Drupal 8.0, core releases will move to a new
release cycle schedule, and begin using the semantic versioning
(semver) numbering system
⇁Scheduled minor releases (8.1, 8.2) will be released
approximately every 6 months, and will incorporate new features
⇁ 20.4.2016 - Drupal 8.1
⇁Drupal 9.0 will be 8.x but without backward compatibility
8.0 ...7.06.0 9.0
Drupal 8.1, 8.2, ... 9.0
83. Thank you for your time
⇁ You can get my slides from
http://websolutions.hr/drupal-history
⇁ There you will also find links to GitHub where you can browse
and download old releases, including Drupal 1.0
⇁ Stay tuned for upcoming series of blog posts about Drupal’s
history. Next post will be about Evolution of Form API
⇁ Follow us @WEBSOLUTIONSHR
84. All images, product names, logos, and brands are property of their respective owners. All company/organisation, product and service names used in this presentation are
for education purposes only. Use of these images, names, logos, and brands does not imply endorsement. Copyrights are retained by their owners.
Creative Commons Licence
This work is licensed under the Creative Commons Attribution-NonCommercial-
ShareAlike 4.0 International License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-nc-sa/4.0/.
Copyrights and Trademarks
Hello everyone and welcome to my presentation about History of Drupal.
I am Tamer Zoubi coming from Croatia, Zagreb, in my profesional life I am CTO and co-founder at WEBSOLUTIONS HR, a largest Drupal shop in Croatia.
Also I am president of Drupal Croatia Association and in rest of the time Drupalist with dozens of contributed modules.
Motivation from today presentation comes from recent Drupal 15th birthday, when I asked myself how much I know about Drupal prior to when I first started working on it (Drupal 5) and I figured out a very little!
Therefore I made a research and this presentation so everybody could understand how Drupal evolved from message board platform (Drop 1.0) to a fully scaled enterprise level CMS (Drupal 8.0) and hopefuly have fun with this trip back in time!
Today we will talk about
Web before Drupal
How Drupal not only survived massive changes in web industry; but it has also helped drive them
Why and how was Drupal created?
Tour through Drupal 1.0 to 8.0
lookback of how key Drupal features we use today (eg: concept of modules, nodes and multilingual support) evolved over time
Important Drupal events
Drupal in future
In the early 90s first websites come online. Mostly they are built using HTML and images, CSS for styles (from 1996), JS for managing DOM elements(from 1995), Flash was popular in late 90s.
Many content management systems emerged Scoop, Vignette, PHP-Nuke, and were all popular at some point in the past but now they are obsolete and Drupal has outlived them all.
so how come Drupal is still alive and others aren’t?
Looking back 15 years I think there are 4 key concepts that made Drupal survive constant changes in web industry, but also it drive them.
Open source
The early decisions to open-source Drupal and use the GPL license set the cornerstone for community.
Modularity: Drupal introduced "hooks" and "modules" from its very first release, concepts that are commonplace in today's platforms.
Nodes: Another fortuitous early decision was to focus Drupal on the concept of "nodes" rather than "pages". It wasn't until 10 years later with the rise of mobile that we started to see the web revolve less and less around pages. A node-based approach makes it possible to reuse content in different ways for different devices. In a way, much of the industry is still catching up to that vision.
Constant evolution and reinvention over backward compatibility
Preserving backward compatibility often requires that you drag historical baggage along, this comes at a significant cost.
So it was decided that we can break people's code, but not people's data.
Now you know why its so hard to migrate from one major version to another.
And to see how that happened we need to get back to the beginning and see how Drupal was created?
Why and how was Drupal created?
As Dries said: “For me the history of Drupal is a chain of interesting surprises.”
First suprise was in 1998 when this guy, a Belgian student began constructing intranet message board site to connect with his university friends and discuss the tech news.
After university he keeped the discussions going, by moving the internal site to the Internet, therefore drop.org was borned 28.April.2000.
Story behind a name is a typo. When registering his new site’s domain, Dries meant to type an Dutch word dorpje (meaning village), but misspelled it as the English word drop. it actually sounded good...so he went with it.
Later, when naming the software, he back-translated drop into Dutch (druppel), which he then spelled phonetically (in English) as drupal.
And 2 days before new year 29.12.2000 ,in this legendary commit Dries baptised his software "Drupal" and he also added the GPL license.
And after 2 release candidates on 15.Jan Drupal 1.0 was born!
Fully-featured content management/discussion engine suitable for a news-driven community or portal site.
Concepts of stories & books for content
Written after Slash and Scoop -too popular message board systems at the time.
No menu router, everything is accessed through .php files
Eg: account.php, admin.php,etc…
Had funny name for guest users: "Anonymous Chicken"
One of the important features is it had database abstraction layer
mySQL support only but it should be easy to port to other databases
db_query(), db_fetch_object(), db_fetch_array() identical functions remained until Drupal 7
Database had only 15 tables, and It didn’t have install script, you had to manually import sql file. And when you did that you would get this...
...your very own first Drupal site, it was a very basic with few options.
Those options where:
Story submissions, with hardcoded categories
Diary, like today blog
Accounts - user login, registration
Comments
Search
RDF headlines
Calendar-which was instead of pager to reach archive stories.
Example of entering new diary in Drupal 1.0, very simple, one filter only.
Anyone could submit news to your site, then it would go to submission queue.
From beginning Drupal had a vision of modularity which is its 2nd key concept of the success.
When developing drupal it became clear to Dries that he wanted to have a modular design which will provide flexibility which allows people to customize the site to their needs and likings.
At its beggining modules where very primitive compared to today. They where just single PHP file located in /modules directory.
This is administration page for the modules. There where 18 core modules, and you couldn’t enable/disable them through UI, instead you had to copy or delete them from modules directory.
Admin was seperated from clientside interface in first versions of Drupal. It didn’t have theme and was just a bunch of links in header.
How modules worked; was the idea to be able to run random code at given places in the engine. This random code should then be able to do whatever needed to enhance the functionality. The places where code can be executed are called "hooks" and are defined by a fixed interface.
Here are list of Drupal 1.0 hooks, just 7 of them! Some are even used today like hook_block, hook_help, and hook_cron
From beginning Drupal tried to separate backend from frontend therefore having a theme system which is simple and flexible and where you could control colors, mark-up, layout and even the position of most blocks (or boxes)
Just like modules, you could also easily create your own theme by putting new .theme file in /themes directory.
.theme was PHP file implementing Theme() class with five functions
header(), story(), controls(), box(), footer()
Each user could change his own theme in site preferences.
Drupal core themes: jeroen, marvin, unconed
From 1st version drupal engine is open source, GPL licenced. It is possible for each and every user to become a contributor.
Using diff and patch for content control instead of directly commiting to CVS.
Because it provides better amount of control without touching the branch.
Patches where submitted via e-mail and in plain text directly to Dries.
Soon community engagement will grow and raise drupal to where it is now.
At the moment only site running on Drupal 1.0 was drop.org. Soon discussion about Drupal begin to take place here.
Screenshot of drop.or from http://web.archive.org/web/20001206212200/http://www.drop.org/
After just two months Drupal 2.0 was released on 15 March 2001.
added translation / localization / internationalization support - famous t() still used today.
However adding a new language requires you to edit configuration file and SQL database manually.
From other features Drupal added:
added fine-grained user permission (or group) system
user_access() used in Drupal 7
added "user ratings"
similar to SlashCode's karma or Scoop's mojo. This feature didn’t leave long
Added sections for stories; this will later evolve in taxonomy
There was also rewrote of comment/discussion feature
Except for the logo UI of Drupal 2.0 didn’t changed too much there are some changes in admin part.
Edit user account from admin. Many fields are still same in Drupal 7. We now see each user has User rating field.
At the time first Drupal sites start to appear. This is Globalgreens.org screenshot from 2001 http://web.archive.org/web/20011130092407/http://globalgreens.org/
At the beggining all sites where similar to each other, main area was teaser of content; there where no custom frontpage, menu links where same (it wasn’t possible to change them), they had sidebards with boxes left/right mainly calendar, sections, etc...
Screenshot from http://web.archive.org/
In the meantime discussions on drop.org began to trend toward the Drupal itself, and not about Internet technologies in general as it was imagined. Therefore Dries created “Drupal engine” section of the site.
After 6 months of development Drupal 3.0 was released 15 Sep 2001.
Everything is based on nodes.
In first two versions of Drupal had concepts of stories and books in which to store content.
This worked well when Drupal was mostly a system for community web sites like drop.org. As time passed and the system evolved more forms of content like stories, books, forums, diaries (what is now blogs) and more on the way.
During the development of Drupal 3 a lot of similarities between the content were established. They all had titles, authors, date created,etc...
This was all in common, but at that point stored in multiple locations and a lot of code was duplicated to make it work. At the same time Drupal was developing its modular system so it became natural to make a framework for content.
Therefore a node was born around which all types of content will be based. This is the 3rd key success concept of Drupal.
It wasn't until 10 years later with the rise of mobile that we started to see the web revolve less and less around pages.
When you install Drupal 3.0 this is what you got. New theme and more links than in previous version!
Admin side remained the same, only bunch of new links where added. This is administer permission page. Now you could add roles and assign permission to each role. This interface is same as in todays Drupal.
Lets see how a typical Drupal 3.0 site looked at the time.
Voidstar someones personal blog.
Similar to drop.org
Screenshot from http://web.archive.org/web/20020122183251/http://www.drupal.org/
Shortly after Drupal 3.0 was released, Dries decided to provide a place for all of the specifically Drupal-related activity that had been overwhelming the drop.org site, and so drupal.org was born December 2001.
Drupal continued to evolve quietly until early 2002, when Dries initiated a relationship with Jeremy Andrews, owner of kerneltrap.org a very popular news site reporting about Linux, would periodically go down under an onslaught of traffic.
Dries suggested Drupal as an alternative to PHP-Nuke.
Feb.2002 was converted to Drupal 3.0.2.
This relationship proved to be success. Jeremy became one of top Drupal contributor. For his site he wrote Throttle module which will later be included in core.
But more importantly he reported on his early conversion to work with Drupal on kerneltrap.org which opened the eyes of many other people in the technical world, gaining more and more popularity to Drupal.
In the June of the same year, after 9 months of development we got Drupal 4.0
“Drupal is now really a platform for any type of web application as users can easily extend it and modify it to better fit their needs.” Drupal PR
Close to 100 major sites running Drupal
With developers from all parts of Europe and the U.S., Drupal became an international open source project.
New theme, no more Drop in logo, new 3D logotype. More menu items. Footer!
As where introduction of nodes big change in Drupal 3.0, in 4.0 it was hierarchical tagging system of taxonomy..
Until now Drupal used metatags and attributes in meta.module to classify the content in a parent-child relationships, but those relationships aren't being used. There was a big discussion at https://www.drupal.org/node/55 which resulted in birth of taxonomy.module similar to the one used today.
It had
global taxonomy - a controlled vocabulary with a thesaurus
user bookmarks: give users the ability to 'bookmark' or organize posts
There where even ideas to implement automatic classification, could be idea for contrib module!
It was at this point that Drupal started to more look like enterprise CMS
This is how adding vocabulary looked like in Drupal 4.0. For each vocabulary you had to hierarchy type.
You had to specify node types where you will be able to use it. Then when creating nodes you would get select list to select Taxonomy.
This remained same until Drupal 7 replaced it with Term reference field.
Admin interface remained the same but adding new content is more advanced. We got content revisions, more filters, teaser, navigation link, properties like promoted to frontpage, published/unpublished similar still used today.
Modules can now be enabled/disabled throug UI, no more manually copy/delete from modules directory.
each module implemented using hook_system() later to become .info or .info.yml file
Lets see some of the Drupal 4.0 features that never lived long.
XML-RPC support
allows users to be identified with existing Drupal logins (even across sites) or Jabber or Yahoo logins.
-this vision will become more popular with social networks like Facebook and their single sign in couple of years later.
Blogger API support allowing Drupal to both be posted to and post with the Blogger API. Removed as of Drupal 7.
Automatic notification to www.weblogs.com of changes to a user's blog, mmm not really.
With version 4 it was decided to go with releases like 4.1, 4.2, etc…therefore on Feb 1st 2003 we got new version 4.1
Added profile.module:
Finally you could extend registration page with additional fields like address, phone number, etc…
However it was without UI, you had to hardcode list of fields in the module.
added pager support -> pager_display() and db_query_pager()
so you could easily create lists without having to implement your own pagination.
First theming functions -> theme_invoke() later to become theme()
now you could overwrite the output without hardcoding the module.
Some other features include: Comment moderation, improved forums, improved statistics tracking, various performance improvements
Drupal 4.1 also had some concepts that didn’t lived long
Rating module is dead - as Drupal becomes more CMS system than message-board this feature becomes obsolete.
Added Throttle module a congestion control throttling mechanism for automatically detecting a surge in incoming traffic.
you might choose to disable pictures or blocks or modules when the site is too busy (reducing bandwidth).
This was the contrib module that Jeremy wrote for kerneltrap.org
As of Drupal 7, the Throttle module will be removed from core.
here are other mechanisms available in D7 (e.g. aggressive anonymous page caching) that offer far better ways to prevent low-traffic websites being slash-dotted.
And today servers are much more powerful than 10 years ago
After 6 months of development 4.2 is released with focus on improving ease of use and administration. It included
Clean URLs
simple, easy to remember "clean URLs"
First ideas leading to menu router
no more individual php files like admin.php, node.php
now everything goes through index.php with q param. This param is then passed to hook_page() of the module, where first param is module name.
eg: node/view/{nid} would call node_page which would then handle other params
From other features
Support for extending Drupal with WYSIWYG editors
Support for Microsoft SQL server.
now Drupal supports 3 databases; and it ships with 3 different dumps.
people are starting to discuss the ways to make database import as part of automated installation process.
Node API which allows for better integration
hook_nodeapi()
Themes started to use "Xtemplate", a template driven theme engine instead of using custom made Theme() class.
And in that same year during the summer, Interest in Drupal got a significant boost when it helped build "DeanSpace" for Howard Dean, one of the 2004 U.S. presidential election candidates.
DeanSpace provided something like Drupal distribution, a preinstalled set of modules and content, which anyone could download and install his own Dean-site to promote the campaign.
as campaign grew more and more, Drupal saw 300% increased activity on drupal.org in terms of content, modules, etc..
DeanSpace website in 2004. As we see in footer it says Built on Drupal. This is where many people 1st time heard of it.
Howard Dean didn’t get elected, and on July 23 2004 it was officially announced that the DeanSpace was dead. However Dean-volunteer Drupal developers turned Drupal to into a variety of non profit applications like CivicSpace. Later CS developers worked closely with Drupal developers to push the idea of Drupal distribution support instead of having hacked versions of Drupal. Eventually distributions were officially added as of Drupal 5.0.
In the meantime Drupal was struggling between Drupal 4 versions. After only 3 months of development we got version 4.3
Focus has gone into improving user-friendliness, both to end-users and administrators
URL alias
good for SEO
path.module still used in D8
Database prefixing
so on shared hosting you could install multiple Drupal sites on 1 Database, tables would be seperated by prefix.
Mass node operations
publish/unpublish
delete
Breadcrumbs
After 5 months of development we got release 4.4.
added a file API:
now its possible to upload attachments
added fieldsets
improved themability of Drupal
made all theme functions start with 'theme_'
easy to overwrite themable output
As number of contributors are increasing we are getting more advanced modules, like ecommerce which is whole set of submodules to transform your Drupal into e-commerce site!
Then after almost 7 months in development on 18.October 2004 Drupal 4.5 was released.
Configurable menus
made it possible to add, delete, rename and move menu items.
hook_menu() probably one of most important hooks until D8 changed its architecture to use Symfony router.
Tab based user interface
introduced tabs and subtabs for local tasks.
interface as we know today
Multiple roles per user
Customizable user profiles
made it possible to add custom profile fields through UI
Finally since Drupal 2.0 we are seeing some major improvements on translation
managing translations is now completely done through the administration interface
no more manually editing tables in SQL to add new language
added support for importing/exporting gettext .po files
We see new tab-based interface.
Here is translation interface where you could add new languages, import, export po files and manage translations.
Admin UI started to look more similar to todays. Admin and users now use same interface.
On Feb 24, 2 months before Drupal 4.6 was released, Drupalistas gathered in Antwerp, Belgium which is now known as first Drupalcon.
It was first official Drupal developer sprint. There where 15 attendees and because internet connection was usually not good, people would download whole Drupal contrib repository before coming to the conference. Today with over 30,000 modules this is almost impossible.
Community grows and more Drupalcons and sprints are organized worldwide.
After half year in development 4.6 saw its release on 15.April 2005
PHP5 support
Multi-site support to run multiple Drupal sites from a single code base
Personal contact forms for registered users
Added an image API: enables better image handling
image resizing, crop, scale using GD2
predecessor to imagestyle module in D7
Made the ping module ping pingomatic.com which, in turn, will ping all the major ping services -> not long lived
At this time NASA used Drupal for one of its projects: appel.nasa.gov.
More than five years, 300+ contrib modules, and 55,000+ Drupal powered sites later, Drupal 4.7.0 is finally here after year of development and it rocks!
There have been over 300 contributors with over 1500 patches
Major usability improvements and new Drupal core functionality.
Later this year Views module is born
Drupal 4.7 got lots of JS & AJAX. Ajax was started by Google with their Gmail app and was still relatively new technology.
New Forms API: early version of today Form API, however rewriting Drupal's form handling from Drupal 4.6 broke hundreds of contributed modules. And it turned out that updating those modules was a much bigger effort than expected.
It frustrated many users on drupal.org
but eventually pay-off was huge and Drupal modules become more modular.
This is the 4th point of Drupal success: Constant evolution and reinvention over backward compatibility
Now modules can install database tables through its .install file
using hook_install() table would be created using db_query()
later to be replaced with Database schema API
prior to this if module needed to install database tables, it would come with sql dump and instructions how to manually import it!
There was big theme improvements in 4.7
Adrian Rossouw wrote PHPTemplate specifically for use with Drupal
PHPTemplate uses individual tpl.php files to theme Drupal's theme_something() functions.
and is an excellent choice for theming if you know a bit of PHP: with some basic PHP snippets, you can create advanced themes easily.
Xtemplate engine was removed
Existing core themes ported to PHPTemplate
PHPTemplate was used until Drupal 8 when it was replaced by Twig.
From other theme improvements we got multiple theme-specific Block Regions, until now there where only sidebar left/right.
More and more popular sites start to use Drupal. Mtv.co.uk, Playstation Asia, Hillary Clinton
screenshots from http://buytaert.net/tag/drupal-sites?page=44
After more than 8 months of development Drupal 5.0 is released on Drupal's 6th birthday.
Drupal 4.0 was released in 2002 and finally community feel confident to increase the major version number from 4 to 5.
Almost 500 contributors to the Drupal 5.0 release submitting over 1100 patches
Over 2500 contributed modules
Web-based installer:
no more manual import of sql dump
checks run-time requirements
Reorganized module directory structure
modules are not anymore a single PHP file, now they have their own directory structure (info, module, install, and other resources like css, js, etc…)
core and contrib modules are not mixed together in same directory anymore
Module dependencies
with introduction of .info file now each module can declare dependency. This is where Drupal becomes like building LEGO bricks,where each module contains small part of functionality and together they build a feature, instead of where each module defines its own feature incompatible with other modules (like plugins in WP)
Pluggable cache backends
can plugin alternative cache backends.
use file caching, memcached or other cache strategies instead of the default database caching.
jQuery
Drupal was early adopter. Today jQuery is used on more than 60% of top million websites.
Custom content types: core now includes part of the Content Construction Kit and allows you to set up arbitrary types out of the box. For more fields, install the full CCK package from the contributions repository.
Added support for Drupal distributions like CivicSpace
Distributions allow people to create ready-made downloadable packages with their own focus and vision.
From theme improvements we got Garland, it is still my favorite theme, even in Drupal 7!Color module was cool feature but I don’t think its being used much.
CSS compression, makes site faster.
Drupal 5.0 new Garland theme and reworked admin interface.
With this release we are seeing more and more Fortune 500 companies using Drupal. Warner, Yahoo, OpenOffice, Fox, etc...
After 13 months of development Drupal 6.0 was released.
Major improvements in all areas
Reached EOL recently (24 Feb 2016)
Still estimated of 120,000 websites are using Drupal 6
Over 7000 contributed modules and 600 custom themes
Friendlier installer
Drag-and-drop administration available for menu items, forums, taxonomy terms, uploaded files, input formats, profile fields, and more.
Drupal's menu system has been rewritten from scratch, making it much more efficient and powerful.
Improved security
update module to notify about new releases
Oct 2009 whitehouse.gov launched on Drupal 6, which was a huge milestone where people started to feel Drupal is a secure CMS, since WhiteHouse had strict security audits in chosing their CMS.
Screenshot from http://web.archive.org/web/20091031110021/http://www.whitehouse.gov/
10 years after 1st Drupal was released we got 7.0 version the best work yet. Drupal is now used for building any kind of website from blogs and microsites to enterprise level systems.
11000+ contrib modules, 600+ themes & 200+ distributions
We got architecture switch from node to entity, Everything is entity
Content types
Taxonomy
Users
Custom entity types
This allow us to have same interface where we can add and manage fields to everything not just nodes.
Now it’s all about web apps
Now its possible to build web apps like Gosend which is
a mini-ERP system for warehouse management, B2B portal for retailers, and a client portal with interactive apps like Shipping calculator.
It uses Drupal7 in its full power together with Drupal Commerce and over 300 contributed and 30 custom modules and all cached to work seamlessly for thousands of users.
This is our largest projects, and it took over 1500 man days in 21 sprints, but would take much more without Drupal 7!
On 19.November 2015 after almost 5 years of development Drupal 8 is released.
There where over 150 release parties all over the world. This is how we celebrated it in office.
Drupal 8 has over 200 new features and improvements, like Symfony in core and major architectural changes.
I won’t talk about it here, go and see one of other sessions to learn more new exciting features!
Starting with Drupal 8.0, Drupal core releases will move to a new release cycle schedule, and begin using the semantic versioning (semver) numbering system.
Scheduled minor releases (8.1, 8.2) will be released approximately every 6 months, and will incorporate new features.
20.4.2016 - Drupal 8.1
Drupal 9.0 will be 8.x but without backward compatibility
And for the end lets see how Drupal grow over time. At beggining there where 18 modules, this steadily growed. Drupal 5.0 had some cleanups. Drupal 8 has triple the number of modules from Drupal 1.0
How number of database tables evolved. Drupal 1 had only 15 tables, with 3.0 it grow to almost 40, 5.0 had some cleanups so it fallen down. Drupal 7.0 holds record with 74, then 8.0 has 66.
Lets see how long it took between major releases. Two months between 1.0 to 2.0 is record, this number grew. 4.x releases had shorter cycles with exception of 4.7 which took more than year.
And now when we add development times of Drupal 7 and 8 we see how all development times of prior versions look insiginificant.
Time in developing Drupal 7 and 8 together, took more than all previous 13 releases together! Hopefuly with this you will get the scope of how large is Drupal 8.0 and how much it has evolved over the time.
Thank you for listening, you can get my slides from http://websolutions.hr/drupal-history
There you will also find links to the GitHub where you can browse and download old releases including Drupal 1.0.
Stay tuned for upcoming series of blog posts about Drupal history. Next post will be about Evolution of Form API
Follow us on @WEBSOLUTIONSHR