6 Answers
6

I'm currently working on an Elgg-based site and I absolutely hate it. The project was near completion when I stepped in, but the people who created were no longer available, so I took it over as a freelancer.

As a personal impression, you are much better off writing the app from scratch in a framework. I don't know if the people before me butchered it, but the code looks awful, the entity-based relationship model is wierd to say the least and debugging is horrendous. Also, from my point of view, it doesn't scale very well. If you were to have a consistent user base, I'd be really really worried.

It keeps two global objects ($varsand$CONFIG) that have more than 5000(!) members loaded in memory on each page. This is a crap indicator.

I have been working on a Elgg site for the past month or so, its code is horrible, however it's not the worst I've seen :D. it's not built for programmers like Drupal is :D. But it's not too bad. Once I got a handle on the metadata functions and read most of the code I was able to navigate it well and create custom modules and such.

What would help immensely would be some real documentation and explanation of the Elgg system. I don't think that's going to happen though :).

Out of the box there are a few problems, there are some bugs that haven't been fixed for a while and I've had to go in and fix them myself. Overall, you can make it pretty and it has some cool functions, but i wouldn't dive in until i had read the main core code to get a handle on what's happening on the backend.

Oh and massive use of storing values in globals. and a crap ton of DB calls (same with Drupal though).

i wonder if the use of storing everything, and i mean everything for your site in the globals will really hinder the server if you have a massive user load.

If you want to build a product based on a social networking platform/framework then Elgg is definately a good way to go. The code is not that bad if you actually look before leaping and doing what elgg expects. You go against its processes and structures and it will leave you beaten by the side of the road.

Developing modules/plugins or editing CSS is easy and Elgg does give you great flexability to basically build your own product ontop of it. Dolphin, as comparrison, does not allow you to do anything outside of what it expects you to do.

If you however just need a framework (not primarily for social networking etc) with some user based functionality then i suggest Cake, or if your project is HUGE then maybe Symfony or Zend. They all have plugins you can download and use/hack which would be easirer to adjust for personalised needs.

To show what you can do with elgg here is a site Mobilitate we built with Elgg 1.7. This is a very complicated website and was built ontop of Elgg.
We are starting a new project with Elgg 1.8. The new version is a major improvement they have made a lot of elements easier, incorporated better JS and CSS implementation/structure and have better commented their own code.

It would be helpful for you to state why you think the database schema is horrific. It's structure is very helpful for making Elgg usable and extendable for people without much DBA experience. For example, if you want to track a member's age, you can just programmaticly add an age attribute to an instance of a user, and Elgg takes care of creating a new meta-field for you. I'm guessing your fear is that it won't scale, but in my, and other site's experience, it scales quite well. And by using their schema, you also get their built in data access/security for free.
–
Mike HedmanFeb 12 '12 at 0:01

If I can't look at a database in a tool like Mysql Workbench and immediately understand the structure of the data used by the application, that is a red flag. Having to write queries with zillions of JOINs to compose a single usable row of data is just brutally bad. This makes things hard for hobbyists and experienced DBAs like myself. Having administered a major Elgg installation, I find it impossible to approve of the structure of the application and its databases. You don't have to implement a generic object store in MySQL to gain the flexibility the authors needed to write Elgg.
–
Gabriel BaumanFeb 13 '12 at 2:06

I've been working with Elgg for over a year. It is easier to customize than it would be to build something from scratch using a framework like CakePHP. I tried CakePHP and found it even more complicated than Elgg.

It is difficult to query the database due to the entity-based relationship model. You should use the build-in methods for accessing data. However, I have written many queries to double check on what is actually stored in the database.

You cannot change layouts using CSS alone. You have to deal with the various Elgg views. But CakePHP uses the same Model/View/Controller MVC concept so that would be just as difficult.