Tiki has the all-in-one model, while many other FLOSS Web Applications have thousands and thousands of plugins/extensions. Most of the time, these plugins/extensions are duplicating others. Tiki is perhaps the FLOSS Web Application with the least feature duplication.

This is FLOSS, and such people should collaborate on the source code instead of

  • Re-inventing the wheel
  • Creating competing extensions

Yet, we end up with so much duplication, it's mind boggling.

For example, the most popular FLOSS Web application has

Let's speculate on the motivations of the contributors.

I couldn't get commit access

  • I sent a patch, nobody answered, so I had to fork the project.

The code was a mess

  • Was faster for me to start from scratch than figure out what was there.

The code had too much overhead

  • I just needed a simple thing.

I didn't know there was code for that

I don't want to mess up someone else's code

I don't want other people messing up my work

I want people to know I am this module owner

  • Perhaps I'll get some contracts.

The project leader(s) don't want me to code in core

  • Plugins are made for contributions like mine.

I don't want to add another module as a dependency

  • I know that other module does some of the stuff I need, but it's not exactly what I need and overly complex. I don't want people to install that other module just to make mine work. So I'll just add the bit of code I need.

This may not be maintained long term

  • This is for a school project. After this semester, I will move on to something else.

This works for me, am happy to share, but I can't commit to maintaining long term

  • So I'll share what works for me, but I am not prepared to take the lead of such a module (taking on feature requests, etc.)
  • I am quite happy to apply patches for bug fixes though.

It's important that most/all the code comes from me

  • This is for school/internship thing and they need to evaluate my code performance.

My needs are very specific

My code is not clean enough

  • Sharing back to the main code base involves making the code generic enough. I just don't have the time to do that at the moment.

This is a learning project

  • I want to write this module as a way to learn how to write modules, so I don't want it to be officially in core.

I think this library or service is a better alternative

  • [missing]

This is the community edition extension

  • There is also a pro version (not FLOSS) available from my site.

I offer support on this extension so I need to keep control

  • I solve a specific problem with this extension. I offer support for it (paid or otherwise) and I can't take the chance that someone else will introduce regressions or take the extension in a direction which will make it difficult for me to support my users.