• Advertisement
Sign in to follow this  

Your input about your programming process for my project

This topic is 4041 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I am currrently in the process on design a project managment system for tracker progress on programming projects. Right now I am trying to think of what types of "Issues" programmers have to deal with and what information they need for each type of issues. right now my list consist of these three:
  • Tasks
  • Bugs
  • Enhancements
I am also thring to think how things link up. For me, i think Bugs and Enhancement will consist of one or more task to complete, and task will consist of one or more task to complete and issues will consist of 1 or more task to complete as well but there will never be 1 issue theat require another issue to be completed to fix the first issue. Another thing i am think about is what information a bug/task/enhacement needs. For instances these are thing all of those will need:
  • ID
  • Creator
  • Assigned to
  • Issue
  • Created On
  • Due Date
  • etc...
Any help of any of these thing would be greatful, i want ot build a very complete system when it comes to task/bugs/enhncement/etc.. so if you have any additions to "issue types" linking between "issue types" and information all and information only a certain "issue type" needs [Edited by - RyanZec on January 29, 2007 5:12:06 PM]

Share this post


Link to post
Share on other sites
Advertisement
Let me go into some detail about what I am talking about.

Issue Types



There are 3 major issues that I can think of that are somewhat different. The first type is a task which is basically the main issue, ever other type of issue will have atleast one task. The second type of issue it a bug. Now a bug. The last type of issue I can can of is an enhancement.


Link Between Issues



The top level of the linking structure is going ot be calles "Issue". Everything is going to be linked to one and only one issue. Now Issues can have have any issue type linked to it link the following:



  • Task issue type links to "Issue"
  • Bug issue type links to "Issue"
  • Enhancement issue type links to "Issue"
  • etc...


An Issue can have one or more tasks linked to it but an Issue can only have one bug issue type or one enhancement issue type linked to the one Issue link the following:



  • task1/task2/task3 l;ink to Issue1
  • bug1 links to Issue2(bug1/bug2 links to Issue2 - not possible)
  • enhancement1 links to Issue3(enhancement1/enhancement2 links to Issue3 - not possible)
  • etc...


The last linking I can think of is that bugs and enhancements can have mutliple tasks linked to them but can not link to each other as in the follow:



  • task1/task2/task3 link to bug1
  • task1/task2/task3 link to enhancement1
  • bug1 links to enhancement1(not possible)
  • enhancement1 links to bug1(not possible)
  • etc...


One thing to note about enhancement, they are basically the same exact thing as a task but they have not tasks assigned to them by default. this will allow someone to reveiw the request and if they fell it is not possible they can decline as and say why or if they fell it is a good enhancement they can then assign tasks to it.


Issue Type Information Needed


Task



  • id
  • linked issue id
  • created by
  • assigned to
  • created on
  • title
  • description
  • goal completetion date
  • actual completion date
  • priority

Bug



  • id
  • linked issue id
  • created by
  • assigned to
  • created on
  • title
  • description
  • goal completetion date
  • actual completion date
  • severity
  • tasks ids to complete bug
  • priority

Enhancement



  • id
  • linked issue id
  • created by
  • assigned to
  • created on
  • title
  • description
  • goal completetion date
  • actual completion date
  • priority

Any input you can give me on any section here would be greatly helpful

Share this post


Link to post
Share on other sites
Why bother? From what you've presented, your system offers nothing in addition to the features provided by existing issue tracking tools (BugZilla, FogBugz, CVSTrac, Trac, Scarab, Jira, et cetera, et cetera, et cetera).

Furthermore your method of giving task/bug/enhancements slightly different fields is going to be annoying, and you don't need to have a lot of fields because that just becomes a pain to manage and fill out, and you end up with most of the "extra" (or "apparent duplicates" like severity and priority) going unused.

What's wrong with an existing system?

Share this post


Link to post
Share on other sites
Quote:
Original post by jpetrie
Furthermore your method of giving task/bug/enhancements slightly different fields is going to be annoying, and you don't need to have a lot of fields because that just becomes a pain to manage and fill out, and you end up with most of the "extra" (or "apparent duplicates" like severity and priority) going unused.
Actually severity and priority can be quite different, and I wish that the system we had at work distinguished between the two.

So what do you call a part of the system that has undesirably slow performance, but actually works correctly? I would say that it is neither a bug, nor an enhancement. We use the term 'Anomaly' rather than bug, and let this cover 'performance anomalies'.

