Archive for the ‘project management’ Category

Put files/folders out of svn revisionning

Thursday, February 5th, 2009

WARNING: below information work for data that is not yet under versionning control (ie. that appears with ‘?’ prefix when running ‘svn status’)

Unfortunately it looks like it’s not possible to ignore a file that’s already under versionning => move its content into a file that won’t get modified, unversion your file and flag it to be ignored as explained below.

If you have some file or folders that you do not want svn to track them, you need to set “ignore” property as explained below.

Let’s say we have the following structure:

  1. go to parent folder of the item you want to be ignored (cd /myproject)
  2. run ‘svn propedit svn:ignore <parent_folder_name>’
  3. your favorite text editor is automatically open, simply list here all file/folder names that are in your parent_folder and that you want to be ignored by svn, separate them with a new line feed
    for example, to ignore all file/folders starting with tmp_, write “tmp_*”
  4. save your list of file/folder names to be ignored
    svn should print something like: “Set new value for property ‘svn:ignore’ on ‘<parent_folder_name>’”
  5. That’s it!

To view your changes, if you run “svn status”, your files should no longer be visible.
To make them appear, run “svn status –no-ignore”, your files should now be visible with an “I” flag.

note: I ran into the following svn error: “File or directory ‘XXX’ is out of date; try updating svn: The version resource does not correspond to the resource within the transaction”.
As stated within error msg, a simple “svn update” on that folder solved the issue

sources

Trac: set your own logo

Monday, October 6th, 2008

To set your own logo on your Trac installation:

  1. edit your “conf/trac.ini” file
  2. look for header_logo entry and set it to “site/<path_to_your_logo>”
  3. save your changes to trac.ini
  4. now place your logo into correct place: “site/” is in fact linked to “/htdocs” folder => your logo must be located at /htdocs/<path_to_your_logo>
  5. That’s it, refresh your browser

sources

  • http://trac.edgewall.org/wiki/0.11/TracInterfaceCustomization
  • http://trac.edgewall.org/wiki/TracEnvironment

Updating Trac software

Monday, October 6th, 2008

Well I’ve tried to upgrade Trac the way it was explained, but it did not work. Genshi was still looking for data in old .egg.

What I did was the following:

  1. rename all Trac-0.11xxx.egg folders into Trac-0.11xxx.egg.old so that I’m sure they will no longer be used
  2. install trac using apt (“sudo apt-get update; sudo apt-get install trac”)
  3. That’s it (F5)

Installing it through “easy_install” was a real nightmare. Last version was installed, but old egg was still valid, and genshi looked for info into old egg, renaming it only generated errors… => I removed all eggs and make a clean install using apt and it worked.

Removing python eggs with easy_install

I did not found how to remove eggs using easy_install, documented procedure “easy_install -m Trac” did not work and returned an incomprehensible message. I don’t understand why they do not simply implement a “–uninstall” option, this would make easy_install… easier!
Thus I changed egg names as described above (appending  ”.old” suffix)

sources

  • http://trac.edgewall.org/wiki/TracUpgrade
  • http://www.gossamer-threads.com/lists/trac/users/38794
  • http://peak.telecommunity.com/DevCenter/EasyInstall#command-line-options

fenv feedback

Monday, September 22nd, 2008

I’ve spent more than a week on fenv specs, writing development guidelines, and what I feel is that I’m stuck in too much details.

Keep in mind this golden rule: goes from general to details  (and not vice versa).

I applied this, but not sufficiently. Instead of trying to finish core_component, I will draw a raw picture of HTTP GUI and use it to finish core_component doc.

Make a documentation quite generic and allow developers to have freedom. If I make too many restrictions on development, I won’t find any freelance. => place incentives on restrictions, and do not do programmers’ jobs. Keep in mind this rule too “I don’t care how it works, provided it works”. Well do not appy it too strictly either, but think of it (not too much details).
Core_component needs to be detailes since another app will rely on it, but not GUIs. => From general to bottom, make a quick guide (1 week left only).

QC4Web – management specs

Wednesday, September 10th, 2008

I’ve just finished “QC4Web – technical specs” post, please refer to it if need be.

context

I’ve developed qc4web entirely on my own, without any external help. This was the deal. I simply wanted to prove myself that I create a profesional application on my own, and I did it. QC4Web is far more professional than 95% of all websites. => challenge was 100% technical

