Open source development is largely more broken than ever

The least fun part of working on Ghost is dealing with Github, which is really sad.

Everyone has their pet issue, whether design or accessibility or security or internationalisation or performance or SEO or or or… the list goes on. Everyone thinks theirs is most important and that we should work on right now and they can’t believe that we would ignore it. It’s always absolutely outrageous.

How open source works is: If you want something, you can build it.

That’s the freedom which open source gives you. We build a base product which you can adapt, extend or integrate however you want. You can’t do that with closed source platforms. Open source code = the freedom for you to do things with it. But that’s not how many people understand it.

Developers regularly show up on Github, rage at us for something like not supporting Postgres – and then we say “ok so are you going to write and maintain Postgres support for Ghost?” and they say “of course not, I don’t have time for that!” – and then occasionally they’ll go on Twitter and tell all their followers to give us hell. As if organising a mob and shouting louder is the best way to get a bunch of people writing free code to do what you want.

Unfortunately I think Github itself has a lot to do with this. The product has become too transactional – more support tool than collaboration. And Github themselves show remarkable disinterest in the open source community as a whole – they give us beta access to test new features every so often. That’s about it. There’s no wider involvement at all.

Our core team tends to do the “real work” in private issues nowadays. The signal to noise ratio is just too overwhelming.

The Rise Of Open-Source Software

Open-source software powers nearly all the world’s major companies. This software is freely available, and is developed collaboratively, maintained by a broad network that includes everyone from unpaid volunteers to employees at competing tech companies. Here’s how giving away software for free has proven to be a viable business model.

MariaDB: story of a MySQL fork

MariaDB was born as a fork of MySQL that means they share the same code up to a certain point, that point was MySQL v5.1 (29 Sep 2009). The community decided to fork MySQL due to concernsabout the Oracle acquisition and what MySQL would become.

Oracle was mainly a software company and most of its core business was at the time, well, databasesOracle Database is the Oracle’s main product and it is often regarded as the standard database for the enterprise. With the acquisition of MySQL, the community feared that Oracle would limit the growth of what used to be a complete open source DBMS. The day Oracle announced the acquisition of Sun, Ulf Michael Widenius, the main author of MySQL, announced the fork of MySQL and the birth of MariaDB. The cofounder of MySQL took a handful of MySQl developers with him.

Oracle has since created derived products: MySQL Community Editions (the “original”, open source) and MySQL Standard, Enterprise editions that include closed source software and Oracle support.

A drop-in replacement

The main selling point of the newly born DBMS (Data Base Management System) was to keep compatibility with MySQL and to be a drop-in replacement for it.

Drop-in replacement means that a software using either won’t notice if you switch between the two and will continue working without any problem. This was done in order to provide users with an easy way to switch to the new software without disrupting their activities.

Maintaining MariaDB as a drop-in replacement was a right call to allow users to switch in the short period, but it would’ve been a double-edged sword in the long run: MariaDB would’ve had to implement every single change implemented by Oracle, and that would’ve defeated the original reason behind the fork. That’s why not all versions of MariaDB are compatible with MySQL (more in a while).

MariaDB, MySQL: storage engines

First and foremost MariaDB released Aria, a storage engine to replace the older, but still widely used, MyISAM. For a short while MariaDB used XtraDB (a storage engine from Percona) as default, to later return to InnoDB. It may not seem like a great feat now, but at the time MyISAM, the default MySQL storage engine, would employ table-wide locks that resulted in poor performance and query stacking.

In time MariaDB’s InnoDB, the current default engine, diverged substantially from MySQL’s InnoDB, leading to incompatibilities, up to the point that no version of MariaDB can be used as drop-in replacement for MySQL 8.

At the moment MariaDB supports the following engines:

  • InnoDB (since version MariaDB 10.3 it has diverged substantially from MySQL’s implementation)
  • XtraDB
  • Aria
  • MyISAM
  • ColumnStore
  • TokuDB
  • MyRocks
  • follow this link for a full list.

While MySQL supports:

  • InnoDB
  • MyISAM
  • Memory
  • CSV
  • Archive
  • Blackhole
  • NDB
  • Merge
  • Federated
  • Example

Notice that Memory, CSV, Archive, Blackhole, Merge, Federated, Example are also available in MariaDB.

Central PA Open Source Conference

The Central Pennsylvania Open Source Conference (CPOSC) is a one-day technical conference for open source users and developers. Presentations and sessions cover all aspects of open source, with talks ranging from novice to expert skill levels and featuring case studies, best practices, code-alongs and more. Join us for a day of meeting with and learning from your technology peers.