Share this post


Link to post
Share on other sites
Why, I ask you why not? It not like right now I am under heavy pressure to get a Project management system up and running and it is also great experience to build one.
Now about the currently systems:

Bugzilla:
Not a bad system at all but what we need is going to be a little bit more in-depth with tracking other information beside what bugzilla tracks.

FogBugz:
After taking a look at it seem very nice (the interface at least) however I don't like that price on how they price per user and not one price for the software itself. That is my 1 single biggest problem with some of the big project management system pricing (FogBugz, GForge, SourceForgeEE) If I were to use this I would need right now about 10 users which would cost about 1000 dollars, and for that amount of money, I be better off written my own where I could have 1000000 user for the same price.

CVSTrac:
Again, this one is ok; don't like the interface that much but again there is more information I am going to need to store/track.

Trac:
Not bad but the biggest problem with this is it is written in Python. If I want to add or change something it is going to be a pain in the ass for me to do it because I have never touch a piece of python code in my life, I want to stick with PHP and MySQL.

Now of a few of them all I might want to do it to add some functionality and change some stuff but I don't want to have to learn how there database structure is setup and chances are some of the functionality I am going to want will require portions of the database to be rewritten and there is just a point where it would be faster to just scrap portions of the code an database and just rewrite it and for this reason is would be a lot better to just write my own application. Personally I don't want to work on open source code because generally I don't like dealing with other peoples code, I have to deal with poorly write undocumented code at work for 8 hours a day, I would like to not have to deal with it at home too. Some of the major benefits are:

I will know that code and database inside out because I created it.
Add and change things will be a lot easier because I will know the code and database structure a lot better and change the database/code with will easier because I will know if I need to change anything else so I don't break other things.


These are my reason for wanting to build a project management system form scratch and the main one is because I have the time to build one and not under pressure right now to get something up and running (for me the open reason to ever use code already written is A) The code is near perfect for what you need, nothing existing is "near prefect" for what I need, and B. You need something now and can't afford the time to build it yourself (I can afford the time to build this)

Oh about the severity and priority, they are quite different (I guess I would have worded better). Priority is basically a way to list what needs to get done first. Severity is only is bug because it describes how severe the bug is (like it crash program, make X portion or program to give incorrect result, etc...)

Share this post


Link to post
Share on other sites
I'm going to disagree. I think that priority and severity are very much related. If a bug is severe then it should be given higher priority. Bugs are just features that you want to remove from your program after all.

Share this post


Link to post
Share on other sites
Have you looked at the current source code for Bugzilla? Assuming you can build a system from scratch faster than you can adapt an existing one is only reasonable if the existing systems are all badly programmed (this is not the case). Other than that, it's an idiot's bet. Don't reinvent the wheel.

Share this post


Link to post
Share on other sites
For the most part, yes I would agree the higher the severity the higher the priority but I don't think this will always be the case. For instance, I am programming a game engine and there is a bug in the sound system when you enable something in the sound system and it crashes the game. For me that is a pretty severe bug in the sound system but right now I don't need that feature in the game to make the prototype of the game to show to clients so I would put that as a high severity but a low priorit because getting the fixed is no major, I can just disable the feature for the time being. This is one case where those 2 can be quite different.

Share this post


Link to post
Share on other sites
Okay, I haven't read everything totally, but I'll reply to the bits I skimmed over:

Severity and Priority are a little different, but not enough to warrant a distinction between them. Users will just get confused, use them interchangably, and eventually they will merge in meaning anyway. EDIT: in reply to RyanZec's last message, if you don't care about the bug then it's not very severe, right? Priority and severity are close enough in meaning to treat as one and the same. The very fact that people think this way should demonstrate that.

There are plenty of tools out there already, but there are some features I'd really like to see (all in one package), that could distinguish yours from theirs;
* Sub-tasks, i.e. tasks can be split up hierarchically.
* Proper distinction between bugs, tasks and enhancements - they're not equivalent but with a different tag (you don't "fix" a task).
* Proper linking between tickets and SCM revisions - Trac is nearly there, but it's a little flaky.
* Most importantly, some form of standard templating/abstraction system. Our current project is using Trac, but it's an absolute nightmare to integrate into the rest of the website's look & feel. A template engine would fix this nicely, and AFAIK there aren't any issue trackers that do this without defining their own new proprietary standard.

