Many of you, perhaps, wondered why I supported such old Redmine versions as 1.0.x? The answer is simple: cause I used (and still do) Redmine 1.0.1!.. But why?..
I used to work as a Linux system administrator, so I know, what is the security and how important is to have a well tested and well maintained installation. For this reason I chose Debian as my server platform. Debian is, however, known to have outdated package versions... But there is a reason why it happens. Debian has three "branches": unstable, testing and stable. To get into the stable branch a package needs to pass the unstable branch, where it gets tested, and wait for a release in the testing branch, where the whole system gets tested once again.
But why other Linux distros use the latest versions then?.. Others rely on authors’ opinion, whether a package is stable. And Debian guys prefer to check this themselves.
The release of Debian happens not too often. When the testing branch gets released and becomes stable, the versions of the packages in this branch get "frozen", that is, only minor fixes (usually security fixes) can be put into these packages. Therefore their versions can’t change much! Thus, till this moment Debian shipped with Redmine 1.0.x. That’s why I’m still using this version.
You can ask why didn’t I installed Redmine from sources. My answer is: If you do this, you must further care about security fixes by yourself, i.e., not relying on the Debian team! To be able to do this you must: a) check security news for Redmine, b) manually update it each time new version is released, c) ensure Redmine does not get broken, when you update the system, d) ensure the system does not get broken, when you update Redmine, e) ensure Redmine won’t become vulnerable due to changes in the system, and so on. If something requires you to spend much time for it and it’s not your main job, most likely, you will fail...
For this reason I use Redmine 1.0.x which ships with Debian and for these reasons I support 1.0.x!
But it happens, that new Debian version comes. Some time before this post (a long time, actually) the testing branch got frozen... And it is frozen right now! So the release is going to happen soon! Redmine version, which will come with new Debian, should be 1.4.x. So as soon as it happens and as soon as I upgrade my server I will stop supporting versions prior to 1.4.x. Good news is that, usually, I wait some time before doing upgrade. Not sure how much time it will be this time though. Also only the next release of the project, after I have upgraded my server to new Debian, will drop older versions support and I will mention this explicitly on the project overview page and in news.
Meanwhile, however, I’m going to drop support for Redmine 1.1.x, 1.2.x and 1.3.x, as it is really too many versions to test plugins on!
Now regarding ChiliProject...
ChiliProject is not yet available in Debian, so I’m not even considering to use it. Why?.. As I have written above, because it’s easier to use Debian packages and maintain them, that is, for the same reason, that I don’t use the recent Redmine. And to make my projects support easier I also decided not to test them under ChiliProject 2.x. What, however, does not mean, that they won’t work with ChiliProject 2.x, this just means, that I won’t check this. Sorry.
Anyway you can still report bugs related to Redmine prior to 1.4.x. and ChiliProject prior to 3.x. Will try to fix them.
My book announcement (1 comment)
I guess sizes of news and Wiki pages, which has been written by me so far, indicate, that I like writing to some extent... I don’t feel it this way though (it’s quite complicated for me to, but, I believe, that it’s the integral part of the good development process, so that’s why I do this usually). Or, maybe, I just don’t know myself well enough?..
Having started to deal with Redmine and having noticed, what kind of mistakes its users usually do, I got the feeling, that I would like to create a blog some day, where I would discuss such issues (by the way, I still want to do this)... I really had a lot of ideas, what to write about for Redmine, and even started to note them.
So, when I got the offer from Packt Publishing to write a book... there were no doubts, that I want to do this, and I agreed! Was I ready for doing this?.. No, I believe my English is far from being perfect. Did I have a lot of free time? No, my daughter was born and... you know these little kids. Why no doubts then? Cause I was not sure, that I will ever have such chance again! And what I learned during my last decade is: !
Of course, before agreeing I had ensured, that it was not mistake (I literally asked, why me). Honestly, it’s still sometimes unbelievable, that there going to be my book, printed, in English, by a British publisher... While writing first chapters I was constantly expecting the email claiming it was a mistake to ask me to write this book... Yeah, perhaps, I’m too self-critical? But now it’s the fact! At least untill or if the following link still promotes the book...
At the moment drafts for all the book’s chapters have been completed and the book has just entered the "production" phase (it’s the final phase before the book goes to stores). The book has 11 chapters (while the editor requested 10 and it was planned to have 10 chapters – one of the chapters got too huge, so we decided to split it into two) and about 350 pages. It will be available in eBook format and/or in printed copy.
Thanks to the book my Redmine to-write list, which has been mentioned above, is now empty! That is, everything, I wanted to write about and made notes about, is now in the book. I can’t say, that I was a dumb in Redmine, but, can you believe, having written this book I feel like I have learned much more. Cause sometimes I looked into the code/section, where I did not look before, and found yet unknown things, sometimes I just put my thoughts on the "paper" and this made me see Redmine from another point and so on. Anyway having read this book you will learn many things, I have already known, and many new things, I have discovered. I would not learn those new things without writing the book! So, you are lucky because you can learn them just by reading it...
- You would be shocked to know how many deployment options exist for a Ruby-on-Rails application, one of which is Redmine. Of course, the book was not to shock you so I review only most commonly used options. Anyway, this review will help you choose the best option for your Redmine installation.
- I constantly hear how complex and problematic is Redmine installation... For some reason I never felt it this way and I installed Redmine quite often. Maybe I do something "wrong"?.. You can check this as I review the installation in the book.
- In addition to the usual installation I also review some quick-and-easy-install options, which can be used for small organizations, testing and development.
- In the book you will also find the comprehensive guide on Redmine configuration. This guide covers many configuration options, some of which you may have never heard about but which you will unlikely find useless.
- The book is full of tips... Most of Redmine functionality is quite usual, noticeable and documented. But some part is unseen and known only to some experienced users. I tried to put into the book everything I know. Those things, which did not find their context, I put into tips.
- You would not be reading this, if you did not appreciate the power of Redmine plugins. The book includes many short and long reviews of plugins. Unfortunately or luckily it does not concentrate on popular plugins, instead in the book I’m trying to mention those plugins, which are related to the context, are essential, which fix things and so on.
- But don’t think, that the book misses the review of the core functionality! However, while reviewing it I tried to go deeper into things and explain things, which can be misunderstood. Therefore, I usually skipped things, which were obvious...
- The book describes the most recent Redmine version (at the moment)! But it also mentions the ChiliProject fork sometimes...
- As I’m the author of redmine:wiking, you can assume, that I know the Redmine Wiki syntax very well... Having read the book, you will also know it! In the book I show, what amazing things can be done using just the Wiki syntax.
- If you like how this website (i.e., this Redmine) was customized, you will probably be happy to know, that I shared some tricks about customization in the book.
- In addition, I also shared some best practices on maintaining websites like this one and projects like ones hosted on this site. As well as many other best practices related to project management, issue tracking, public projects, access control and so on.
While there are 11 items here (and the book has 11 chapters) they have nothing to do with chapter topics...
The book was also mentioned in my Personal report for 2012 under the name #MyOtherRedmineProject (it will be added as an achievement in the "Personal report for 2013" while the majority of the work was done in 2012). I also have been sharing the progress of the work on the book in my Twitter using the #MyOtherRedmineProject hashtag.
- About 6 years down the drain
- Why public reporting?
- Achievements in 2012
- Things I failed in 2012
- So what is the secret?
Jump to the Achievements in 2012 if you want to skip the backstory.
Paragraphs like this one can also be skipped, if you do not want to read too much details.
I started my career as an operator (it’s lower than an engineer) in the Ivano-Frankivsk National Technical University of Oil and Gas. At the same time I started to study part time at the same university (therefore, I was an operator – engineer position required education). However, till the time I graduated from the university I developed into the head of the Software & Networking Laboratory, created a network management system for the university (called INACC), which is used by the university even now, created the website, which is also still used, and much more.
The work in the university, however, was not much paid. So soon after the graduation I decided to leave...
I was a very promising young IT specialist, well known in Ivano-Frankivsk (the city I live in). I had even authored an article in one of local news papers... Therefore, it was not a problem for me to find a job. At that time the only good paying IT area in the West Ukraine was outsourcing. So first I started to work remotely with DevCom, the Lviv outsourcing company, where I developed from the senior engineer into the team lead, then I got an offer from the small local company Softjourn...
Why did I choose Softjourn?.. This was the only company with the office in Ivano-Frankivsk and I did not want to move elsewhere (I love this city). Also the project, which I was about to enter, was outsourced by a department of a huge company, one of Fortune’s top 1000 U.S. companies. Therefore, Softjourn expected the project to grow to about 50 developers in future and I was going to be one of managers on this project.
I entered Softjourn as a senior software engineer in 2006, that is, almost 7 years ago... Before this I was well known, had prospect, was working as a head of a laboratory and as a team lead. I believed, that it was the start of my new professional life and great career. In fact, it was the end of my professional life and the time, when I started to "disappear"... Softjourn became the hugest disappointment in my life as I really felt, that it was my "home" company.
About 6 years down the drain¶
I usually do more than I’m expected to... Thus, INACC and the website of the university were totally voluntary (while later I got paid for the website a bit). Why did I do these projects?.. Because I felt, that I needed to improve things! So I did similar free-time projects in Softjourn as well. Thus, during first years I created a CD writing web interface on the company internal server, Internet usage statistics site and much more. In fact, the majority of the projects, which are hosted on this website and were created before May 3, 2011 (the days, I launched the site), were created for the company , for and in my .
Later on I started to notice, that no one in the company actually needs, respects or supports my endeavors... In outsourcing it’s just normal to do your job and nothing more. And if you do more, you draw too much attention to self, become the person no one understands, things you do look useless and redundant. This was especially noticeable in Softjourn, the company with a very weak management...
In addition to trying to improve things programmatically I tried to improve management. Thus, I was trying to work on local resources for easier knowledge sharing, initiated creation of the motivational system, helped with the career development system, consulted management on different issues, tried to resolve some issues personally and so on... All failed!
Yes, till my last day in Softjourn this company had no motivational or career development system! And I doubt they do even now...
Prying into management issues, of course, led to the conflict with the management...
But why did I do this?.. I see no reason to work at the company if this company can’t be your "second home" – it’s just the waste of time then! So I craved for improvements in the company and, I believe, I did all I could do for them. But finally I understood, that it was the wrong company... Not because of management only – other employees, actually, showed no interest in changes as well.
Unfortunately it was too late to leave the company right away as I had borrowed money from the company for my new apartment. So my decision was to continue working untill I repay not doing anything special for the company. To satisfy my natural needs to do something I also decided to continue working on my projects and to create a website for them on the company’s behalf.
If honestly, being in conflict with the management and closing all my other voluntary projects in the company I hoped that this effort will help me gaining some tolerance. But I was wrong...
I waited about a year for a server to be provided for establishing the company’s Labs site... Finally the server was allocated. I did all the job related to setting up the server. In particilar, I set up and configured Redmine, created the theme, wrote Redmine plugins for the site, added my projects including just written plugins and started promoting the site on third-party resources. While it was officially approved I was doing this mostly in my free time (no one canceled my main tasks and, in fact, I did not want to). So this way the Softjourn Labs site was launched (this site does not work for about a week already)...
The company’s director used to hire his friends and relatives and then give them management positions. Thus, the project manager and the head of the Development Department were close friends from his previous job. Another his friend from the previous job and his classmate took team lead positions. The office manager position was taken by the godfather of his child...
Soon after the launch the control over the Labs site was granted to a director’s friend, the head of the Development Department, without even letting me know. Very soon the head published his own personal project on the site (the web UI for Serviio) and decided to remove the registration requirement for downloading files without consulting with anyone involved in the project... While till that moment (during the promotion process) I had already mentioned on third-party sites, that the registration was required, and the whole site had been checked and approved by other managers. My short remark on his action led to the brawl and moving all my projects to my own site in approximately a month after the launch of Softjourn Labs...
The remark ended with the meeting of approxemitely 20 idlers... On this meeting some managers, friends of the director and of the head of the Development Department, complained against me for everything (e.g. the director declared, that employees complained about me every day) and only two people tried to defend me. The meeting lasted for more than a hour and it was not even once said, that the Softjourn Labs, the reason for the meeting, was totally my effort. Moreover, the management found two my "abuses" on the Labs site, each of which were, actually, approved before...
At that moment it became clear, that no tolerance or appreciation could be expected from these guys. Having understood this I moved all my projects, which were hosted on Softjourn Labs, to my own site, this one (yeah, that’s how this site was created). It was 8 out of 9 projects hosted there...
But the last thing, that made me leave right away, was that management put new manager on my project without letting me know (again). In fact, I got to know, that my manager had changed, only in the first day of this manager on my project. Moreover, that was the guy, who had been caught slandering me and who threatened me two times. He was one of the director’s friends and one of those, who complained against me on the meeting...
During my work in Softjourn I was not always able to leave for vacation. Therefore, till the time I was about to leave the company I had around 93 days of unused vocation... In fact, ... In Ukraine for tax optimization IT companies pay two salaries - the official staff salary and the enterpreneur salary (the latter is much bigger). Vacation compensation is controlled by the government but only accordingly to the official staff salary. Therefore, Softjourn compensated me for 93 days accordingly to this salary...
Why public reporting?¶
I was really lucky to leave Softjourn this way!.. After I left, my salary and reputation grew vast. Of course, it was my work (my projects), what helped me. But let’s remember, who I was before Softjourn – a young and prospective specialist, well known in Ivano-Frankivsk. And at the moment I have moved my projects to my site, before leaving Softjourn, I was no one in Ivano-Frankivsk and even in Softjourn! That was the guy I would be without my projects (I guess, I would have hard times finding new job)... I spent years to gain reputation in Softjourn (and really used to get it) and lost it quickly, while trying to improve things. My mistake was that I worked mostly for the company future and was very close to loose mine... A kick from the company management made me correct the problem, actually...
I’m quite sure, that this should never happen again! In no way I should ever loose even a year more! That’s where public reporting can help... While it’s not the best way to be motivated by sharing your achievements and failures for everyone, but it really makes you do the best at least to write something in the report. Another goal of this public report is to get criticism – please write any your thoughts, comments, suggestions etc!
Achievements in 2012¶
So let’s see now, what I succeeded in:
- My best achievement in 2012 is Kayako!.. In a week after I had moved my projects to my own site I got an offer to develop Redmine plugins for the Kayako Forge from this company’s CEO Varun Shoor. After successful finishing of projects I got an offer to work for Kayako remotely, what I was doing all the year and continue doing now... I’m very proud to be a member of the Kayako team, who develops the most cool and advanced helpdesk solution in the world! Also this is the first time I understand what, for whom and why I develop (in outsourcing this is very ambiguous). During the year I developed from an employee, who worked on additional features, to an employee, who reengineers one of the core features of the product (Oops, did I let the cat out of the bag?)... So I’m very happy to know, that I gained such confidence! Another thing, which makes me very proud of my work for Kayako, is that this company develops a source-available product (meaning that the source code is available to customers).
At the beginning of my work with Kayako I also developed the Ruby library for the Kayako API, which can be found here. I’m very proud of this as this is the code, which was developed for the very famous company, which is also open source and includes my name. After 6 years of my work in outsourcing it’s very unusual to be able to declare, that I developed this library... Also the Kayako Ruby API library was the first (and currently the only) gem I put on the RubyGems.Org.
- Kayako was not the only very famous company I worked for during 2012... Another one was oDesk (not some customer through oDesk but oDesk itself)! While still working for Softjourn I found a question regarding the plugin development in some LinkedIn group. That was oDesk recruiter, who asked the question (did not notice this at the beginning). This way I was offered to join the oDesk Professional Services team and to help implementing custom plugins for Redmine (Yes, oDesk also uses Redmine!). After finishing several plugins I also developed the oDesk Ruby API library. Unfortunately, due to some changes in oDesk plans I could not finish the library yet (but it’s functional) as they decided not to use it for now... At the moment I continue negotiating to finish (what means, mostly, testing and bug-fixing) and to publish the library on Github and RubyGems.
During 2012 I also got two other offers of full-time remote work. There were also many smaller remote part-time offers and full-time offers with moving to different locations. And, of course, really a lot offers from ukrainian outsourcing companies (Just for the case – kill me if I ever get back to outsourcing again!)...
- During my work in outsourcing I always felt, that I was a different developer... I never really liked the kind of work, when you have very strict limits (i.e. develop, what you were told to). Perhaps, to get some freedom, what felt like breathing fresh air, I used to develop something else, e.g. Redmine plugins. Of course, there were similar developers... But all they were newcomers. Having worked several years in outsourcing everyone became happy with what they get (Or seemed to be happy?) and really changed as developers (that was another thing I tried to stop, by the way). Not sure why I was influenced less... But I really thought, that I was not influenced at all. During 2012 I also understood how big was that influence... So 2012 became a year of recovery and I don’t really think I recovered enough (But did recovered much!).
- In 2012 another great event happenned – I met Anastasia, my daughter! This happenned on April 21. When born she was 3.7 kg and 52 cm long (I was present at her birth). At this moment she’s a half of year old.
- In 2012 I also started another interesting Redmine project... If the work for Kayako was a shock for many my acquaintances, this project, I’m sure, will be even more shocking (not because it’s "cooler" but because it’s less expected). I don’t name it in public yet, while I’m allowed to. At the moment I have finished around 80% of the work, so a little to wait for release.
- In 2012 I also learned (a little) to make photos. Some my photos can be seen on my social pages here (facebook) and here (vkontakte). Another good thing about this is that I finally got some hobby.
Soon after creating my accounts in social networks I fell in love with the photography. I used to spend much time watching photos of photographers. Then I understood, that I really should not do this, as having seeing professional photos, which were made with mirror cameras, I really lost interest in making photos with my Canon DC50 video camcorder... I could not enjoy photos made by it no more. So after Anastasia was born I decided, that I want to get pleasure from seeing photos of my daughter. And I bought Nikon D90.
- During 2012 I also created 6 open source plugins for Redmine, which are: Redmine Extended Fields, Redmine OpenID Fix, Redmine Project Alias, Redmine Role Shift, Redmine Subscription and Redmine WikiNG. Some of them, like Redmine WikiNG, became very popular.
- And finally in 2012 my work was mentioned in multiple articles all over the Internet. Thus, I know about the following articles:
Of course, in 2012 there were also failures...
Things I failed in 2012¶
Actually, I planned to do more in 2012:
- Thus, I hoped to publish the oDesk API library before publishing this report (to include it as another achievement). To my excuse, failing to do this is not completely my fault...
- Having started the work on the #MyOtherRedmineProject I promised to do my best to complete this project earlier than due date. But instead I go as scheduled... Not too bad, but. Still, I believe, I did my best.
- This year I was quite busy due to some circumstances (some of which has been mentioned above)... So my work on open source projects slowed down dramatically. Therefore, I failed to add support for recent versions of Redmine (in particular, 1.4.x, 2.0.x and 2.1.x) and ChiliProject (3.x) to my plugins. I’m also very disappointed with huge changes in Rails 3 and Redmine 2 – these changes really added a lot of work for me (almost each my plugin introduces a hard-to-resolve issue)...
- I also miss Orangutan... And have huge plans for reviving it. But I failed to do this as well! I don’t think, that I will work on reviving Orangutan before I finish porting all my other plugins to Redmine 2.x.
- And, finally, I planned to write this report in my WordPress installation... But failed! My blog is not yet ready.
Of course, I could just install WordPress and any theme for it (in fact, I did installed WordPress already) but that’s not how I work. If I do anything, I always try do it at the best level! So the blog will appear later. Meanwhile, this report is published here (will be, perhaps, moved to WordPress, when ready).
So what is the secret?¶
I’m proud of what I have achieved so far! Not sure if this is really worth to be proud of though (I’m quite self-critical)... But it is worth being definitely for a former outsourcing guy! So, for the case you wonder how did I succeed to achieve this, here is the "secret"...
In fact, !.. I don’t think, that I’m smarter than other developers, and I don’t think, that I know more than other developers (instead, I always felt that I know too little). The only difference is how do I do the job – I always do it in the best possible way! If I need to do more changes than asked, I persuade the customer to let me do this, if I think, that the system is missing something to work better, I persuade the customer to let me develop this something and so on. Sometimes I even do something without asking the customer for approval, but I do this in my free time and let the customer know, that it has been done.
From customer satisfaction, my position, salary and job, end user satisfaction and application purity (in wide sense) I usually choose the last... As I believe, that the application purity guarantees the rest.
So the "secret" is just my work... In particular, the "secret" are my projects, which were to promote Softjourn but, as result, promoted myself. This promotion helped me to be found by Varun for custom plugins development. My work for Kayako showed me as a good developer, so I got the offer to continue working full time. Same with oDesk and #MyOtherRedmineProject – my work, i.e. my plugins, showed, who I am and what can I do. So, if you want to repeat my success (if you believe it is) be a developer! If you can’t or do not want to – change the profession! Don’t waste your time for outsourcing...
Upgrade is pending (2 comments)
Redmine 1.4 was released quite a long time ago, ChiliProject 3 was released even earlier!.. Now Redmine 2.0 was released! None of these versions are supported by all my plugins... ChiliProject 3 however is supported by most of them.
I’m sorry! Really!.. Recently many events occured in my life so I could not update them in time. Of course, I plan to and will do my best to do this a.s.a.p. I hope for your patience.
I will begin with Redmine 1.4, then will work on Redmine 2.0 and only then will continue with ChiliProject...
Why ChiliProject is the last? Well... I have a feeling I need to go this way. You can influence the order by letting me know.
When you should expect updates? Can’t give any ETA!
P.S. Also I would not recommend anyone to upgrade to Redmine 2.0 right now... It changes much in API used by plugins! So you need to give more time to plugin authors to update their plugins (including but not limited to me)! At least be sure to check if plugins are compatible with Redmine 2.0 before upgrading!
Thanks for contributing (3 comments)
Users’ contribution to a project is very important! No project is good if it does not happen (unless a project can’t be extended). I always try to mention those of you who contribute to my projects in appropriate CREDITS files. But I appreciate your contribution much greater!..
So I think about adding users who has contributed to a project to members of the project... For this I can add two new roles: "Patchers" and "Translators". This way contributors will be listed as members on a project overview page. This will also allow me to assign an issue to a translator (e.g. when new strings are added to locale)... Of course, if translators do not mind?
What do you think? Please comment!..
P.S. Some day I will also add a new role "Sponsors"...
Some time ago I wrote the Project Alias plugin which allowed adding project identifier aliases and choosing one of aliases as a project identifier (that is renaming identifiers). I wrote it to fix identifiers of my projects. The most glaring example why I wanted to do this is the SCM Creator plugin which has identifier
svn (for historical reasons)...
Recently I also added support for the identifiers renaming to the SCM Creator itself (it needed to rename repositories for Redmine.pm to work)... So now I can rename identifiers!.. And by these news !
Mostly you won’t feel the change because old identifiers will still work as aliases. But you won’t only if you do not use SVN to access the projects code!.. ! In other words old SVN links will stop working! This can be an issue especially for those who is using SVN to update the code on production! Luckily this won’t harm the code (old links just won’t work)!..
I will write news for each project I will rename so please subscribe to news or check them periodically.
I definitely want more feedback from users! Only a little issues are reported by others (not me)... Only a little votes were added since the site launch... I guess this is because no one wants to have another account on another site. That’s why I needed OpenID.
It is officially believed that Redmine does support OpenID. But "for some reason" I could not get it to work!.. And that’s not only me (see this and this). So had spent some time for it I found the reason and the solution!
Welcome! Go login! Report! And Vote!..
I’m happy to welcome you on my website which launched yesterday. Right now I put here some of my open source projects. But later I plan to launch some blog as well.
Also available in: Atom