[Register]
Powered by Elgg

News :: Blog :: Elgg 1.0 FAQ

February 11, 2008

Reposted from Ben Werdmuller's blog.

Since we announced the new Elgg project on Friday, we've had a couple of questions about how and why we're doing it. It seems sensible to try and answer them here. If you have any other questions, feel free to ask them in the comments, and I'll answer them in a later, follow-up post.

Elgg won't ship with any features. Why not?

Elgg 1.0 won't ship with any end-user features; you can think of it as a social application engine that can power all kinds of different sites and applications. In fact, there are three major ways you can use the new Elgg core:
  • As a web application in a box, as it always has been.
  • As a collection of back-end PHP libraries.
  • As a back-end API that you can use as the building blocks of any socially-aware networked application in any language.
With this in mind, who are we to tell you what features you need? The original Elgg codebase came with profiles, a blog, a file repository, communities and an RSS aggregator. On many of the communities we've built, forums or microblogging has been much more popular than blogging (it depends on the audience, but a lot of people don't enjoy writing mini-essays on a regular basis). What if you want to use those instead? Or you want to use it as the engine for a company intranet, or an online game, or a virtual learning environment?

By taking out the features and letting you pick and choose exactly what you want, Elgg becomes a much more powerful system. The plugin system, incoming and outgoing APIs, data import/export and documentation are the major features, as well as user handling and social networking logic. Everything else is optional. In fact, we intend to release the core to download before any extra features are even developed.

On the web as a whole, this reflects how applications have evolved. The era of the all-encompassing, unfocused social network has come and gone; Elgg allows you to build systems that are specific to a particular market or audience, with exactly the features you need.

Is this legacy code?

Elgg 1.0 will be completely rewritten from scratch, which means it will run much faster, with a unified internal structure that will simplify building plugins and enhancements.

If you're an Elgg coder, here's a little more detail:
  • We're removing the run() function entirely.
  • The plugin and event API structure will remain largely unchanged.
  • Templating is all new (and of course, you can swap it out if you want to use Smarty or similar), and content is now separated from design.
  • There's a new secure controller system, to prevent action at a distance.
  • The database functions will change.
Additionally, we are removing many of the included external libraries from Elgg, to further speed up and simplify the codebase.

Is Elgg built on any kind of framework?

No.

We've tested a bunch of different frameworks, from all-encompassing managers like the Ruby on Rails clone CakePHP to granular libraries like the Zend Framework. None are as fast or as flexible as no framework at all. In this interview with Alex Payne, a Twitter developer, he talks about the performance issues:
All the convenience methods and syntactical sugar that makes Rails such a pleasure for coders ends up being absolutely punishing, performance-wise. Once you hit a certain threshold of traffic, either you need to strip out all the costly neat stuff that Rails does for you (RJS, ActiveRecord, ActiveSupport, etc.) or move the slow parts of your application out of Rails, or both.
On the other hand, the initial systems we've built on the Elgg core - UnLtdWorld, for example - run blisteringly fast.

Of course, if you're desperate to run a framework, you can use Elgg as a set of libraries and reference them from there.

What will Elgg's system requirements be?

Elgg will run on the same platform it's always been designed for: a xAMP stack. In fact, although the exact details are still up in the air, it will require a much smaller memory footprint per process. We are, however, tweaking some of the technical specs, and this is what will absolutely be required:
  • Any major version of Apache with mod_rewrite
  • MySQL 5+
  • PHP 5+ (not CGI mode)
We are dropping Postgres support, and Elgg will continue to be incompatible with Microsoft IIS.

The core development team uses a mixture of Linux and Windows machines, so you can expect the system to run on those platforms flawlessly.

When can we expect it?

The initial core release will be in 6-8 weeks. There will be plenty of detail between now and then; keep checking back for more.

Keywords: elgg, elgg 1.0, system requirements

Posted by News


