How do you maintain a community change log? - php

I'm looking for a change log / features request program my client can use to see where I am at with the development. Trac looks sexy (http://trac.edgewall.org/) but too complex for what I need.
Very simply, the client needs to be able to order tasks and for us to be able to sort them and keep a record of everything that is going on.
We could update a static file or something, but that seems a bit err time consuming and not systematic enough.
What do you use?

Basecamp is a pretty slick project management solution: http://basecamphq.com
I've used this or trac depending on the project. My 2 cents :)

I'd use Trac even for a small project since it allows you to disable most of the advanced features if you don't need them.
First, whole pages aren't shown at all if you remove a user's permission to view them. So if you e.g. don't like the "Roadmap" page, just get rid of it. There is a whole list of possible permissions in the trac help.
Second, Trac even allows removing ticket fields like priorities, resolutions, severities by just deleting all possible options for them in the administration panel.
Using these tricks, you can simplify your Trac a lot but still keep the usefull stuff.

As a bug-tracker, I am using Mantis :
it is not too hard to use (our clients are using it OK, even if they are not programmers)
it does the job ; tracking bugs, at least, with what functionnalities you could expect
it is written in PHP, which is great if you are yourself working with PHP : it means you already have servers that can host it, and that you will know how to solve problems if you encounter some (that's one of my problems with Trac : I don't know anything about Python, to, when there's a problem, I'l literally stuck... )
also, if you take a look at their blog, you will notice there have been some new versions this years, which means it's still under development (which is better than using an old tool noone cares about anymore ^^ )
There's a demo available, btw.

Related

Technique behing creating a google wave like asynchronous web app

I want to try creating a canvas were multiple users can type and edit for brainstorming etc. I am thinking of php as backend. What are the technique used for it? For example, lets say its
pure text. How do we update the text like in the google wave(b4) and in google doc?
Is it just using websocket(or js pooling) and updating the text file? or are there any
better logical way to solve this issue?
Well, its not as easy as it is said in Brad's answer but he is partially right. You will definitely need WebSockets today to make it happen. But logically, it is not that simple to create a collaborative environment. There are issues like broadcasting changes of every user to every other user viewing the same document. Then you will have to make sure that every user gets to see exactly the same thing no matter who changes what and when. This gets difficult when multiple users are working on the same document collaboratively. There can be conflicts while merging changes of one another.
As far as PHP is concerned, language is not really a problem. Its how you handle the above stated problem.
Google released its research and engineering details on Google Wave (I guess after abandoning the project). This link might be some help to you: http://www.waveprotocol.org/whitepapers/
Websockets are the way to go for this. However, they are difficult to implement in PHP, and not supported by many browsers as of yet. You can do long-polling of AJAX requests pretty easily with PHP, but it can be quite a waste of resources.
This might not be what you are looking for, but I'd suggest changing your server-side technology. You can use Node.js with Socket.IO to easily use Websockets (or seemlessly emulate them for browsers that don't support them). This will provide the fastest method for pushing data to your users.

Are there comment system/user loggin type modules through PHP API/Python API outside of CMS?

I'm primarily using Drupal and am considering moving away from CMS. If I were to build my own platform could I integrate modules like commenting systems, user login, etc. through a PHP/Python API? What would be the proper steps/good places to look/good tutorial on this? Would I have to build all of my own tables manually to suit the needs of such custom modules? I'm wondering if this would even be possible with out having to hard code all of this by hand? Thank you.
You can drop the Disqus commenting system into any site. Same with Facebook Comments.
First of all if you are considering moving away from CMS than you should consider using some sort of framework but with time you will come to idea that you need your own shit in order to be satisfied.
Second, subject you are trying to decipher is a little bit more complex than just writing it down here.
I would suggest you to first think what do you need. What is your main goal with it or what are you trying to accomplish? For example in meaning of commenting, if you want the truth nor PHP nor Python are masterpieces. Why not to consider Node.JS for that?
I mean, web is becoming real-time more and more. Now days we have scripts or to be more precise, pieces of art such as Socket.IO who can with help of Node.JS handle large amount of traffic without any problem. Something nor Python nor PHP can do.
Some stuff you will need to code by yourself but most of the time you just need to code "architecture link" between one versus many features. Eg. take some code and adjust it to be able use it from your own framework or whatever.
As far I see it. I like to do all crucial parts by myself but for example there is Zend Framework and you can use ACL + Auth library and start from there.
Hope this makes some sense. Cheers!
Comment systems
Services
Disqus
Intense Debate
JS-Kit Echo
Chirrup
InstaComment
Have a look at the comparison.
Self-Hosted
Commentator

Tips for building a site like stackoverflow

