What to do with Fortress
This has been a real puzzler for me. Nothing I blog about here is official, just getting ideas down and perhaps getting some responses…
I like Avalon Fortress. It was the first Avalon container I used and I still use it. It’s not perfect, but I like the simplicity of it. I suppose I should look at Nanocontainer more because they seem to be around the same level of complexity (I could be completely wrong on that because I’m not very familar with Nanocontainer yet). Anyway, Fortress rocks. But not much has happened with it lately. And it’s future in Avalon is a little questionable.
The story is a long one and I’m not going to try to be thorough here. Basically, for a number of reasons which I’ve come to believe are valid, we want to focus on a single platform in Avalon. A single spec and TCK. Now that could mean we could potentially end up with mutliple containers all supporting this same TCK, but we’re a long way off from that. The question is how to get from here to there while at the same time not killing our current user base. We have users (like myself) who use Avalon now in real production systems. So we cannot just drop everything since there’s still a need for Avalon now.
I think there are at least two problems here. First off, we have issues with confusing users. We have Merlin and Fortress (and ECM and Phoenix) and users understandably don’t know which one to use. So focusing on only a single container (or spec) would simplify everyone’s life. It would also eliminate duplicate efforts in documentation, tutorials, etc.
Secondly, if we just “freeze” Fortress development while we work on this new spec or Merlin or whatever, well, what are our users going to do? Eventually when we have a stable spec we can work on providing backwards compatibility or migration tools, but what about the meantime? Or what about users who don’t want to use the new spec? It’s quite likely that freezing Fortress will just result in forking Fortress which is really unnecessary.
Why unnecessary? Because rather than fork Fortress we can probably spin it off into its own (sub)project at Apache. Though if we just leave it in Avalon as a subproject we’re back to the “too many containers” issue. So if we spin it off, we need to find a home. I know there are developers (myself and hammett at least) who are willing to keep developing and supporting it. So we would just need to find the right home.
Is forking or spinning inevitable? Perhaps not, but I have a hard time seeing how we could easily keep it in Avalon and really do it justice. I’m trying to think of what’s best for Fortress and having it relegated to a remote section of the website doesn’t sound right. If it were spun off there would still be time and pressue to make sure it worked with other containers and not just Merlin. So in the end I’m not too concerned with interoperability.
Anyway, I’m not quite sure if this is the right solution. I’m just thinking out loud at this point. And the more I think about it, the more I think that the “competition” between Merlin and Fortress within Avalon just isn’t working to either container’s benefit. Or to the user or community benefit. Better to split them up than let one or the other or both languish.
Thoughts, revelations, muses, ideas are welcome! :)




§Commentary