Not to step on any toes, but, the package that I am in the process of turning live next week -- and will submit to the community, is very similar.
Due to a number of reasons, my package has a few additional fields in the backend which I probably won't include because they are very specific to a particular project, but will release most of the general things publically.
Some of the features are:
submission form, RSS feed of the 10 newest links or last 15 days, New Links for last 15 days, Top 10 Rated Links, Top 10 links that have been hit.
It keeps track of ratings (with a little anti-cheating protection), keeps track of outclicks, orders links based on priority so that you could change the priority of links you wanted to appear higher in the list overriding alphabetic order.
Links must be approved and there is an Approve, Approve with Email notification, Decline, Decline with Email notification.
I was going to base it on categories, but couldn't get the api to do what I needed it to do and needed to get it working for a project.
It does NOT use much of the OpenACS framework yet, but it will shortly. I opted against using CR for the backend currently, but am using CR for some features.
It was designed with Google in mind so the links are clean and don't use the ? or & in them.
It currently allows you to set up multiple levels of categories and subcategories, and you can set whether a category is allowed to receive submissions.
I have an external routine which I will work into OpenACS that checks 1/14th of the database every night for bad links, redirections, etc. Currently written in perl and run as a cron job on the php version. I am debating whether this should run in the OpenACS scheduler or stay external.
Integration with search, pagination, and permission/editor handling hasn't been finished yet. I might turn it live before finishing certain features to see how things need to work from an administrative standpoint.