Comments

  1. A couple of comments:

    Requring php/mysql 5 and apache is a good decision.  PHP4 is pretty antiquated, and it's a good time to make the cut-off. 

    It is pretty neat that curverider is contributing a large chunk of code. There's been a lot of discussion about where elgg should go for removing run();, and its pretty cool that you guys have time to contribute.  

    I'm assuming that Elgg will be moving back to the company-centric OS model, since it seems (from the comments on the last post) that the core commit team didn't know about this decision until it was announced. It's kind of surprising to have no input for months, and then find a front-page announcement that current elgg is being depreciated.

    I'm still not sure why the decision was made to essentially change the nature of Elgg away from a pre-built social network and into a collection of tools / components for making social networks.  From the tech support questions we get, it seems that the average user is not very sophisticated as a programmer.  One of the main attractions of Elgg is that it's a simple way for a non-programmer to get a sns up.  How about compromising by offering 2 versions, a core that is stripped down, and a 'standard' with the basic profile/weblog/files mods.  It's already pretty difficult to get Elgg running on all of the non-standard webhosts out there -- doing so with a huge range of different mods, without a standard setup to validate against, seems challenging.

    user iconNathan Garrett on Monday, 11 February 2008, 16:27 UTC # |

  2. Hi Nathan:

    "How about compromising by offering 2 versions, a core that is stripped down, and a 'standard' with the basic profile/weblog/files mods." 

    The idea is to offer pre-configured versions for people to download. For example; a YouTube like site, or a full blown social network  and so on. Therefore, there will be no need for someone without the skills to worry about install the core and then searching for mods to use. 

    However, as those who are using Elgg with clients will appreciate, increased flexibility is a must to stay competitive, hence this direction.

    user iconDavid Tosh on Monday, 11 February 2008, 16:32 UTC # |

  3. Ahh, I understand better now what you're talking about.  Sounds a little challenging to do with the current codebase, but with a new (more modular / orthogonal) architecture I"m sure that it'll be pretty feasable.  I totally agree with the need to stay flexible; thanks for taking the time to clarify your intended design.        

    user iconNathan Garrett on Monday, 11 February 2008, 16:53 UTC # |

  4. I'm actually ok with a barebone structure. BUT, for inexperianced users or just regular non geeksters out there the mod repository and method of installation have to be to notch. Basically a plug and play solution.

    I think that would be awsome and would weed out people who just windowshop and leave only true users who would have to take time to think about what sort of service they are trying to build, what componentes they require for that service and they would take the time to assemble it (easiest part of the whole thing). 

    user iconJack on Monday, 11 February 2008, 16:59 UTC # |

  5. We don't have any reason to 'weed out' potential users.  I've helped a lot of people (both on forum and off) who aren't great at php, but ended up being able to put together a very nice site.  Plus, most people will decide whether or not Elgg is worthwhile w/i 10mins of downloading and playing with it.  If those 10min are frustrating, then many potential users will get turned off.  We should try to get people up & working as quickly as possible with the minimum level of effort.     

    user iconNathan Garrett on Monday, 11 February 2008, 18:10 UTC # |

  6. I guess the weeding thing is not necessary, you're right. But again the barebone approach is good. It's like getting an engine and then building the rest of the car around it with easily addable parts to make your own brand of vehicle.

    user iconJack on Monday, 11 February 2008, 18:50 UTC # |

  7. Sounds like a positive direction, but I am concerened about the reqirements of PHP5, with no CGI mode supported. AFAIK, PHP is implemented via CGI on many Shared Hosting systems, so not allowing CGI mode will decimate your userbase. A clear 'weeding out' if ever I saw it.

    I personally have 3 elgg networks running on a shared host, have no intention of changing, and don't appreciate being 'weeded out'!

    user iconnosignal on Monday, 11 February 2008, 22:51 UTC # |

  8. I find it is always a good idea to do a quick cost-benefit analysis before making big changes. The costs of migrating to 1.0 will be come clear, but I am not clear on the benefits, specifically to an existing 0.9 site that is happy with the blogging etc setup. Can someone fill me in on this? Maybe it will be faster and easier to add plugins than it is now.

    The only other benefits I can see are flexibility etc, which are more relevant to the creation of new sites. I guess that is why Elgg Classic will live on?

    user iconnosignal on Monday, 11 February 2008, 23:27 UTC # |

  9. >> It's like getting an engine and then building the rest of the car around it with easily addable parts to make your own brand of vehicle.

    Which is how Toyota got so popular :-)

    (says the Yaris owner) 

    user iconNathan Garrett on Tuesday, 12 February 2008, 00:48 UTC # |

  10. No PostgreSQL support in Elgg version 1? Cry

    user iconBrandon on Tuesday, 12 February 2008, 05:06 UTC # |

  11. For, the options of Elgg 1.0 is exactly what we expected... So, everything is really good news! 

    We appreciate a lot that Elgg become a platform for social network applications and this is exactly what we do need for our projects.

    Ou customers expect good performances and a clean slate to begin and version 1.0 will be in a very good position to offer just that. 

    user iconAlain Lefebvre on Tuesday, 12 February 2008, 14:31 UTC # |

  12. To follow on from some comments some more, I'll revise the above and state (tentatively) that Elgg 1.0 should run in CGI mode.

    user iconBen Werdmuller on Tuesday, 12 February 2008, 16:49 UTC # |

  13. Hello

    I hope it will run with php in cgi, as otherwise I would fall into the 'weeded out' category before I even started, unless I upgraded to a dedicated server or changed hosts - or, of course, did not use Elgg.

    I will keep looking here to see if "tentatively" evolves into definitely.

    I have very recently installed Elgg 9.0 although not in a live situation and wonder whether I could be offered some advice. There is no immediate time pressure to get things going and an initial core release date of 6-8 weeks is not a problem, but I assume that will not be a stable release and wonder whether to push ahead on Elgg 9.0 on the assumption that migrating/upgrading will be achievable without too many white knuckles in a few months.

    Many thanks and best wishes.

    user iconatomboy on Tuesday, 12 February 2008, 19:47 UTC # |

  14. I have to second Nathan's comment - why are you dropping Postgres support?

    Does MySQL have features that make you monumentally more productive, over using standard SQL?

    Do you not have the resources to test two database platforms?

    Have you made changes in 1.0 that require much more effort to create using standard SQL?

    I can see keeping an app mysql-only if you've deeply embedded mysql-only syntax and it's a monumental amount of work to refactor.  But taking a codebase that, for the most part, works with both databases and closing it off to only work with one database is a step backwards.

    I guess I'll have to perpetually run 0.9.1 because I'm not installing MySQL just to run elgg.  All of my other backend stuff runs on PG. 

    user iconJosh on Friday, 22 February 2008, 22:30 UTC # |

  15. Okay, sorry about that - I posted before I read that it'll be a completely new codebase.  But still, I do not see any advantages in making elgg mysql-specific.  If you use standard SQL, you not only get Postgres but also Oracle and SQL-Server (as their syntax is much more like PG than it is MySQL).  It's not a performance issue because the days are gone where PG is slower than MySQL; in fact, if you want a stable database, MySQL is slower than PG as you need InnoDB tables for MySQL stability... and under heavy load, PG far outperforms MySQL.  I can provide data if anyone's interested.

    user iconJosh on Friday, 22 February 2008, 22:40 UTC # |

  16. Yeah, I too can't see the point in dropping postgres support.

    This time postgres is not a requirement to me as I'm running my own box, however I would prefer to use postgres for my additional development for a more reliable database. And it means a more standard sql compatible code, which can be easily adapted to other systems also, including oracle.

    user iconDarkWingDuck on Saturday, 21 February 2009, 11:16 UTC # |

You must be logged in to post a comment.