Aside from that, please share existing terminology with some existing tool, otherwise you'll alienate and confuse users.

Hope I've given you some food for thought :)

Share this post


Link to post
Share on other sites
Well, I'd also recomend using or modifying an existing solution. It really is a lot of work to create something thats stable and usefull.

I worked at a company who used a proprietary system which was built as a customization on top of Microsoft CRM (Customer Relationship Management.) Said company specialized in customizing CRM for other clients, so the development was in-house.

Honestly, it was a pretty solid system that fit exactly to our workflow, but even with the CRM software as the backbone of our customizations, and devs who knew every in and out of it, it was still many, many man-hours of work. Without the backbone already done, it surely would have been thousands of man-hours.


---

Whether you decide to roll your own or modify an existing system, I do have some advice however:

1) Make sure that your objects keep a complete history.
2) Don't just think of bugs and tasks coming down from the top, also think of bug reports and feature requests coming up from the bottom and how to easily turn such requests into bugs/features for the devs to take action on.
3) Support bulk editing operations: When a dev has to push several bugs back a week, you'll save a ton of time if he can do it on all at once.
4) While severity and priority are related they are not equal: don't treat them that way. Its entirely possible to have a show-stopper bug that's simply so rare that its priority will be low. Severity describes the impact of the error, while priority is more about (human) resource management and scheduling in relation to other bug fixes.
6) Choose labels carefully to limit ambiguity. As another poster said, a task is not "fixed" its "completed." When its possible and doesn't introduce an ambiguity use the same labels. Also be weary of overloading labels with more than one meaning in different contexts as this can also lead to ambiguity.

Share this post


Link to post
Share on other sites
Well the thing is I can't find a descent Open Source project that enough Solid cod efor me to want to learn there code and database structure. I am not to worry about the amount of time I will need to put into this to make the backbone sold and what not, and yes i know it will require alot of time. The project management systems that I like just cost way too much for me to buy and build off of, I don't have the money companies have. This is why i am building my from scratch.

Thanks you all for the comments and ideas you have posted about this project and hoep I will continue to recieve more.

Share this post


Link to post
Share on other sites
"Most importantly, some form of standard templating/abstraction system"

This is the last thing from my mind, hell it not even on my mind. If someone is looking for a project management system find one that has all the feature they need at the pright price but there is not template system to intergrate you style to the look and fell on the interface, that is just odd to me(you should be able to just edit the css if you need it that bad). Another reason why I am not worried about that is becuase I am designing this for company/team use only. Basically this is not something I think normal user to your website should have access to, the only user that don't work for the company/team that would have access are tester. I mean if you wanted to you could give users to your site access to you but that is your choice and if you really need to have the system go with the flow of your current site, you can edit the graphics and css, but that would not be something i would support, I mean it going to take me some time to create a nice and easy interface since my css skills are not the highest anyways. personally on my groups site, only testers will have access to the project management system to report while testing, other than that only poeple invloved with development of any product will have access to the project management portal. Once a product goes live there will be a seperate forum on the main site which user can report bugs that forum will direct input data into the project management system without have to be in the project management system.

Share this post


Link to post
Share on other sites
Quote:
Original post by RyanZec
Well the thing is I can't find a descent Open Source project that enough Solid cod efor me to want to learn there code and database structure.

Whaaa? What don't you like about the Bugzilla codebase?

Share this post


Link to post
Share on other sites
here are some more answer to your feddback

1) Make sure that your objects keep a complete history.
--If you could please exlain this a little better, not quite sure what you mean by "objects". I am going to task as activity on a task/bug/enhancement but keep a database with note of them if that is what you mean, if not please let me know.

2) Don't just think of bugs and tasks coming down from the top, also think of bug reports and feature requests coming up from the bottom and how to easily turn such requests into bugs/features for the devs to take action on.
--again not 100% sure what you mean by this. this seems more of a project indenpent issue if you mean don't just worry about the task on the top.

3) Support bulk editing operations: When a dev has to push several bugs back a week, you'll save a ton of time if he can do it on all at once.
--This is a very cool idea, i will get the functionality in whee it will help