Now what? Now I know that I can develop, I have the skills. But I also know that it’s very long to do everything on your own and it’s not what I want in the end. But honestly I knew it, when it comes to technique, I am extremely good, almost nothing can stop me.
Now new challenge is 100% managerial: will I manage to manage people? This is facilenvoi story.
If yes, then realgood for me in the future, if no, then no good at all (I don’t want to code all my life…)

steps to do in any project

First, you must know where you go.

  • make a brainstorming, and list all your app. specifications
  • then prioritize them (knowing that when implementing, new features will come in any case)
  • then go in deep details with first priority items and recruit people.
  • for all these items, create tickets that developer must solve/implement, and make payment on this ticket perspective. Once one priority level has been dealt with, go to the next.
  • your job here is to supervise, ie. to ensure work is done, and done correctly (=> with new developer, review its code thouroughly, making suggestions, then spend less time on this and try to recruit sbdy else for another feature, or to go on sthg else too)

Once you know where you go (ie. the overall picture + the zoomed picture of first level) do the following:

Communication & design are key. Both must be dealt with at the very source of the project for it to be successful.

Without communication, information gets lost and project goes nowhere.
Without design, project does not look pretty, you do not want to work on it, you’re not motivated => project development is slow (yes, l’habit fait le moine)

Therfore, here are the steps that must be set first, with any project:

  1. create a wiki + make your email address known to all
    Wiki will be the common place to share ideas, where they born and may be will be implemented. It must be the living memory of the project
  2. create a ticket mechanism and use it for each new feature, bug and so on.
    Each time spent at work is done for something. Well this ticket will help you keep in mind the purpose of your current job (=> not to get lost on “why was I doing this?”) + you can comment your work
  3. create an svn repository (+ manage user rights)
    This is key! You never know what happens, files can be deleted, you may want to reverse to an old version because your development led nowhere…
    Important too is to always comment all your commits (make clear reference to corresponding tickets) and do not hesitate to create tags — ie. revision outputs)
  4. create a working environment that is testable within 3 minutes
    Necessary, you must be able to see your changes or update a version immediately
  5. Simplify debugging: implicit is worst than explicit (=> throw exceptions) + avoid all doublons.
    Make it possible to activate and desactivate debugging with a single variable (cf. config.ini with qc4web) + always output your debugging on a nice way (ie. <pre> node, with colors and so on) so that it’s easy to debug (debugging in itself is not easy so if you make it harder, you go nowhere)
  6. create design (even if temporary) with nice colors, fonts, size…. so that you do not need to turn your screen or mousewheel 50 times to see the information you’re looking for

Now: recruit!
The more we are, the greater things we can do

Installing Trac on Debian with Apache2, mod_fcgid

Thursday, June 5th, 2008

I followed Trac instruction installation as you can find them on trac’s website (see debian specific instructions) and as described in my book.

Anyway everything worked fine until the very last step, ie. when you create your project and go into your web browser to log into track.
All I got was a page with the list of projects, and when i clicked on my project, I ended with an apache error: file not found.

First things first, if you bypass Apache and use Trac own server (launch “tracd –port 8000 /path/to/your/project”) and connect to trac through your webbrowser (www.hostname.com:8000) it works!

But each time I tried to use apache instead (either through cgi or fastcgi (.cgi and .fcgi resp.)) I ended in an error.

Then I looked at apache error log (/etc/log/apache2/error.log) and found a nasty error msg: [error] script not found or unable to stat: /path/to/trac/binaries/cgi-bin/trac.(f)cgimyprojectname
It looks like we have a problem with the location of my projects.
In apache http.conf, I defined the following env variable: SetEnv TRAC_ENV_PARENT_DIR /path/to/my/projects

TRAC_ENV_PARENT_DIR is used when you want to use trac with multiple projects.
To try to find the source of my error, I commented this variable and defined the variable dedicated to handle a single project: SetEnv TRAC_ENV /path/to/my/project
I restarted apache2 and now I have at least errors showing up! An exception telling me that I should have made my project folder writable by apache user (www-data) as explained in trac installation document (but not in my book).

