Archive

Archive for the ‘General’ Category

Development Organization

March 21st, 2009

For IT companies development is substantial, if not the only business. And many of them suffer because of a bad internal organization. If software development is your main business, you must nurture it and protect it until it grows strong. In this post I’ll try to summarize years of good and bad experience working with development companies. I’ll concentrate on Open Source Software solutions and how to use them to your advantage. Required ingredients to build working development infrastructure include:

Electronic Mail: E-mail is the formal communication in your organization. You need scalable and flexible e-mail system. One that support hundreds of aliases, secure communication (TLS), etc. One that has comprehensive web interface. Anti-spam and anti-virus is mandatory. Postfix (MTA) is great Mail Transfer Agent, Spamassassin (Anti-Spam) or DSPAM (Anit-Spam) can handle unwanted messages, ClamAV (Anti-Virus) can deal with harmful code and Cyrus (IMAPS) or Dovecot (IMAPS) can provide IMAP for mail applications. About webmail, I recommend Roundcube.

Source Code Management: Source Code Management (SCM) system is essentially the spine and the nervous system of your development infrastructure. Good SCM will let your developers to concentrate on real work and not revisioning. It will be flexible and non-intrusive. It has to be intuitive, easy to use. It will let you break the ‘client-server’ model. It must has some form of web interface or gui. E-mail Integration is mandatory too. Flexibility is usually underestimated here. In a complex project you may need source code reviews or constant audits. You can let every developer update local source trees from central location, but allow them only commit to a source code reviewer’s repositories. Situation is pretty much the same with branching. Your SCM must provide branching. E-mail notifications are really helpful too. It is often easier to search trough your Inbox rather than trough countless screens of revision diffs. Obvious choices here are Mercurial and Git. I also recommend Subversion to some extent.

Tracking System: Often underestimated, often forgotten, tracking system of some kind is actually helpful. In my opinion there two types of tracking systems, Bug Tracking and Ticket Systems. Doesn’t really matter which one you choose. Integration with SCM, however, does matter. The tighter integration between Tracking System, SCM and E-mail, the better. I strongly recommend Bugzilla or Bugzero for bug tacking and Trac for bug/issue/ticket tracking.

Instant Messaging: Most companies prefer e-mail communications. It is formal, it leaves tracks, it is easy to manage. But people prefer instant messaging. It is easy, it is intuitive, it is usually faster. There is psychological element to this too. When the status of your buddy in ‘Online’ it is harder for your peer to ignore your request. Mail, even E-mail, can be lost or delayed, instant messages are delivered right away, you even get notification for successful delivery or buddy presence. Your instant messaging system must provide several features: secure communication, groups, peer-to-peer communication, peer status notifications, delivery notifications. Jabber is the obvious choice. My favorite is Jabberd2. Ejabberd is also really good server. One alternative to strictly Instant Messaging is IRC. Really viable alternative. It provides everything and once you get to know it, it’s really good, it really fits in your organization. IRCD-Hybrid and InspIRCD may help you here.

Project Management: Being Team Leader or Manager with several different projects, it is hard to keep track of everything. This is what Project Management software is all about. It must provide task assignments, task relations, deadline notifications, reporting. It should help you keep track of your projects without getting in the way. Sometimes the power of Project Management is overestimated. It really doesn’t matter how sophisticated management software is if your developers are lousy. I find dotProject useful.

Documentation: Every project, every process, every workflow is surrounded by tons of documentation. Different revisions, different annotations. different authors. It’s hard to manage it all. Sometimes people change, new people come a board, others leave. To keep the development going you need good documentation and easy ways to manage it. In my opinion, wikis are great for this purpose. The wiki of choice must provide access control, document revisions, annotations, flexible formatting and integration of different file types (at least be able to attach those). Once established wiki can greatly help you. Move all project documentation from hundreds of flying around pages to the wiki. Everything goes there, from coding style and list of project members to overall project architecture. Centralization of documentation will increase productivity. I recommend MediaWiki and TikiWiki.

Given all of the above you need to follow several steps to make your development organization working flawlesly. First of all establish e-mail infrastructure. Create user accounts, using predefined patterns. Create group accounts (aliases) and populate them. Create project accounts and populate them. Then create project repositories in the SCM. Set your SCM to send e-mail notifications on commit to all or a group of developers. Add your projects to your tracking system, again, setup e-mail notifications. Designate who should recieve mails for bug tracking or from tickets. Add your projects to the project management software. Divide each project to tasks and assign those tasks with fixed deadlines. Establish dependencies between tasks. Add project information to the wiki. Instruct every member to put all documentation regarding projects in the wiki. With proper access control this will be available to all related members working on that same project. If you instant messaging system requires additional setup, do it. Send e-mail and/or instant messages to all related peers and the development may start.

From this point on, your development infrastructure requires two things: coordination and backups !

Management General, Tech

Open Source Commercialization

March 20th, 2009

We’ve been using Open Source for about 10 years now. Of course, it was really hard to put it in commercial projects in the beginning. Psychological and marketing issues prevented Open Source domination. But this is 2009 and we all use Open Source now. The Open Source is everywhere. It is fashion. It has gained strong success amongst managers too.

I want to emphasize on the many different flavours of Open Source though. You must really understand the differences between licenses if you want to protect your intellectual property. For a deep explanation, I’d suggest contacting a lawyer, but there is one simple rule you can follow:

If you modify GPL code, you must open the modifications,
if you modify BSD code, you can keep them closed.

GPL stands for GNU Public License. It’s current revision: Version 3. If you use GPL code in your commercial projects try to avoid or minimize changes to that code. Every modification should be published. You must open part of your work to the world. Which is not always bad. Many communities surrounding commercial projects work this way. GPL is probably most popular Open Source Licence, which means there are tons of GPL code out there. Probably millions of projects.

BSD stands for Berkeley Software Distribution and in contrast to GPL, BSD licensed code is absolutely free. No strings attached at all. You can modify the source, close it, sell it. It’d be good to contribute something back to the development community. Makes you look good and can expect help from original authors if something goes wrong.

There are tens of other licences, different revisions. different modifications. In my opinion, however, BSD and GPL define the Open Source. Our projects extensively use GPL and BSD code. Embedded development is dominated by GPL. Appliance development shares equal parts of BSD and GPL based projects.

Management General

Startup

March 14th, 2009

For the last six months we’ve been working hard to establish the company. We found and totally redecorated an office space. We registered with all government divisions, related to our business. We established network connectivity, computer rooms, servers, etc. It’s been hard, it’s been busy. There is more work to be done. But most of all, regardless of all the difficulties, it’s been pleasantly fulfilling.

We have a home now! We are ready to go!

We even managed to close several deals and sign our first contracts. Unfortunately, there is a downside too. During the last six months the competition was working hard on projects, while we were working hard to make working on project feasible. We are now in the process of restructuring our initial ideas to reflect the new distribution of powers. Yet, it’s hard to know, you had a solution to a particular problem months ago and were unable to sell it. Now everyone has it. Even more motivation to work faster! We are seeing some of our ideas implemented. Despite the stale economy everything is moving forward. So do we.

Expect more on our projects and our work in different areas.

Management General

Hello, World!

March 12th, 2009

Welcome tot the Next Stream Company Blog. From now on, we will be using this forum to share our thoughts and ideas, our projects and product information with you, our esteemed readers. Look here for posts from our management or technical staff. We hope you enjoy your stay and look forward to seeing you back often.

Management General

SEO Powered by Platinum SEO from Techblissonline