WebIssues 2.0 coming soon

Submitted by mimec on 2020-02-26

It's been almost two years since I announced that I'm working on version 2.0 of WebIssues. I even wrote an article on Medium about it. In fact, in the second half of 2018 it was almost finished. And then the unexpected happened. Just when I thought that the time of commercial side projects is over and I would be focusing on open-source projects again, Bulletcode got two big projects in a short time. So there's a 7-month long gap in the project's git log, not to mention that it took a while before I got back to full speed with WebIssues.

I usually applied the "release early and release often" approach to open-source projects, but this time it was such big technological leap that I decided to postpone the initial release until everything is finished, polished and tested. So even though the first version will be a "beta" version, the only thing that's really missing is the translations (by the way, please join the WebIssues project on Crowdin if you want to help). We're already using that beta version for our Bulletcode projects and everything works fine, but of course there is such diversity of platforms and configurations that it's impossible to catch every bug.

What can you expect from the new version? It has a completetly new user interface, not only when it comes to technology, but also the overall design. The well known tree of projects and folders is now gone; obviously you can still filter issues by project and folder, but the new UI is built around issue types and views. The native desktop client is also gone and replaced with an Electron application. Yes, I know, the desktop client was a major selling point of WebIssues, but it was also the main reason why it was so hard to make changes and introduce new features.

I tried to do my best to make the new application as lean and fast as possible, because like everyone else, I hate heavy and bloated single-page applications which are the reality of today's web. And, most importantly, it remains an open-source application that you can host on your own server, requiring nothing more than PHP and a database, because not everyone likes to store all their data in the cloud.

The first beta version will be available on March 2nd, so I encourage everyone to take a look and try it; there will be an online demo available. The official version will follow soon after, depending on how quickly the translations will be updated and how many bugs will be found.

Migration to GitHub

Submitted by mimec on 2018-03-02

In the last few months I've been quite busy working on the prototype of version 2.0 of WebIssues. My plan was to reach a point where the new web UI is functional, at least in the most important areas, before migrating the code repository to GitHub. However, with the recent series of outages and problems with SourceForge, I decided not to wait any longer. Honestly I don't blame those guys who work for SF. I suspect that these problems have more to do with politics than with technical reasons. The truth is that in today's digital world the largest company wipes out the competition sooner or later, so this was inevitable. But it doesn't change the fact that SourceForge played a very important role in the popularization of open-source software and after using it for at least 13 years, I feel a little bit of sentiment.

Also, I've been using Subversion for so long that I was a little bit reluctant to switch to Git. Believe it or not, but I've never really used it before. I know that in theory it works more or less the same, but such transition always requires some mental processing which distracts from the actual work. Fortunately, thanks to Visual Studio Code and it's built-in integration with Git, this transition went quite smoothly. So the first project is now available at https://github.com/mimecorg/webissues. Please note that this is the current development version of WebIssues 2.0, so it's very far from being functional and stable. In the following days, I will move my other projects to GitHub, including the latest stable version of WebIssues.

Soon I will also publish an article on Medium in which I will describe my initial experiences with Vue.js and my general thoughts about the benefits (and drawbacks) of working on an open-source side project. I will also use this opportunity to reveal some of my plans regarding version 2.0 of WebIssues.

New incarnation of mimec.org

Submitted by mimec on 2017-11-19

Today is the beginning of a new chapter in the history of the mimec.org website, which I created almost twelve years ago, and the related websites dedicated to my open source projects. I moved these sites to a new server, but I also completely redesigned them and migrated them to the latest version of Drupal. I actually built them completely from scratch and imported the old content using some hand-crafted tools, so the whole conversion took about six weeks of work. I hope that you like the result.

If you look closely at my blog, you will notice that there hasn’t been much going on recently. I mainly focused on Bulletcode, the company which I founded three years ago with my friends. We had a lot of ups and downs, but the important thing is that we created a few projects that help thousands of people. Even though it was always just a side project for us, it was definitely one of the greatest experiences in our lives. Each of us moved on to different projects, but we’re still a great team and when the time comes, we may work on something new again.

Personally, the last few years were very hard for me, so the company was one of the things that kept me alive. But now I’m ready to begin a new chapter in my life, start building a new relationship and become the person who I really want to be. I’m more aware of myself. I rediscovered many things that I lost along the way, things that inspire me and drive me to become better at what I do. I am grateful for what I have and I look into the future with optimism and curiosity.

So what are my plans now? A few months ago, I started working on a new, experimental version of WebIssues, with a new user interface based on Vue.js. Those of you who follow me on Twitter could already see some screenshots of that prototype. I also wrote a series of articles on Medium dedicated to programming in Vue.js and to my great surprise, they were very well received. I found a way to create the new version of WebIssues with as little effort as possible. However, I felt that this wasn’t the right approach, so I decided to take a step back and rethink this.

The truth is that it took me many years to learn PHP and C++ before WebIssues could become what it is today. Now I must gain a similar level of skills with the new technologies, even if it takes a similar amount of time. I also want to make a really good use of them instead of just doing a simple face lifting. So instead of rushing toward releasing a new version, I’m going to keep experimenting until I’m satisfied with the results. Of course, I will continue to write about new things that I learn along the way on Medium. I will also share my progress in this blog.