Once “chgrp -R www-data trac” and “chmod -R g+w trac”, a quick refresh on webbrowser and it works! yes
It’s not a complete victory though, since we still need to deal with the multiple project variable, and displayed html has no css… ;(

A quick look at apache error logs, and we find the same error: [error] script not found or unable to stat: /path/to/trac/binaries/cgi-bin/trac.cgichrome
Well it looks like we still have a problem with our path.
One more time, all this situation is really strange because everything works fine with tracd webserver.

I searched the web for my error msg and found a matching entry in an irc conversation. The solution that seemed to work was for the guy to use mod_python instead of fcgid. Since I am more thant fed up with this problem, I’ve decided to give a go to mod_python solution. Therefore I did the following:

  1. installed mod_python (apt-get install libapache2-mod-python)
  2. edited my matching httpd.conf file for my website (located in /etc/apache2/sites-available/ folder) and added the following entries
  3. <Location /projects/myproject>
    SetHandler mod_python
    PythonInterpreter main_interpreter
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnv /var/trac/myproject
    </Location>
  4. Then I restarted Apache, mod_python was working but I still got no css loaded (chrome failed to load)
  5. I refered one more time to official documentation to find out that you may need to specify a value for environment variable TracUriRoot that must match your uri in defined in your <Location> node
  6. I added it:
    <Location /projects/myproject>
    SetHandler mod_python
    PythonInterpreter main_interpreter
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnv /var/trac/myproject
    PythonOption TracUriRoot /projects/myproject
    </Location>
  7. restart apache2 (/etc/init.d/apache2 restart)
  8. refresh your browser and it’s working! Great.

Now we need to deal with the multiple project handling. In my httpd.conf file, I replaced “PythonOption TracEnv /var/trac/myproject” with “PythonOption TracEnvParentDir /path/to/my/projects”.
I’ve restarted apache, refreshed the browser (don’t forget to clear cache…) and it works!!!

At last! what a pain it was… Thank god anyway, it’s working now.

What’s the conclusion of all this? Always goes back to documentation from the source (and do not trust religiously third party docs).

PS: I suppose this god damn TracUriRoot was the problem I had using fcgid where I should have defined it too using SetEnv directive in httpd.conf, but having lost enough time on this, I will stick with mod_python

[sources]

  • http://trac.edgewall.org/wiki/TracModPython (trac official documentation on mod_python)
  • http://trac.edgewall.org/wiki/TracInstall (trac official installation guide)
  • http://blog.headlondon.com/2006/03/21/trac-install-on-debian-sarge-ppc/ (good tutorial on installing trac on debian)
  • http://www.dscpl.com.au/wiki/ModPython/Articles/GettingModPythonWorking (good tips to check mod_python is up and running)
  • http://pacopablo.com/irclogs/2006/11/27 (irc backups where I found people with the same problem — look for “trac.cgichrome”)

Trac Configuration

Don’t forget to restrict access to svn files through trac using “Require valid-user” apache directive in .htaccess (read ebook instructions)

Since Trac0.11 you can restrict access to wiki pages too. Refer to http://trac.edgewall.org/wiki/TracFineGrainedPermissions for more details (http://trac.edgewall.org/browser/trunk/sample-plugins/permissions/authz_policy.py).
Problem is that it uses a separate auth file => don’t forget to update it with new users… (and to start all your wiki pages with PrivateXXX) (more…)

Steps required to execute a task

Monday, June 2nd, 2008

Here is the sequence of events including the steps required to execute a task:

  1. Raise a ticket (trac)
  2. Target to a milestone
  3. Assign to a developper
  4. Create a branch (svn, named after the ticket id)
  5. Make the changes
  6. Merge into the trunk (in merging comment, refer to related ticket id)
    The decision to merge should be based on one question only “is the feature complete?”. If the answer is positive, we should stop coding, commit and merge. We should not be tempted to overdevelop a feature or re-use a branch – once we have commited the changes and merged into the trunk, then the branch should be discarded or even deleted.
  7. Remove the branch
  8. Resolve the ticket

Make sure you don’t skip any of these steps.

Learning from errors

Monday, June 2nd, 2008

What errors led me to failures on former projects?

  • doing everything alone
  • not communicating
  • not investing money (linked to doing everything alone)

With all my new projects, find somebody to work with. Do not do it entirely on your own. Communicate, share, hire.
Consider outsourcing if you cannot hire. But if you can do it, sbdy else can do it too! => let him do it, and your job is to review what’s done, think of new ideas, communicate to make buzz, increase sales and so on.

Do not hesitate into investing if need be.

Remember: “focus on getting things done” rather than doing everything

Project management: Hello World!

Monday, June 2nd, 2008

Hi, we are June 2nd, 2008, and since I’m creating my company2.0, I’ve decided to set up a blog, in order to capitalize on experience, relating to project management.

A series of articles will follow, relating my thoughts, suggestions, advices, mistakes, good practices and so on…

I hope wheels I am throwing are gonna roll on, faster and faster.
Good luck & chears!

Remy
ps: don’t forget “Le meilleur reste à venir”