Not as whimsical a question as you might expect - If you have an average web developer (we'll say his name is "Bob") with a fair amount of php/mysql/jquery/ajax/etc knowledge under his belt, and you wanted to recreate a site like as dynamic and as complex as SO from scratch, what are some best practices, and how long (hours or days) would you expect it to take to get it to a fairly stable beta?
I ask because I'm working on building a site (admittedly completely different, but the workload I imagine will end up being comparable), and it just seems like it's taking forever. It's been about a month working it no less than a few hours a night and it's coming along, but development just seems to escalate exponentially. Every new idea or button spawns a whole range of other work projects.
I try to use pre-made libraries and open source projects when I can, and I've looked into using CMS's like Drupal/Joomla, but honestly so much of custom sites are, well custom, that using a visual CMS just seemed to hold me back.
Being a paycheck to paycheck kind of person, I couldn't afford to pay someone else to help, so beyond volunteer work I'm more less on my own here to make the site. (We do have a microscopic community of willing testers)
Because I know it, because we aren't planning to charge any fees I've been building the site on top of PHPBB3. (provides the user registration/authentication, a database API plus functions for security and a full featured templating system and a plethora of other features.. Oh, and a FORUM, heh.)
I use libraries like jQuery+UI for the client side interactions.
I try to make things as modular as possible, so if I need to rewire the whole thing it wont be a terrible chore, but I worry that my lack of experience in major projects like this is going to be fatal to the site's success.
What lessons can folks who have been here offer, and what kind of timeline should I realistically expect to be looking at here?
but development just seems to escalate exponentially. Every new idea or button spawns a whole range of other work projects
This is what's causing it to take forever. You need to one or two things, preferably both.
Figure out your desired feature set, and stop there. Resist the urge to expand your workload with every new idea. It's hard, I know.
If you can't manage #1, then you need this even more. Release quickly and iterate. It's better to get something working done, and then consider the rest of it as improvements rather than original features. Even if the workload doesn't change, your mindset will, and you'll feel a lot better about it and more motivated. As an added plus, if you have users, they'll help you figure out which new features are actually worthwhile.
I wouldn't recommend a CMS. I'd recommend going with a framework instead, perhaps something like CakePHP or Codeigniter. They already include a ton of libraries built in and ready to be used. Makes things go way faster once you get the hang of it. You may still need a JS library or two, but as long as you use the framework as much as possible, you shouldn't have any trouble if proper practices are followed.
My advice: instead of building a new site from scratch, propose a new site within the Stack Exchange network, at http://area51.stackexchange.com.

PHP - Cleanup the Junk

I have inherited a very messy project. There are at least 3 versions that I can tell in it.
Is there a utility that can trace the PHP code from the main index.php so that I can figure out what isn't being used and what is, or am I stuck doing a manual cleanup?
Thanks
*Update*
I don't think I've been clear about what I'm looking for, that or I'm not understanding how the products mentioned work. What I'm looking for is something that can run on a folder (directory) and step through the project and give me a report of which files are actually referenced or used (in the case of images, CSS, etc).
This project has several thousand files and it's a very small project. I'm trying to clean it up and when I do a "search in files" in my IDE I get 3 or 4 references and can't easily tell which one is the right one.
Hope that makes it a little clearer.
Cross referencing software really lets you explore which functions are used for what.
PHPXref is quite good..
For example Yoast used it to cross reference the Wordpress PHP code. Take a look at the Wordpress example of how powerful it is.
For example, start by browsing the WP trunk. Click on some of the file names on the left and observe how the required files are listed, along with defined classes and methods, etc., etc.
There are several utilities that can do this, what first comes mind is Zend Studio's built in Optimizer that will run through your files and issue notices on a per file basis, including unused variables, warnings, etc. Alternatively, you can run your program in E_STRICT and PHP will notify you of some of your issues.
Be very careful of such cleanup tools, especially in PHP or Javascript. They work reasonably well in languages like Java, but any language that allows Eval() can trip an automated tool up, sometimes in devilishly clever ways, depending on how clever the original code developer thought they were.
You need the inclued extension. You can generate include graphs using GraphViz, see below for example code.
There are some useful examples on PHP.net: http://www.php.net/manual/en/inclued.examples-implementation.php
You might want to check xdebug's code coverage, possibly as an auto_append. However, itÅ› rather limited and it would require you to have either 100% test-cases (which I doubt as you say the project is a mess), or the tenacity to go through every possible action on the site, and even then you'll have to apply good judgement whether you can remove a portion of code because it isn't used, or leave it there because a certain condition just hasn't been met yet in your cases. On a side note: stepping through the code with xdebug's remote debugger has really helped me in the past to quickly get the different mechanisms & flows in unknown projects.
I would try opening the whole project in NetBeans PHP, its a great tool which we use for huge projects. You can easily see warnings and notifications and also follow usage of functions/classes easily. Try it!
I would recommend against automatic cleanups and the likes. Even if the code seems to work afterwards, I wouldnt sleep very well at night...

Client's panel for my website

As a freelance developer I deal with clients mostly by contacting them via email/im.
That isn't working bad, but I'm thinking of a more professional approach with client communication panel for my website.
Client basically will be given login/password and access it to see previews and comment them.
I'm fine with writing the application myself, but since so many developers have similar things on their websites, maybe there already is some solution that I could just reuse?
//edit
well, I should probably explain myself a bit clearer.
I'm fine with showing websites as they're being properly built/coded.
It's just communication and design stage that I'd like to move from mail/im to some simple web application.
Theoretically project management tools would do, but they overly complicated and I need just simple functionality to comment (in threads ideally) and attach images. Probably will want more later, but that's all I can think of now.
It might already be 'overly complicated' but you could take a look at Request Tracker: http://bestpractical.com/rt/
"Accessing it to see previews" would mean vastly different things to different people - you probably just want to do something like having a password-protected preview area - if you're making websites it could live at http://preview.example.com for example.
There are various sorts of systems that might to the second part though, a Wiki might work, or FogBugz, or Trac.
I found collabtive being a brilliant all-in-one software.
Got all I really needed.

Categories