I’m very excited about this new plan, because I think that personal development and improving our skills is the best thing that we can do in our lives. Especially if they allow us to do something both creative and useful. With that goal in mind, I’m sure that the next months and years will be an amazing time.

Issues and Tins

Submitted by mimec on 2013-11-13

Today I released version 1.1 of WebIssues, a major release which introduces lots of very nice and useful features. I must admit that I'm relieved that this project is finally over. It's also perfect timing, because I'm getting seriously involved in the indie game which I announced some time ago. The game is now officially called Mister Tins and it even already has a Facebook page and a blog (where I will probably post more often than here in the nearest future).

What started as a quick test project, has now become a playable and quite enjoyable game (at least for me). It's still very far from the first official release, but at least now I'm convinced that this is really what I want to do. It's what I always wanted to do and what I probably should have done a long time ago.

I'm not saying that I regret what I've been doing for the last few years. I definitely wouldn't be half as good programmer if it wasn't for WebIssues. I would even go as far as saying that I wouldn't be half the person I am today if it wasn't for all the open source projects I've been involved in. All this technical and non-technical experience should now pay off with this new project.

Of course, there's no guarantee that I will succeed. I know that there is a lot of potential in what I'm doing, and the whole idea of the game, while simple, seems quite innovative. On the other hand, there are many factors involved, and not all of them depend on me. A lot of luck is needed to provide what people need exactly in the right moment. Also, creating games is a team sport, and experience taught me that finding the right team members is not easy an task. But the best thing is that I've reached one very major goal, which was releasing WebIssues 1.1, and I can immediately concentrate on the next goal, without losing the momentum that I have.

The markItUp text editor

Submitted by mimec on 2013-04-03

As I already explained, version 1.1 of WebIssues will allow using a special markup language when editing comments and descriptions. The syntax will be a hybrid of BBCode, Wiki and various other markup languages. Obviously it's hard to expect that the users will remember Yet Another Markup Language. Instead, they will use a familiar toolbar and key shortcuts to make selected text bold or italic, create a hyperlink or insert a block of code. I decided to use markItUp because it's simple, lightweight (the original uncompressed script is just 20 KB long) and fully customizable. Unlike some other editors, it's not designed for any particular markup language (like markdown or wiki syntax), but lets you design a custom toolbar with whatever markup you need.

After playing with markItUp for a while, I decided to customize it a bit more by modifying the script. It could already generate a preview using AJAX and has multiple ways of showing it - in a popup window, embedded iframe or a custom HTML element. I decided to use the custom element, but I wanted it to be shown dynamically when the preview is first invoked, just like in the two other modes. I also integrated it with prettify, about which I wrote last time, so that syntax highlighting works in the preview.

I also slightly changed the way the markup is added. First, in my version, the openWith/closeWith text is not added to empty lines (or lines with nothing but whitespace). Second, the closeBlockWith text is added before any trailing newlines and other whitespace. It works better this way, especially if you want to apply bold or italic to multiple lines (each line is treated as a separate block, so it must be wrapped in separate bold/italic tags). Finally I removed the special handling for Ctrl and Shift keys when clicking on the toolbar. It's hard to remember and can be confusing, so I decided to simply remove it.

Just like with Prettify, I minified the whole thing using the Closure Compiler, this time in simple mode, because advanced doesn't work too well with jQuery plug-ins. I also had to replace an eval() with direct call to the preview() function, because eval() wouldn't work with minified code. The final script is just 10 KB long. The unminified version of both this script and my version of Prettify are available in the trunk/tools subdirectory of the WebIssues SVN repository, in case you're interested.

Note that obviously I had to implement a similar editor in the Desktop Client, which uses a native QPlainTextEdit to edit the comments and descriptions. JavaScript was not an option here, but adding a few toolbuttons and reimplementing the relevant function in C++ was very straightforward. By the way, I recently also rewrote the entire markup processor, which converts the markup to HTML and also exists in two versions, PHP and C++. It was the third or forth time I wrote it from scratch, but this time I decided to do it "the right way". Instead of a very long, convoluted loop with a state machine, I decided to use a recursive descent parser, which is very simple, because the markup language has a LL(1) grammar with just a few production rules. The code is now slightly longer, but incomparably easier to understand, plus I fixed a few remaining bugs.

Some of you might wonder why I didn't decide to implement a WYSIWYG editor in WebIssues. They are large, complex beasts, which may be useful for large CMS systems designed to be used by non-technical people who like to edit their articles as if they were using MS Word. For a relatively small project like WebIssues, it would be an overkill to include a word processing package in it. Besides, these editors don't always produce valid HTML, and they don't work consistently across various browsers (not to mention the Desktop Client). What's worse, despite the tempting naive implementation (which uses htmlspecialchars_decode to circumvent WebIssues' built-in XSS protection!), it's actually very difficult to sanitize and validate the resulting HTML. Instead, WebIssues will still support the old style plain text format, with no special processing (except for turning URLs into links), which indeed is truly WYSIWYG. Depending on the level of technical skills of the majority your users, you will be able to choose the either plain text or text with markup as the default format.