This is where all of the announcements about Wedge will be posted... But mostly, our updates about the development process.
A year ago, on August 25, 2010, the first commit to the Wedge SVN server was made. I was hoping to get to rev 1000 before the first anniversary, but I tend to commit small bug fixes in a large batch so we 'only' reached the 965 commit milestone.
Well, a year later, what can be said of the project...? It already had a name back then, it still has the same. It had goals and a vision, it still does. Some adjustments were made to our schedule (personally, I decided to give up on a lot of the Noisen.com improvements I was planning to integrate, and will rewrite them later), and other things were pushed into the codebase as we went -- the product of being mainly fueled by passion, instead of money. I know, I know, it's a classic, but it's just the plain truth -- you can't work full time on an unpaid project for a year without some kind of solid passion and commitment. Back when we started the project, I wasn't 100% sure Pete would remain interested in the project in the long run. I was totally wrong, so I'd like to take the opportunity to give a big thumb up to him for being one of the driving forces (the other being me, but I may not say :P) behind the Wedge project, a shining beacon of courage and determination, a herdsman for the nerds, a vanquisher of spaghetti code and... What, I fully expect him to give me the same treatment in return! :niark:
(Oh, and in other news, apparently I'm back in the 'Friends' group at SM.org. Can anyone tell me when this kind of thing happens? :P)
What better way to celebrate the first anniversary than to release a public alpha version! Yes!
Okay, I'm playing with your nerves... There is nothing (yet), but it won't be too long now. As the commit process is now a public one, you've all seen we're still as busy as ever to fix bugs and add new features. I can't honestly see myself release Wedge without having first integrated Aeva into the avatar and attachment system, and I can't work on that before I can fully focus on it. And this month has been doing a very good work at distracting me: Nightwish's fork (interesting ideas, it's definitely going to be the worthiest competitor to Wedge if Nightwish can keep up for another year :D), playing a little gem of a game played Xenoblade (okay, so I passed on other RPGs and JRPGs these last few months because they're time eaters, but the guy made one of my all-time top 3 games so I have to play his titles, even if unrelated to Xenogears), and more generally a personal burnout and declining health (I'm not one to complain, though. These things happen in cycles.)
In short: I don't remember my original schedule, but right now my personal target is for a demo in early September, and an alpha in late September or October. I'm still kind of wary about releasing my code to a general audience. It's our baby you know... We want Harvard for it. Hopefully it'll spawn into Facebook. Or something else.
Tonight's a special night to me. I installed another copy of Wedge on the server, and I finally ran TE's import tool on Wedge.org. I just... wanted to see if it would work. And it does!
It's not perfect, has bugs here and there, doesn't import attachments and avatars yet, but you have absolutely no idea how wonderful it was for me to find myself face to face with a fully converted SMF forum running Wedge. The dream has finally come true!
And it looks gorgeous. There's no better way to test a design than to insert real data into it. I'm really happy with it now. I wasn't sure -- now I am. Party on! (Oh, and we're trying new Wedge logos, if you didn't notice. It's not final yet, but you can follow the process in the Logo Madness topic. Everything's public. Because that's how we do things at Wedge.)
Would you rather have free speech or a free beer?
Posted by Nao, on August 1st, 2011, 10:12 AM (2,438 views)
I don't know about you but I don't like beer, so I'd choose a free coke instead. Can't I?
Oh yeah, what's this post about already? I read something over here. At one point, one of the members says that he's not interested in Wedge because it's not free. When asked why he thought that, he mentioned the sidebar slogan:
Performance! Features! Reasonably priced coolness! And a hard-boiled egg!
I felt a bit stupid when reading that. I know that my sense of humor is mostly harmless™, but this is a case where it might be. See, when it comes to jokes I'm a big fan of British nonsense (something I share with Pete), and I tend to quote them a lot. And it just happened that I recently read a book by Sir Terry Pratchett, Night Watch, in which people were looking for a motto for their newly founded republic, and they chose that: "Truth! Justice! Reasonably priced love! And a hard-boiled egg!"
I simply re-used that in my slogan collection. The script will randomly pick one of ten silly quotes, and this was one of them. I found that 'reasonably priced' was a funny metaphor for Wedge -- you get it for free, so it's a reasonable deal. Of course, it only works if you already know that Wedge is free. Uh.
So, I just replaced that line with another British nonsense example free to any price indications. Anyway, the good news is: at least someone reads these slogans. <sigh of relief>
If my little story needs a conclusion, which is probably the case at this point, it is this: don't forget that Wedge is free, and will remain so. It's not that we don't like, or need, money. We just never built Wedge for money. We built Wedge to be what SMF should have been at this point. We didn't want money in the first place, and we still don't. We're doing it for ourselves. We pay the price for everyone else, so that you can spend the money on Pratchett books instead. Just enjoy the thing, you silly lawn ornaments™!
Banning, and what I want to do with it
While I'm still trying to figure out how to incorporate all the feedback from the package manager changes(!), I thought I'd talk about what I want to do with the ban system. Sorry in advance, this is going to be a bit of a novel: it's a big change, it's probably at least as controversial, and something about it is necessary anyway, so let's dive in.
The ban system as implemented is functional, as in it works but it's not overly elegant, it doesn't support IPv6 and I take the view that it doesn't solve the problem at hand, not one bit.
Let me deal with the IPv6 problem first, before I tackle the other stuff. The current system works on IPv4 addresses, which are x.y.z.a addresses, and whatever you put a ban (on IP address) on, it resolves to a range internally for each of the blocks. So a ban on 1.2.*.* becomes a ban internally on 1.2.0-255.0-255. Structurally, that makes sense, but IPv6 is much larger - instead of 4 blocks in the range of 0-255, you have 16 to contend with, though they're not written in decimal, nor written in the same way, but written as aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111 and similar.
There is one thing to consider, that addresses are divided in half in IPv6, the first half is for a 'network' and the second half for machines in that network, and it sounds that on the surface you could get away with just barring based on the first half only. Whether that will be successful or practical remains to be seen, but something tells me it's not that practical. It's not even that practical from a technical standpoint because if you're keeping that approach, you're not just comparing 4 values against ranges, but doing it for at least 8 - and you need to handle the high/low values, which is what SMF's and Wedge's system does right now.
I didn't implement IPv6 in Wedge in a way that would make this particular easy to implement for, because I took the view that it was the wrong way to be going about it, that any minor change extending the current direction of implementation to fit either 2x or 4x larger scope was an unnecessary performance headache, as well as a logistical one.
So, I sat back and thought about what I'd really like to be able to use in the ban system, and that lead me to my normal approach of trying to figure out what it is the ban system should be needed for, and what it should be able to do.
What is the ban system for? Primarily it's for getting rid of miscreants, and troublemakers. It isn't really a spam-solving solution, and it's not really for keeping users out that you're not interested in - it's for keeping users out that you don't want, which isn't the same thing.
Now before you start, I'm well aware that users do currently use it for keeping users out that they're not interested in, but on a variety of levels, I'm just not sure how viable that is, but we'll get on that in a minute.
So, dealing with troublemakers. The ban system lets you ban a user by name, email, IP or hostname. So you ban them, they come back under a new name through a proxy. Doesn't solve the problem much. For dealing with trolls and so on, there are better ways of dealing with them instead of slamming the door in their face - the tools used by Annoy User for example, to lock off certain features, plus the warning system that allows you to control whether they can post or whether their posts are moderated.
Of course, none of those things will solve the proxy problem, but the ban system wouldn't anyway. No, the solution is to gently turn up the heat so they don't realise that they're being pushed out, or at least discouraged from posting for whatever reason, and without it being obvious - so that they go and do something somewhere else.
If anything, the face-slam of the door is probably worse, not better, at making them go away - because what happens is that they don't have closure, they're not leaving of (kind of!) their own will, so you get all kinds of hassle as a result.
As for banning on email address, what is the hope of that? If you have miscreants who have their own domain, they can create as many emails as they like, so you just restrict the entire domain - it won't prevent them re-registering, though. So you get the extra account, you ban the entire domain, they try to register a third time and they still register - but this time they're banned and will take the hint. The problem is you've still got more accounts than you wanted in the first place.
Instead, then, how about limiting the email addresses up front? Put in the ability to restrict emails based on domain, either whitelisting or blacklisting certain domains as necessary. I know a number of users that restrict signups from mail.ru because of spam - if the domain is blacklisted, they can't even register (which is better than banning it).
There is, interestingly, a performance consideration here - and one for the better. If you ban based on email, the ban has to be evaluated more frequently than just locking it down at registration/change email time. In fact, that's going to be true of all bans - the more bans you have, the more you have to evaluate, and it has even a per-page consequence. By removing that query, you remove the performance hit, especially on long-term sites that have many bans, most of which aren't needed any longer.
With all that, IP bans are basically useless, except to the most technically inept of users - and they certainly don't keep out spammers, there are better ways of doing that which don't require tracking IP addresses, which are only going to be more and more useless for tracking in future as IPv6 goes mainstream.
The only salvage then is hostname, but even that... well, it's typically disabled in a lot of cases because of sluggish performance (usually because hosted machines are behind a laggy rDNS) meaning it's not a lot of use to you, and even if it wasn't, most of the time bans are not carried out on hostnames but on IP addresses, when really, hostnames would be more useful.
The solution then, might be to be able to blacklist certain hostnames if lookups are enabled and functioning, but to use it at a deeper level than keeping the conventional bans on it (there are performance considerations too), and then you could use it only if you needed it. What I might do is integrate that into our Bad Behaviour implementation, making it look like (to the user, anyway) as if their computer has a problem rather than anything else.
That wraps it up for the problems with the ban system and how they can be mitigated, but let's go further: dealing with miscreants needn't stop at fixing the current setup.
So, user-level problems, we deal with at the user level, not some global administrative level. I'm thinking we can expand the warning system as a result. Right now users can be watched, moderated or muted. It's trivial to expand that to full-on banned, and it would be useful to expand how the tail-off works. Right now you can set how quickly the warning level drops for all users (in points per day), but making that per user would make more sense, so that users who just need a time-out can be given one, and it can be done per user, rather than something across the board.
I'm also thinking we could influence other permissions, such as losing avatar and signature if the warning is over a certain level.
Just for fun, there's another subsystem I've been thinking about, that will debut in some form. Specifically, it will allow you to add rules to certain parts of the system, e.g. things to do when a post is made - so you can check the contents of a post, and if it contains words you don't like, it gets moderated and the user can be warned automatically.
Too long, didn't read (tl:dr;) summary:
* Removing the ban system as it is
* Making post moderation more prominent, probably even enabled by default (but with performance tweaks to make it run more efficiently)
* Email blacklist/whitelist on registration/change email, instead of the old method of banning
* Add hostnames to the possible rules that will be checked in our Bad Behaviour setup, so that instead of getting a 'banned warning', it looks like problems with their computer
* Replacing user-level bans with the warning system and making it more granular rather than as coarse as it is right now
* Adding functionality from my old Annoy User mod to encourage bad users to go away
* Expanding the warning system to more gradually remove powers, than just moderated and muted
I don't think I missed anything but if I did, I'm sure you're going to let me know about it!
And please, before telling me you need the ban system as it is, really stop and think about what you use in it and why you use it, then before complaining at me for breaking what you think is an essential feature, think about if there's actually a better way of doing it, like the above. Banning is not a particularly wonderful technique as explained - it doesn't solve any problem, it solves some of the symptoms. I'm trying to solve the deeper problems. Just because something is what it is, doesn't mean you have to accept it.
Oh, one more thing I forgot.
I want to introduce a 'Banned' membergroup that users go into. Not only does it have a visual consideration but a permissions one: it would let you reduce access to boards. I don't know yet whether I want to make that an on/off thing (like banning is now, except it would turn off some boards and maybe show others) or a gradual thing (as you get more warnings, you slowly see fewer and fewer boards)
But that would certainly make life interesting!
A wedge in the hand is worth two in the wild
The unlucky streak had to come to an end, so it seems like my life is relatively back on track. I was at least able to devote way more time to Wedge this week, and hopefully can keep doing so in the coming weeks (and months.) And because good news come in pairs, Pete is back to work as well.
In the ten days or so since my last post, we made a total of 26 commits (at least another coming from me later tonight), some of which are, as usual, really huge with dozens of changes.
The most interesting one (in my humble bastard's opinion) is another redesign of the default theme, urged by the upcoming day when I'll release the first official screenshots. See, it's interesting to give oneself a target release date for something, because then you start wondering whether you'll be happy with it on that day. And when you decide you won't, you get back to work and try to fix that. As a result, Wine has evolved even more, most notably in the choice of fonts. You'll have to trust me when you see it: Wine used to be okay, but not exciting. Now I think it is. As least those who could see it seem to agree I'm on the right track. One day, mastery of web design will be mine. Oh yes. It will be mine. So... Screenshots, eh? Not today mates! But soon, very soon. Hopefully next w... uh, I mean when we reach 100 Likes on our Facebook page.
Pete committed, among other things, his first version of the new admin homepage.
It's certainly a good start for finding motivation to strip even more things away from the old SMF codebase. Bad menu structure. Options that have been there for years and that nobody ever used. Chocobos and Peruvian pan flute players.
Discussions are still ongoing on many more features. We're active and excited again. Well, when I say "excited", we always were, we were just tired -- working on a secret project for a year was never gonna be easy, it turned out to be even harder. And when I say "active", I mean in comparison to last month. I mean, I now spend about 8 to 12 hours a day on Wedge, when I used to work only 4 to 8 hours on it, mostly because of my computer troubles. What a slacker really!
My to-do list is still filling up faster than I can actually empty it, but I'm used to that now -- my to-do list for Kyodai Mahjongg was miles long when I stopped working on it. There just wasn't anything on it that was worthy of the time I'd have spent on it. So, just like in the good old times, my to-do list is mostly there as a reminder of what I can do if I find myself out of new ideas. Which usually never lasts more than a few minutes. And believe me, the ideas I regularly get and put into my to-do are pretty good overall. I keep thinking, "hopefully I won't have to be the one implementing them... But I'll do them, even if it costs me years. And my social life."
So... Screenshots next week, and hopefully an alpha at the end of the month. Although I wouldn't hold my breath for a public release by then -- a private release is likely, but others will probably have to wait until late August. And yes, that does mean I get to spend my entire Summer working like crazy on Wedge. Isn't that cool? What do you mean pathetic? Oh, now you flatter me. Two sugars dear, please.
« Just when I think I'm back in... »
The last few days were interesting, to say the least.
I don't exactly know what's going on in the irony department up there, but it feels like someone's determined to make me waste my time. Apart from the usual real-life issues (including but not exclusively, my driving license, of which you can see a picture on my Facebook page because, yes, I'm that shallow), and from the PC apocalypse I told you about in my last post, I also faced two new problems this week-end.
First of all -- the new computer I bought has the Intel P67 bug with the SATA interface. Meaning half of my SATA ports are not usable. One of them was being used by a hard drive so I just moved it to a safe port, but it now means all 4 of my safe ports are taken (plus my only eSata port), and I can't add any other hard drive. Thankfully I didn't exactly plan to do that either, as I already have USB3 ports which will come in handy in the future.
The only question then, is whether or not I should bring back my computer to the shop. I mean they're not supposed to sell me a buggy motherboard when Intel recognized the bug and everyone recalled their motherboards months ago already. I'm definitely unlucky these days.
And somehow, after my horrible Sunday experience, I can't help but wonder: won't somebody please think of the analog modems? These days, it's all about working from home and avoid commuting. So, people can go live anywhere they want. What happens to those who happen to find a heavenly place with no DSL lines around? What happens when all of the web is optimized for broadband? Will analog users end up as the digital man's stoneman? Be viewed as disabled, maybe? WAI-ARIA to the rescue, or no future for losers?
We need to stop wasting resources. Just because a font looks cool doesn't mean you should force your user's browser to download it every time they come to your website. Interestingly, that's exactly what I did a few weeks ago. I went for PT Sans as the default header-type font in Wedge, but decided against specifically calling it from Google Fonts, as fast as the service is. I just don't see the point in doing that when you can simply tell your users to download the font and install them by themselves. Then they no longer have to download it again -- and the font can start popping up everywhere.
Install a font and save a tree!
Find your raison d'être!
To arms, my brothers!