Elgg at a crossroads

I'm excited about the upcoming Hackathon (Sept 23, 24), but this temporary burst can't make up for the fact that core dev contributions are down and have been for a long time.

This isn't anyone's fault. To an extent, this is normal cyclic behavior as people get busy with other things, but I rather think it's that Elgg is no longer exciting or fun enough to maintain developer interest.

Sure, we've made huge improvements in DX and performance, and 2.x provides a lot of value, but the product remains highly tethered to trends, technologies, and architectural decisions made 8 years ago. We have some loud voices in our community telling us that Elgg should change even more slowly (or not at all), and I've personally over-romanticized the idea of extreme backwards compatibility, but if we continue this path I think developer interest will keep dropping off.

Personally I really enjoy working with Elgg's contributors and don't want to stop, but for my career's sake I can't focus on reworking 2008-era APIs much longer. I considered quitting in 2014 and didn't out of inertia and because family health problems made it comforting work to bury myself in.

What can we do?

We could do nothing. This is just my perspective and I could be wrong or it could really not matter. There's nothing wrong with stable software that nudges along slowly. My prediction is that high maintenance chores will start to go by the wayside. Elgg 3.0.x will get dozens of releases and plugins will thrive as they did on 1.8. It's not a bad outcome for lots of people, but I'd be bummed.

In the short term, Ismayil and I should stop stalling new development in order to wait for a 3 member consensus. If a PR on 2.x/master gets a thumbs up and no one expresses concern or a desire to review for weeks, it goes in. Those branches give plenty of opportunity to revert or fix concerns that come up later. When reviewing involvement goes up, we can scale the need for consensus accordingly.

Businesses relying on Elgg could offer developer time. That won't help if devs really don't want to work on it though. And IMO business owners are under no moral obligation to contribute, but it would of course help.

We could seek out and destroy any low-return hassles that make working on Elgg less fun:

  • Commit messages are a constant headache, but may be worth it for our awesome changelog.
  • LTS releases: if so many sites want to run 1.12, one of their developers should put in the work of backporting fixes to it; merging this stuff into 3 other branches is a headache. Maybe the foundation can pay someone to make these releases occasionally.
  • Community spam: Maybe you can't register until you to contribute some sort of content; then we can just delete several thousand spam profiles.
  • RST is still !@#$. I'm continuously looking up how to do basic things and even the docs about RST are bad. Markdown is inferior tech with miles ahead UX. Really I want to do like Drupal and build more docs from source code.
  • ??

We should identify roadblocks that make more radical changes seem impossible. It was really disheartening to turn away a good 3rd party effort at moving to UTF8MB4 columns. Schema changes in general are almost unimaginable due to the expectation that Elgg run its own upgrades.

Personally I would love to--at least temporarily--set aside the requirements of upgrade paths and BC and start over.

  • How can Elgg be many magnitudes faster, not a few ms.?
  • How can it have the real-time functionality users now expect?
  • Are we sacrificing anything by giving plugins too much power?
  • What Elgg-specific dev concepts are really cool or not worth the overhead for new devs to learn?

