Last night, I spent four hours chatting with Conor MacAoidh.
We’re both the authors of CMSes, and both need file managers.
I’m the original creator of KFM, but recently, I’ve been getting annoyed at it. The project has grown too large to be easily managed, and it’s slow to start up because of the amount of database configuration involved.
We discussed this, and came up with a plan, which coincides with what I wanted to do for KFM2, but is probably much better.
We are going to reboot the whole thing – write a complete new file manager from scratch. It will only use code from the original KFM2 if the code is demonstrably better than any alternative we come up with.
The project will be properly documented, will have 100% test coverage, and will be completely free.
It will come in a number of separate parts, but only one, the core, will be absolutely needed.
The core of the engine is the bit which handles the actual file management. It will be designed to load in only two or three files for the most part, and as fast as possible.
Communication with the core will be done by either including the core as part of your own CMS, or by interacting with it via RPC.
The RPC will be very important – you send a command such as
/rpc.php?action=move&from=/my-files/test1.jpg&to=/images/me.jpg, and results will be returned as JSON.
We decided on the name SaorFM. While this may be slightly confusing for non-Irish-speakers (“Saor”, pronounced half-way between “sair” and “seer”, means “Free”), we feel this is not very important. After all, Ubuntu is a household name, and that’s Bantu.
The main site will be SaorFM.org, the blog will be here, and downloads, issue tracker and SVN can be found here.
We’re still deciding on how to go about things, so there are no downloads yet. The decision to do this was made literally last night.
Having a co-developer on board from the absolute start will encourage me to get my arse in gear on this – if Conor does something cool, I have to beat that. And vice-versa, hopefully!
I’m starting the project off at the moment by working on a description of what it’s all about, and then will start writing some starter tests. This will use “test-driven development”, so every single line of code in this project will be repeatedly tested throughout the development.
We’re planning a load of features, such as desktop-/system- integration for Linux, Mac and Windows, and having totally external UI systems. We even considered going mad and creating a bump-top-like UI for it.
It’s taken me almost a year since planning KFM2 and getting to this.
Part of the reason for the delay is that this is so far removed from the current KFM, that I really didn’t know how to bring KFM1 up to the specification I wanted to reach.
Starting from absolute scratch with a brand new name is the right thing to do, I think.