Phew, lots of stuff here. So, let's try and make sense of it all. I'll break it down into the key points that seem to be coming up.
Perfect vs GoodI'm only too aware that perfect can be the enemy of good. My concerns over releasing/not releasing were never about perfect vs good, but good vs unfinished. Let's make this absolutely clear: look back through the logs and tell me how often I tweaked something I'd made. Tell me how often I went and changed things that I wasn't entirely happy with.
Most of my commits were removing things I didn't like or adding new things. Very few were just changing things I wasn't entirely happy with. That's why I made half the number of commits Nao did: I don't tend to commit and iterate, I iterate then commit when I'm happy with it.
I think it's fair to say that I'm not laden with the perfect vs good problem.
The problem I do have is that while my code isn't sacred to me, people just aren't listening to the problem I DO have. If my code is bad enough that it needs more than tiny modifications, it's obviously sub par, so I obviously did a bad job. It's nothing to do with leaving the nuts and bolts to someone else, it's the fact that I constantly have the feeling of turning in B-grade work, even when it's A-grade work, just because it doesn't fit with someone else's sense of coding aesthetics.
Innovators vs IteratorsI wouldn't consider either of us 'better than the other' in terms of innovation.
We've both done things that we have the right to be proud of, and Nao has outlined some of the things he's proud of within Wedge. I'm very proud of the plugin system, and the warning system. I'm proud of the fact that I was able to do some things that I'd never have been able to do in the SMF ecosystem even if I'd been given the keys to the kingdom, like going UTF-8 only.
But to me, none of that is actually innovation. It's all iteration on what was there already.
The plugin system is simply a case of addressing the numerous issues I saw in the current SMF package ecosystem (ensuring hooks have more power, checking hook existence, using it as feature detection, etc.)
The warning system, again, it's a case of addressing issues I saw in the SMF one; the notion of being able to revoke a warning (rather than warning with a negative %), the notion of being able to tie punishments to specific warnings, to be able to have much more gradual punishments, and to tie that lot together to be able to grant punishments that fit the crime better (Bad avatar? Remove the avatar.)
I cannot name a single thing I added to Wedge that I can justifiably call innovative. In some ways that made it harder because I was already working on the premise that I wasn't doing what I wanted, but what needed to be done.
On the other hand, some of the stuff Nao added does seem innovative to me, at least in the forum world: footnotes, infinite scroll (it may not be in itself unique but Wedge is the only forum software that has it as a core feature), thoughts etc. so already there's a feeling of inadequacy on my part. And yes, that does suck.
I find it interesting that we seem to feel the same way about each other for this project, that neither of us seems to feel like an innovator and that feels the other is. Your perspective on this will likely be different to mine.
On not being bold with communicationThis is always going to be a tough one. Despite my general exterior and persona I give out of being strong voiced, I'm really quite introverted. Anyone who's seen the Crossing Overland videos will know how little I tend to say in person.
Then there's the general attitude of the English that's thoroughly part of me, i.e. the stiff upper lip, the keep calm and carry on attitude.
And to be fair, a lot of the issues that annoyed me didn't annoy me enough individually to do something about them at the time, so I let them go.
Stuff like the autoloader really annoyed me because for the sake of a little extra typing (or, even coming into the 20th Century and using auto complete in various tools), we could have simplified the structure of a bunch of things and made performance gains from not having enormous files whose content was not used perhaps as often as one might expect.
Especially, for example, considering my thoughts around going down the CMS route. In a pure CMS, things like the stats updating that SMF does just aren't as necessary (because they're never called so often), censoring is not needed so often, and things like that. These are things loaded every page that just do not need to be in those situations. So you'd hive them off because that makes sense to do.
Anyway, I'm digressing. My psychological nature is predisposed to avoiding conflict if possible, and every time something came up that I didn't like, I was forced to choose whether it annoyed me enough that I wanted to say something or just say nothing and accept it. The problem was that in the cases where I did speak up, I don't feel I was listened to - even when I went into long and thorough arguments about why I didn't like something.
Short of getting into shouting matches over everything I just accepted that I was wrong most of the time and left it at that, until I just couldn't do that any more.
To the people who said I should have been more forthright in my views, could you honestly go back over my posts and say I wasn't forthright in my views? Could you honestly say that I didn't try hard to be heard?
I understand Nao's reluctance to read every post. But I did it. I read every post on the forum, even the ones I never replied to, and tried to take that on board. It wasn't always successful but I tried it. On the other hand, I suspect that if he had tried to read more posts - not even all of them, but just a general selection of them, he would have a different view of both me and of the userbase.
One of the things I have been unhappy about for some time - and this affects Wedge rather than my interpersonal relationship with Nao - is that Wedge has two different directions in the code. It has a bunch of stuff that users will use either directly or indirectly, and it has a bunch of cool stuff. The problem with the cool stuff is that it directly affects what goes on in the ecosystem.
I sincerely dread the day when Wedge is let loose and designers take one look at it and try to figure out how to make it all work. Templates being piecemeal unlike SMF's monoliths, they'll have to deal with that. The CSS preparser... they'll have to deal with that too but I like to believe they will ultimately find it useful to have that rather than not. But trying to make interesting layouts that aren't just colour changes, while trying to make wireless, infinite scroll, userbox moving all still work... that's a challenge I simply don't envy them having.
What I think that means is that most themes will be simple colour variations.
Superior vs equal vs inferiorI have in the past talked about my office life. Over the 5 years I was in that career path, I had a number of team leaders through various reorganisations, 6 if my recollection is correct, and that's not including the more senior managers that were above my team leaders with whom I tried to ensure I had a good working relationship as well.
Of those team leaders, only two of them were somewhat less than successful. The first of those two was because my team leader and I had different views on the way things should be done. As will probably be clear from conversations here, I have a very strong sense of ethics and about things being done properly, but that I'm willing to compromise over correctness when it is appropriate. My team leader on the other hand, was of the view that compromise was the way forward wherever possible, that closing the deal was most important.
The best example I have is a mortgage deal we were working on.
I should clarify the situation; our department dealt with new mortgages being issued, I worked within the latter part of the process, dealing with solicitors/conveyancers, in making sure all the paperwork was provided and correct and that the company's legal coverage on the mortgaged property would be all solid.
You can imagine that this is the ideal sort of situation for me, really, and in many ways it ways. There were rules, there were places the rules could be bent. And for someone of my tendencies - strong on knowledge retention and doing it properly - this worked out.
Then we had this deal come in that the new sales rep was so keen to push because it was a demonstration of our flexibility. It all centred around two houses that had been knocked through into one but were legally still two properties on the title deeds and how this would get resolved.
I took the case to the lead and told him why it wasn't going to work out because of the way it was currently registered and that it couldn't physically be fixed. He took the view that it wasn't our problem provided that the lawyers dealing with it signed a declaration that they would get it fixed - apparently that was enough for our protection, since lawyers acting for the lender are required by law to protect the lender's interest.
Unfortunately that's what happened. The leader spoke to the lawyer, got a letter from them, and whatnot. And I said I wouldn't sign it off. There was no way I was putting my name on that case and interestingly enough no-one else would either. In the end it had to be signed off by the director of operations (who is a people manager, essentially, and had no real idea of what it all meant)
And sure enough, this came up during my end of year review as not being flexible and obstructive etc. Fortunately for me, I'd kept note of the case number and knew he would pull it out at the meeting, so about a week before then, I sent an email to the customer services team, who dealt with cases after they'd been funded, to find out what happened to it. Imagine my surprise when I discovered the case had been handed to the litigation team because the security was impaired. I even got them to email me the notes about it and brought it to the meeting. As you can imagine this did not go down well.
The problem was ultimately a clash of ideologies and to a lesser degree a lack of respect. I took his position under consideration but my job description carried the line that my responsibility was to protect the interest of the company to the best of my ability - and that's exactly what I did. The fact I was overruled was not my problem as I'd done everything in my power to protect them.
The second manager was a real piece of work.
By this time I was an auditor with the company. You can imagine how well that worked out for my general anal-retentive attitude.
And at this point my partner worked at the company in the same team, but as a 'probationary' or 'trainee' or something. Anyway, she worked in the same team doing the same job, but for several thousand pounds less a year.
The team leader wasn't impressed that Liz would defer to me more than the others, but the reason for this was never entirely understood: because I was *competent*.
We were given the cases to review prior to funding - so the job I used to do (see the first spoiler) was about getting the paperwork in and reviewing it and passing it to the funding team, then the funding team would review it and press the magic buttons.
And having been a mortgage processor, I knew exactly the sorts of crap that used to go up to the funding team and what the funding team used to kick back to me, haha.
Anyway, there was a list of things that had to be checked that the team had to do for each case. 118 items if memory serves, all yes/no/not applicable questions. So, just check that the system has the right details in it, answer the questions.
Problem 1: what if you notice something wrong that's not in the questions? Answer: You're not supposed to be checking anything other than the list because the list is sacred.
Problem 2: what if you're more conscientious and just check it anyway? Answer: You get blasted for spending more than 10 minutes on it. Yes, we were timed, and managed on that crap.
I frequently used to turn in what clocked up as '4 and a half hours work' because I did it thoroughly, and not just what the team leader's best mates did, which was the minimum possible to get the job done, and that's how the 10 minutes time was arrived at.
It should be of no surprise that come the quarterly review from the lending quality team that cases I approved for funding had the fewest errors in percentage terms. Quarter after quarter this happened. Funny that.
But I messed up the figures for the team leader by looking like I wasn't working hard enough, though the more senior managers all understood what was going on. Trouble is, she was of the understanding that I was trying to undermine her at every opportunity; I wasn't. I just didn't agree with her managing-by-the-numbers and not really caring about little things like quality.
It should be of no surprise that a few months after I was made redundant from the company, that they collapsed entirely, when you have people like that at the management helm.
The problem as you can probably imagine is not that I can't work with managers. The problem is that I can't work with managers who can't understand where I'm coming from.
As I have said on multiple occasions - though I think this is another thing no-one listened to - I have no problem with being disagreed with or even overruled, provided that I have the feeling that what I had to say was taken into account. I don't just say things for the sake of saying them, I say them because I believe they're important to say.
The two managers I reference above rarely listened to what I had to say unless it agreed with what they already thought in the first place. This isn't a respectful setup and I have no time for it. Funny how all the other team leaders understood my points when they were made - even when they didn't agree with me and even when they overruled me, they at least listened and took it on board.
Control versus contributionThere is an interesting problem related to this, but it relates also to the whole lead vs follow debate. I can lead when it's appropriate, I can follow when it's appropriate. Whichever would best get the job done, I suppose.
The problem is when I'm told that I'm a leader but have to act like a follower, like we've had here. In fact, I find this quote from Nao most telling of all:
But if he ever were to rejoin the project, despite all of the qualities I just listed, he would have to settle on being an advisor and a co-lead developer, but not a decision maker (which wouldn't even be a problem more than a couple of times a year.)
This would merely continue how it's actually been for most of the last year to 18 months, if not longer. It would simply formalise it and make it clear that this is how things would be.
Ironically, had Nao outlined to me on day one that this is how he wanted to work, I could probably have made that work. It was always stated that we were equals and yet we never really acted as equals.
Two people may be a crowd when it comes to a decision, but saying that one has to take the lead is not right. One took the lead in the absence of decision and just carried on with what he wanted to do despite the opposition.
I find it interesting that it's cited as being in the region 'a couple of times a year'. There are at least a couple of examples from just the last month or two where this was an issue.
On where we came from, and maybe where we're goingI do like being told how what I think is bullshit especially from people who weren't there, who weren't part of the discussions that were held at the time.
One of the really big problems is that I don't think we ever really expressed much of a unified vision. It was all about preserving the SMF legacy and iterating on it to make it better. Right now Wedge is where SMF should be, what SMF should have become in the intervening time. SMF and Wedge have had 3 years to work on things, and in that three years we've made great strides in improving what SMF was. Right now, Wedge kicks SMF 2.1 to the kerb in a lot of places.
Nao always made it clear that he wanted to push towards what Noisen is, essentially a form of localised social network. I was largely fine with that to start with because a forum is, essentially, a specific subset of the social network thing anyway, but increasingly I've been feeling that Wedge won't realise its true potential if it continues to think of itself as a forum software first and foremost.
SMF's problem is that it's 'just a forum', Wedge's is that it's 'primarily a forum', and that pure forums are finding it very hard to compete these days because most people use Facebook and Google+ for what used to be pure forums. That in order for the software to grow and thrive, the forum must essentially be deprecated from the main feature to a core feature of something bigger. And that did not sit well, as per the various posts on the subject, especially when I outlined the notion of Wedge being able to run with the forum disabled.
The problem is that we're at a crossroads. I don't see how we can meaningfully take the software in both directions, and as has become clear I'm #2 on the totem pole, so unless Nao wants to back off from going towards the Noisen type route and dive in head first with the CMS approach, there's no way the unified vision can work.
I would almost go as far as to say that we're not on common ground so much any more. We're no longer refugees from a battleground, nor strangers in a strange land. The only common ground really is the idea of a forum and I want to make that second fiddle to something else anyway.
On forking and name changesJust in case it wasn't entirely clear what was going on, Nao suggested that we might get to a point where we would fork, I'd take 'Wedge' and he'd take the other, under the new banner but that we'd still share code back and forth. The trouble is, as I said at the time, that just wouldn't work - there would be changes very quickly that would make that sort of thing just not work out very well. I've been there, I've seen it happen - heck, I doubt there's anything much that SMF 2.1, ElkArte and Wedge can all share in these days even though they are all descendants of the same 2.0 codebase.
On hashing this out in public or privateIt just sort of happened that it came out in public. Though in all honesty I'm not sure doing it privately would have made much of a difference to the end result, though the road would have been different.
Nao and I would have talked, I'd probably have been suckered in to staying longer, getting more resentful and eventually just disappearing, only no-one but Nao would have known what was going on. I don't like cloak and dagger politics and I think the comment about this being a community is right.
In a normal community if one of the leaders leaves abruptly without any communication, it's a major failure especially if it's not even clear why they left. If one of the leaders leaves abruptly with some communication, maybe something can be salvaged. Mind you, I'm still concerned at the number of people participating in this thread who appear to be misinterpreting what I'm saying as the reasons I'm fed up.
Cause and effectSome people have opined that my general state of depression may be caused by this situation, or it caused this situation. I'm not sure which it is, but most likely I was already depressed under the surface and this brought it to a head.
The bottom lineI see people that are essentially asking me to step up and just accept it. I doubt any of those people really understand what my problem is, because I feel that if they did, they would actually understand why that isn't going to happen.
What I do note is that there has been a lot more honesty since I stepped down than there was before I did so. Both Nao and I have, in this thread and elswhere, made it clear that we have the ways we work, and that we're not entirely happy about changing how we work to suit others because it works for us.
The problem I have is that I can't keep adapting my work style to the way this project is run. I can't deal with submitting work only to have it dissected. That has implications beyond me and Wedge and I'll have to deal with those. To the comments about me just learning to deal with it, I'm sorry but those are very naive and perhaps ill-informed. This is not just something you 'deal with'.
I consider what I do to be art, with all the pretentiousness that goes with it. I'm not paid to make Wedge, so I don't owe anything to anyone. More importantly, that means as far as I'm concerned no-one has the right to demand I make anything in certain ways.
Would Van Gogh have painted the Sunflowers paintings if he knew Gauguin would come along and touch up the paintings afterwards? Would he, perhaps, have painted them differently? Would he, instead, perhaps have considered trying to paint and repaint them if he knew they would be scrutinised and tried to paint them perfectly before handing them over?
This is what we're talking about. The people that talk about perfection in code don't understand that this is an artform. It is not something that can be turned on and off, I am not a trained monkey at a keyboard. It happens when it happens because it happens, just like any other art. Novels are literary art, paintings are visual art, code is its own art. I may not necessarily be good at it in some respects but that doesn't change that I consider it art and I don't like it being tampered with. There are times I've specifically pointed out flaws where I didn't know how to do it any better and times I've specifically outlined that things should be looked at. I doubt many people here understood what it takes to put that into writing.
See, what people don't always remember is that the commit log is to all practical purposes, permanent. I'm going on record, in public, and for all purposes that matter, permanently saying "This isn't very good but it's the best I can do, I'm sorry". I'm flat out admitting I'm putting in sub-par code because I'm not good enough to do it any better.
The thing is I've been doing bits of this stuff for years - I was writing JavaScript in 2000. I'm still not any better at it now, and here we are 13 years on. Make of that what you will.
Anyway, now we're getting to the heart of the matter. In the preceding posts it's very clear that I have never entirely been a project leader for this project, that I've been a 'co leader' but without the power to back it up, and note that it isn't me saying that. I don't feel I've been lied to, but I feel like what I've felt has been backed up by the posts above, like I had suspicions waiting to be confirmed.
Yes, I still have a place in my heart for forums. It's why I haven't just disappeared entirely. The problem is that it's now perfectly clear that a reunion of the two of us for Wedge just won't be possible. As much fun as we had, the reality is that I cannot be part of this situation any more. You can't give me the title of leader and not the power that goes with it, and there's no chance in hell that I'd be a "contributor" knowing what will happen - that will just be a continuation of what brought us to this point, and I can't be a part of that.
I must admit I didn't appreciate the comment about how you feel you deserve to be told about what I'm going on to do. By the same logic, if I'd gone to contribute to *any* other software that's even remotely a competitor to Wedge, that logic suggests I should tell you. If I'd gone to write XenForo plugins, or IPB plugins or even to phpBB, I get the feeling that you'd expect me to tell you about it. Here's the thing, that's what equals might do, but I'm not your equal and I've never been your equal. Just as when I left one job for another, I didn't bother to tell my employer where I went, because it was none of their business any longer. I left, and in any normal respect that would have left me free to work on whatever I wanted to work on. The fact I mentioned it at all is a courtesy, certainly not an expectation. The fact I'm working on it in private is because after everything that's happened, I CAN'T TRUST ANYONE AS A CONTRIBUTOR.
I actually can't trust anyone to work with any more at the code level. The only people I trust are those who provide me assets (e.g. textures, models) and I make them work in my code, because they don't write any code and I don't have to worry about it overlapping. And yes, I'm well aware that this is my problem to 'deal' with.
The saddest part is that even when I disentangle myself, baring myself in a way I just do NOT do normally, being more honest with myself than I have been for a very long time, too many people still don't get it.