In general I want Elgg to take a great leap forward to become something I'd be proud to put my name on, not filled with things I have to apologize about.

  • If someone wants to design/donate a new theme, put your graphic proposal on Github, let's take a vote and I will turn it into a theme. End of discussion.

  • - you want many wonderful real-time and other features but you complain about fast realease cycle
    - you want to have a plugin-based framework but you want to stuff the core of it with everything

    I like the fact that there are more releases than ever before. It is good. Just hear me out:

    I know there's a lot of work and effort with each release. Steve is right, I am only seeing the surface, but I am fully aware of the internal changes, which as of right now, elgg has become faster. It is not much of a problem, it is just... don't take it the wrong way, but from the outside we see constant releases but we don't see "surface features" such as real-time River (I know it has been accomplished with several plugins). So, it is more of a perception problem, and that perception can lead to the really bad "Why do I need to upgrade? It is not worth it" or the "You are releasing too fast, I don't have time for that"

    We have bootstrapped themes, and several high quality themes and some themes that completely reworked the site menu. Yet, it all stays within the plugins. I'm not saying it is bad. I'm not saying "Let's pour every shiny thing I can think of". Just start adding small things, one thing at a time.

    If we could come to an agreement and create a roadmap, what could possibly be the first goal for example?

    Real Time River Stream? When is gonna be added? Whenever is ready. I do not want things now. Coding is hard and maintaining elgg is an exhausting task and I'm glad you put time and effort for that. That's just one example, not suggesting to do that now.

     

  • Personally, it's pure the way Elgg is written. It doesn't have any pattern whatsoever, it's built from scratch without sociability and flexibility in mind. Although, this is currently chancing, it'll only take so long before it reaches that point where developers will start contributing/using it again, without a reason. Currently, most of the people I see around here are from the old ages, where Elgg was still "the shit", which it isn't, anymore.

    I would prefer to hop on a completely different path: get a framework (Laraval, CakePHP 3, Zend, Symfony) and start from scratch (although, with the current features in mind). This will have many benefits (a lot, and a lot, of plugins, if you choose the right framework, e.g. Laraval or CakePHP 3), event handling, job queues (Gearman? RabbitMQ?), notifications built-in, all kinds of mailing advantages and last but not least: a platform developers will built on. With ease. Oh, and the database structure normalized against the frameworks standards. ACL and denormalized metadata (and no metadata access levels).

    I've been really struggling to get started with Elgg, and still am in some points, like the way all files are organized or how certain things are implemented. I'm trying to contribute as much as I can, but most of the PR's/issues are still left open, denied or merged at some point, which doesn't really motivate to contribute.

    And the template, yeah. Same as above, adapt the modern tools, and developers will be more happy to contribute. The same for tests, way to important to skip those.

     

  • i think the issue goes further than just designing a new theme - although that would be good. there are probably already good enough themes in the community (although i don't know of any since i don't use them or review them often). the other issue is related to the upkeep of basic features. e.g. when i upgraded from 1.8/1.9 through to 2.1, there were many features that got lost due to plugins not being upgraded along with the core. it took me probably a month of solid coding to get them up to date (i use a lot of plugins), but since some of these plugins are for the kinds of features that are considered basic, core features for social software in 2016 (and since maybe 2013) i think we have some kind of agreement here already that the code would be ideally held within the elgg core. moving, say, galliComments (for ajaxed commenting) and hypeLists (for ajaxed lists) into core would tick several of the boxes this thread has raised:

    • elgg not being up to date with competing products
    • plugins for basic features not being known or used by all who would need them and so interest in elgg dropping off.
    • plugins not being upgraded, holding back core upgrades on live sites and thus limiting plugin development from those sources too.

    hypeInteractions may also be suitable, i haven't used it though, so i'm not sure. having these in core would ensure that the base level of functionality in elgg is raised to a new standard/level and i think that is the aim here. if this were combined with a new theme to package with elgg and maybe to use in the elgg community here, all the better.  n.b. i just went to scan through the themes but there are no screenshots available in the list view which makes navigating themes much more challenging.

  • I work on a hobby project, for 5 years now, originated in 1.8, running on 2.2 now. I still haven't launched. Because I have this urge to do as much as I can, alone and I want very specific things, but no budget.
    I couldn't code one line when I started but I am making my own plugins for my project myself now.This was a very bumpy road, since there were so few people to help out, and Elgg had so few of my requests in core. So I had to rely on github, the help I got here, learning PHP myself and I read cash's 1.8 book.

    I gave up multiple times, and took a restart multiple times. But although I don't post very often, I watch the discussions here every day.

    What I do want to say is that since we have proper docs, starting with 1.9 I think, I really started to understand things better, and I can say I'm able to do most things , though slowly, on my own now.

    If I may, I say a few things on what was written here and try to be constructive.

    First:
    My own contribution

    I am really, really willing to do a lot of work for Elgg, wherever I can. I'm thankful of what I got from this community
    The problem is that I am just beginning to feel comfortable in coding, for the first time I'm feeling that I can build a plugin from scratch and do most things myself. I use github a lot to see how core handles things.
    But I'm very afraid of doing things 'not the best, or most efficient way'. It's a burden for me to do something because I feel that the dev reviewing my code will probably do it different and has to rewrite it. If you're up with that. I'll start contributing.

    Community site

    I do think this is a problem for arriving newcomers.
    Although Aalborg was a big leap, it still looks a bit 'unfinished'. And I must say, adding the elgg.org topbar on top of the community topbar didn't do it good.
    You'd be surpised what some subtle gradations of one colour + some boxshadow, and a modern font could do in a here.
    I'l post a screenshot of the wall of my project. immature and unfinished, but this is basically Aalborg, but with a lot of small colour changes. But it's clean and looks more modern to me then the community.
    http://www.daltonstudio.be/garbage/screenshot.png

    If my help on this is wanted. I'd be glad to help, really.

    Elgg.org

    This is really not good, it looks like it's from the 90's. I can imagine people clicking away instantly when they see this and don't even bother to look how great the engine actually is.

    I'm am certainly willing to work on this. I think we should really integrate this into the community site, instead of the half-half solution we have now

    Instant notifications

    Although I agree it's a must-have, this is a difficult one to achieve,  don't we need a push server? Will this work for the numerous shared hosting people we have?
    I would rather get rid of the site-notifications and use something like Juho's Notifier instead.

    Leave the instant/push to plugin authors, like Juho is doing now with his notifier plugin.
    This could be wonderfull if plugin authors could easily hook into the notifications and deliver them the way they want (like it is now, basically) There are multiple push services who have a very good API to build on.

    Ajax

    • This can help to make it a smoother experience. Everything is in place to do this.
      The team already did a great job here. But there are just small things that could easily be ajaxified
      I'm trying to make every action in my project as ajaxified as I can with a normal action fallback.
    • Together with a new modern SVG spinner (instead of the basic gif elgg comes with) could give the user experience a big boost. People just like spinners, it feels everything happens on the background and it's working, not for pageload of course, but for saving actions.
    • Inplace editing, it's wonderful to a UX and not really difficult to implement + it would break anything.

    Plugins

    • A admin installer would be great. I know Pawel and Ismayil worked on this.
      We should think this over, how and what.  I love the way Wordpress handles this.

    Commercial plugins

    If the reason not to do this, is the hosting. We should host this shop somewhere different.
    I am definitely willing to pay for a quality plugin if this means that it will be updated.
    If Elgg could get a commission for every sale the hosting could be payed with this.
    I agree this could attract developers to make plugins that could matter and where Elgg could benefit from.

    Bundled plugins

    • The bundled plugins we have are a bit strange, like said before. I've never gotten why there is a wall and a wire and why they are not just one thing.
    • Bookmarks: I do not think many users use this, people want to bookmark in their browser and have it in sync with all their devices.
      If it's about sharing. We need a sharing mechanism, like facebook has. Just share an entity's link on the wall. That's it, could be a small lightbox where they could add a message and press submit ->action will post it on activity.
    • Pages: meh, I would know what to say about it other then that you could blog as well.

    Plugins that should be bundled
    or actually, be in core if you ask me

    • Hypewall or simmilar: This is just what users expect of a social network, just share your thoughts from the timeline, blame facebook.
    • A decent friendspicker.
    • Infinite listing (like hypelists provides)
    • Lazy loaded images with placeholders (good for UX too).

    Theming

    I'm pro moving to bootstrap. However, will this implicate that every elgg site will have to completely redesign their themes? If that's the case I don't know if I'm still pro.
    Breaking things is ok, but this is breaking a lot, if not everything. I don't know how you guys see this.

    Admin

    We got all 2.0 with Aalborg, but we forgot the admin.
    It makes you think you're working with 90's software, although it isn't.

    I can work on that if you'd like.

    I'll stop, don't think anyone is still reading anyway.
    Thanks for all so far Elggers.

  • just a note: i use the bookmarks plugin because it allows lists of bookmarks to be saved per group (so per topic) and for that to be a reference for others in the community. i appreciate that sites that are heavy on the social and light on the 'information resource' aspects will not care about the bookmark plugin, but for information resource sites it is useful.

  • Internet in its true open and interconnected-network-of-multitude-of-sites form exist no more. To majority of the teens (as well as adults) net is FB and Apps. Just to think of it! Apps and apps - which are far from the spirit of net. Many open source php projects like Geeklog, e107 are dying a slow death. No longer there are any teens coming up with similar scripts like Drupal or WP in the last 5 or 10 years, simply because being online now means you are on FB, Apps, or Amazon. Its Apple, Google, FB all the way.

    If you still want to look at the "small" number of people who download social net scripts like Elgg and have their own site, then think of the fact: they have better options like EasySocial, Peepso simply because of the fact their status box is alive and brings to center all activities OUT_OF_THE_BOX.

    Elgg is still wonderful but with teens and folks on FB, many companies having only FB and whatsapp address as the only web address on billboards, and with no sopa-like movement against the fact that internet is being or has been fragmented into much-worse-than-Microsoft monopolies like FB and Apps, not just Elgg but opensource php scripts will suffer death or stagnation. So called Hobby users were actually MAJOR chunk of users of these scripts but if php 5.3x is not supported for eternity the net we knew will just slowly  disappear.

    PS and off-topic: can someone make the double top-bar atop elgg org into single, its an irritation to the eye (3 top bars if you are logged in!!), not uniform across all pages, and many links are repitative like Blog and Elgg blog, Community and activity. Also, I do not find why we cannot have less pagination for comments, almost all such sites have at least 50 comments per page.

  • I would like to see documentation to be readable from within your own Elgg installation

    http://learn.elgg.org/en/2.0/contribute/docs.html#testing-docs-locally

    I'm closing this topic with some takeaways:

    • Performance isn't a huge concern. Mostly agree at this point, it's up to plugins to be written well and sites that get popular need to hire devs to optimize in ways core shouldn't.
    • Everyone wants a new theme. This is an area where it's impossible to please anyone and each site wants their specific look. Using Bootstrap as a base seems conservative, but fine. I think responsive UX is much more important though.
    • Plugins need regular UX improvement iterations, each of which impose BC breaks, so plugins need to leave core. (Can manifest require version(s) of particular plugins? That seems necessary.. Would be nice to let composer handle all that)
    • We need a team to meet and set big goals, especially for work that will be controversial or opinionated.
    • hypeLists and hypeInteractions are great in part because Ismayil didn't need core permission to iterate improvements, but having their features in core would lead to greater use across plugins I would think; seems worth it.
    • If you want Elgg to improve, follow the GitHub repo, learn how to work on Elgg and with git, etc.
    • Real-time server to client communication is coming to core, even on shared hosting.

This discussion is closed.

This discussion is closed and is not accepting new comments.

Feedback and Planning

Feedback and Planning

Discussions about the past, present, and future of Elgg and this community site.