Just popping in to clarify FOF vs F0F vs FOF 3.
FOF was the original library (Framework on Framework) I wrote back in 2011. It was based on original work I had done in 2009 to 2011 for my software, improved by a healthy dose of inspiration from Ruby on Rails and other RAD frameworks of that time. It was used on all of our software. Eventually, it was included in Joomla! itself in 2012. The version of FOF included in Joomla! was version 2, a slightly improved version I had written in a mad rush to get it included in Joomla... which got delayed by another 6 months. That mad rush resulted in technical debt which I had to pay later.
Joomla! would not allow me to update FOF in maintenance Joomla! releases (e.g. 3.3.1 going to 3.3.2). This was the direct result of a single person vetoing a sane development practice (backwards compatible bug fixes in FOF in maintenance Joomla releases) because he wanted to peddle his own code in the Joomla! Framework and use it to replace FOF, even though his code was NOT a Rapid Application Development framework i.e. not a replacement. As a result I was not able to address bugs sooner than 6-12 months. I was also forbidden from installing an updated version of FOF on people's sites because that was considered "hacking the core" and came with a penalty of being removed from the Joomla! Extensions Directory for 6 months to forever. A buggy library which cannot be updated made it useless for anyone making components, including me. So I forked my own code and renamed it to F0F (f-zero-f) to avoid naming clashes and avoid the "we will kick you out" condition.
In 2015 I rewrote FOF because of the technical debt in FOF 2 written in 2012. The only way to get rid of the technical debt was to write code that was for the most part incompatible with the existing FOF framework. This meant that I had a new version, version 3, which could be used in parallel with FOF 2. Replacing FOF 2 / F-zero-F with FOF 3 would be wrong as it'd break existing software. FOF 3 is, therefore, installed in the folder fof30. It is now used for all of our extensions.
One thing I had gotten wrong in FOF 2 / F-zero-F was the lack of dependency management. There was no record of which extensions use FOF2/F0F. As a result we never had a way to know when F0F is no longer necessary and could, therefore, not uninstall it automatically. This was fixed in FOF 3. We record in the database which extensions use which version of FOF 3 so we know when we can uninstall FOF itself. Therefore you should never remove FOF 3 manually. You cannot remove FOF 2 either because it's used by Joomla (and being a protected extension it cannot be removed anyway). You only need to remove F-zero-F if nothing on your site uses it.
If all of our extensions installed on your site are versions published after January 2016 you should be able to safely remove F0F (F zero F). It's obsolete and no longer used.
DO NOT remote FOF30, it's used by all of our software. Removing it will break our software.
DO NOT remove FOF (F oh F), it's used by Joomla! itself and some third party extensions. Removing it will definitely break Joomla.
I hope that explains both why you see "multiple" FOF versions. For all your other questions I will let Davide and Dale reply. I am currently on vacation, the DSL line got screwed up and I can only pop into support once every couple of days using a tethered 3G connection.
Nicholas K. Dionysopoulos
Lead Developer and Director
🇬🇷Greek: native 🇬🇧English: excellent 🇫🇷French: basic • 🕐 My time zone is Europe / Athens
Please keep in mind my timezone and cultural differences when reading my replies. Thank you!