4) While severity and priority are related they are not equal: don't treat them that way. Its entirely possible to have a show-stopper bug that's simply so rare that its priority will be low. Severity describes the impact of the error, while priority is more about (human) resource management and scheduling in relation to other bug fixes.
--I am 100% with you here

6) Choose labels carefully to limit ambiguity. As another poster said, a task is not "fixed" its "completed." When its possible and doesn't introduce an ambiguity use the same labels. Also be weary of overloading labels with more than one meaning in different contexts as this can also lead to ambiguity.
--Yea i know this is something i willl thing about when creating labels

* Sub-tasks, i.e. tasks can be split up hierarchically.
--This is going to be implemented

* Proper distinction between bugs, tasks and enhancements - they're not equivalent but with a different tag (you don't "fix" a task).
--thisThis is going to be implemented

* Proper linking between tickets and SCM revisions - Trac is nearly there, but it's a little flaky.
--not something i was thinking about but a very nice feature to have.

* Most importantly, some form of standard templating/abstraction system. Our current project is using Trac, but it's an absolute nightmare to integrate into the rest of the website's look & feel. A template engine would fix this nicely, and AFAIK there aren't any issue trackers that do this without defining their own new proprietary standard.
--I have alreasy explained this in a previous post.

Share this post


Link to post
Share on other sites
Quote:
Original post by Sneftel
Quote:
Original post by RyanZec
Well the thing is I can't find a descent Open Source project that enough Solid cod efor me to want to learn there code and database structure.

Whaaa? What don't you like about the Bugzilla codebase?


I will take a look at there codebase when i get home from school.

Even i if like there codebase i still very well may not use it. I know reinventing the whell it not something i have to do but just becuase bugzilla it out there, does not mean i should use there code as a base. another thing how is there license? If i use there code base can i still sell my product used from there codebase? this is another reason i am wanted to start from scratch, the likelyhood of me selling this software through our company it quite high.

Share this post


Link to post
Share on other sites
Quote:
Original post by RyanZec
Quote:
Original post by Sneftel
Quote:
Original post by RyanZec
Well the thing is I can't find a descent Open Source project that enough Solid cod efor me to want to learn there code and database structure.

Whaaa? What don't you like about the Bugzilla codebase?

I will take a look at there codebase when i get home from school.

Ah. So you didn't even check. You just assumed that Bugzilla wasn't decently coded, based on....what?

Look, if you want to make this from scratch because you think it would be fun to make it from scratch, great. But don't bury your head in the sand and tell yourself that it's a good idea from an efficiency point of view. If you adapt Bugzilla or whatever, you will be adapting the code of people who know more about bug tracking/project management than you do, and will be leveraging their experience. Moreover, if you start from scratch, you'll make many of the same mistakes that they made and then fixed, and you won't necessarily fix all of them. You will, most likely, end up with an inferior system. Which is not a good approach to take if you do actually plan to sell your software.

Share this post


Link to post
Share on other sites
Quote:
Original post by RyanZec
"Most importantly, some form of standard templating/abstraction system"

This is the last thing from my mind, hell it not even on my mind. If someone is looking for a project management system find one that has all the feature they need at the pright price but there is not template system to intergrate you style to the look and fell on the interface, that is just odd to me(you should be able to just edit the css if you need it that bad). Another reason why I am not worried about that is becuase I am designing this for company/team use only. Basically this is not something I think normal user to your website should have access to, the only user that don't work for the company/team that would have access are tester.


Okay, fair enough; if you plan on never exposing a public interface then that's fine. But for open-source software it's generally a thing people would want to do. My team are very disappointed at how difficult it is to integrate many of the tools we're using and have looked at, which is why I suggested this.

And I should mention that I don't just mean look and feel as in fonts and colours (which could indeed be changed via CSS), it's a little more abstract than that; perhaps you should look into templating systems like smarty if you don't know what I'm talking about. It won't take an awful lot of effort, would please those extra few people, and most importantly would be particularly swish. Swishness is important, don'tcha know?

Share this post


Link to post
Share on other sites
Quote:
Original post by Sneftel
Quote:
Original post by RyanZec
Quote:
Original post by Sneftel
Quote:
Original post by RyanZec
Well the thing is I can't find a descent Open Source project that enough Solid cod efor me to want to learn there code and database structure.

Whaaa? What don't you like about the Bugzilla codebase?

I will take a look at there codebase when i get home from school.

Ah. So you didn't even check. You just assumed that Bugzilla wasn't decently coded, based on....what?

Look, if you want to make this from scratch because you think it would be fun to make it from scratch, great. But don't bury your head in the sand and tell yourself that it's a good idea from an efficiency point of view. If you adapt Bugzilla or whatever, you will be adapting the code of people who know more about bug tracking/project management than you do, and will be leveraging their experience. Moreover, if you start from scratch, you'll make many of the same mistakes that they made and then fixed, and you won't necessarily fix all of them. You will, most likely, end up with an inferior system. Which is not a good approach to take if you do actually plan to sell your software.


Think that way, I should just look for opensource stuff and put them together never write any of my own code. What makes you think I can create something as good if not better than bugzilla? Grant you the poeple making bugzilla know more abou the software desgin/tracking process but as I build this I will learn more about this process. I am also working with a software developer how is helping me with this same information. I know I will not be able to get anything close to bugzilla in the next few months but with time I will be able too.

Oh and about bugzilla, there is not way I am going to use it becuase the major part of the code I can find, if not all is written in perl(.cgi, .pl files). I am not a perl programmer, I don't like perl. If I were to use that first I would have to convert the perl files into php files which will take me awhile as i am not familiar with the perl syntax.

Share this post


Link to post
Share on other sites
This is not reiventing the wheel to me either. One of this biggest things I want to do it have very nice links between issues, tasks, bugs, enhancements, etc.. and from what I have seen in the current opensource systems, most of them don't have linking between task/bugs/enhancments(usually the bug has the task information in it, for me the bug will link to a task which will have the task portion of the information to fix the bug). It just seems the way i am invisioning this system, none of the current system would be helpful without major changes and after the changes it wont be close to the same as it was it which case there is not reason to go through that, I should just build me own.

Share this post


Link to post
Share on other sites
Sorry to poke my head in the conversation here, but how many of you game programmers out there have coded Tetris, or cloned some other simple game as your first game? Wasn't that "reinventing the wheel" so to speak? Didn't you learn a whole lot about game programming while doing it? Cut the guy some slack.

While I think the features that he's looking for are out there already in other software suites, and probably coded better/more efficiently than his first or second revisions will be, I say more power to him. If he can create something that he'll use for future projects, and be able to look back on the experience and not consider it a waste of time, then it was time well spent. I'm assuming he'll run into problems that he's never seen before, research them, and figure out solutions that will be applicable to other programs he codes in the future.

Now, RyanZec, let me ask you a few questions though:

1) Is the lack features you mentioned more of an annoyance or a key underlying concept in what you're looking for in a project management suite?
2) Could you do your project management without these features, just at a slight cost of efficiency?
3) Are some already-established systems out there close to what you'd like to see?
4) Could existing features in projects like Bugzilla be extended into the features you want?

And most importantly:

5) Are those features worth the months or years worth of coding time it will take you to implement such a large project? If you suffered through the inadequacies of Bugzilla or another platform for a year, would you learn more and be better off than if you had spent that time on a project management system? A year worth of coding is very, very valuable.

Share this post


Link to post
Share on other sites
Just a few comments:
  • Project management tools must match the development methodology of the project closely or they won't be very useful.
  • Project management, tracking project progress, and bug tracking are all different things.
  • Bugzilla is oriented toward open-source development and it not very appropriate for commercial development environments (IMHO). We used Bugzilla (and Mantis) for tracking bugs and they lacked a lot of necessary features.
  • Enhancements and bugs are basically the same thing. They just have different priorities, thus the exclamation, "It's not a bug, it's a feature!"

Share this post


Link to post
Share on other sites
I don't think this would be a waste of time at all. Like I have said most project that are halfway descent with feature are way too much money. Most Open Source project are either in some other langauge than PHP(Bugzillla is perl and trac is python) or they lack too much stuff. I don't think it will take me years to get a stable first version, it would take me a maximum of 6-9 months to get a first stable version with a handful of features I want( and alot of that time will be spent of interface design(css,ajax) becuase that is were i mainly lack, my php/MySQL is very good).

Share this post


Link to post
Share on other sites
Also Bugs are a bit different from bugs because a bug it a feature that is not working and a task it something that is not there therefor a can't be broken. An enhancement is basically a task. The reason to have a Enhancement Request type(I maybe have been misleading since I never made it clear it was a enhancement request

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement