Archive

Archive for the ‘Freetag’ Category

Freetag is up for Adoption! (Also, a new bugfix release)

February 8th, 2007

After a few years of maintaining Freetag, I’m moving on. It’s been a fun and educational experience, and i’m really happy to have been a part of so many interesting web projects. From what i’ve heard, many web projects have taken Freetag as a starting point for some very cool stuff. Keeping Freetag generalized enough for this purpose was always my goal, and i’m pretty happy with where it went, and the support from the developer community that it’s gotten. I would rather see someone with some more time on their hands take Freetag to the next level. There are some really interesting directions that I never got around to, and it would be cool to see that happen by me stepping out of the way.

Thus, i’m putting the project up on Google Code, and asking for a new maintainer (or maintainers!) to step up and take care of Freetag from here on out. If you’re interested, please use my contact form to send me an email, and explain why you’re interested & qualified to do so, and also where you’d like to see Freetag go.

I know this may come as a disappointment to some, so I’ve spent this morning rolling up some bugs for a quick release to make up for it. You can find it as a Featured Download on the Google Code Freetag Homepage. I’ll still lurk on the Yahoo! Freetag group, and try to keep an eye on the project, but this is probably the last release you’ll see from me, unfortunately. Also, the JIRA tracker will go down soon, after I import the remaining bugs from it into the GCode project tracker. Update The JIRA tracker is now down. Please head to the Issues page on GCode for the old remaining issues.

I may still try and compile a list of web projects that are using Freetag, as i’ve meant to do that for a really, really long time. Lastly, I just want to say thanks for making Freetag a really interesting open source project to cut my teeth on. It was my first OS project, and will likely not be my last. I learned that you should always be kind to your maintainer(s), as things are a lot harder than they look. The good news behind this change is that it should free me up some mental energy for new projects, so keep an eye on my blog for the next few things I decide to work on.

Freetag, Tech

Moving Freetag to SourceForge

July 19th, 2006

I’m in the process of moving Freetag to sf.net, so that I can take advantage of the CVS repository, and also so that I can feel comfortable that progress on Freetag can move on freely regardless of my personal availability (which has been really tight lately). I’m pretty sure that i’ll stick with the Yahoo! Group for now, but reserve the final decision for later. Hope that nobody is inconvenienced too badly during the transitional period.

Freetag, Tech

Freetag v0.250 Released! Minor additions and fixes.

June 4th, 2006

This one has been a long time coming, folks, and I apologize for the delay. This release is host to mostly minor improvements, including a new method or two, but it’s mostly got additions that have been requested by various parties.

Is anyone else out there still on MySQL 3.23? Or is it just me at this point? I am considering upgrading the minimum required version to 4.1. Please send me your thoughts.

Enjoy! Remember to report to me any bugs that you may find.

Freetag, Tech

New Yahoo Group for Freetag

April 3rd, 2006

I don’t have time to administer mailman (it’s apparently been down for months), so I’ve created a new Yahoo! Group to handle announcements and discussion of Freetag. Please feel free to resubscribe, and sorry for the inconvenience.

http://groups.yahoo.com/group/freetag/

Freetag, Tech

Freetag v0.240 – bugfixes & enhancements

December 26th, 2005

I’ve rolled out Freetag v0.240 this holiday weekend, for you to play with and enjoy. I did some limited testing by incorporating it into eatlunch.at, but i’m relying upon the greater user base to let me know about any undiscovered problems.

I think the interesting thing about this release is that people are using and requesting more advanced functionality around tags. This release includes a similar_objects feature that will capture objects tagged similarly to an existing object. Check out the “Similar Objects” sidebar on eatlunch.at:

In ‘N Out’s Page on eatlunch.at

Also, i’ve fixed some problems with the tag combos, and also made some simplified tagcloud functions incorporating the code I posted on my blog a few weeks ago. I also allow developers to pass an extra option to tagobject in order to automatically do updates if tags already exist, which means you don’t have to do a delete-then-add on tag interfaces that operate create/update/delete through a unified text box. It should be even easier to get up and running now.

Also, if you haven’t seen it yet, please go check out my post requesting ideas for Freetag federation. Thanks!

Freetag, Tech

Request for ideas on Freetag federation

December 23rd, 2005

Hi getluky.net readers!

As you might know, this blog occasionally plays host to news about Freetag, the open source folksonomy module that I maintain. Since the beginning, i’ve had grand plans of federated Freetag instances talking with one another to make some interesting connections and give developers some cool tools for connecting applications.

I’ve got some ideas, but I would love to hear from anyone what other concepts are out there, and get some comments about this plan so far.

The basic idea

The basic idea behind federating Freetag installations would be to allow a single query to a master system (probably hosted by me or something) to spread queries out to all the separately-maintained various public Freetag instances out there.

Essentially, you’d search the master system for ‘music’. All databases that use Freetag would then be queried for any objects tagged with ‘music’. The query results would be a mixture of all the stuff from various databases tagged with ‘music’, such as music events on Upcoming.org, spots with live music for eatlunch.at, etc. The system would probably be kinda slow (hey, sorry, I only run one personal server right now. :p), but it would be cool!

The interesting questions are how to implement such a system. These are some of my ideas:

Simple, extensible REST gateway

I could create a fairly flat REST gateway PHP page that would allow for some common queries to be handled by each Freetag instance. Since most Freetag queries produce a list of integer id’s that app developers use internally to access their databases, i’d also provide a skeleton function that a developer would essentially add a SQL statement to, which would collect a recordset of their internal data. The gateway page/class would then run the query locally, and then automatically construct a fairly common XML structure out of the results which could then be parsed by the master.

Creating a Freetag App Registry

I will probably do this in any case, but it poses some interesting federation questions. People email me all the time letting me know that their application uses Freetag. It would be cool to let developers add their app & URL to a list of Freetag-powered applications. I’d be happy to display a logo and link to each one at the bottom of my Freetag page after review for appropriateness.

Anyway, back to federation. This would allow for only trusted, tested Freetag installations to be queried by the master. It would help ensure quality of results, too. For example, if one system just gets too slow and makes the rest of the results tricky, then we could disable that host until the problems go away. I’d certainly work hard to ensure that all responses are adequately parsed for security, but any malicious hosts could be shut down from the master as well.

I know that this creates some problems with fragility (a single point of failure being the master), I’m not sure how a p2p system would work.

The open-source question

I’m not convinced that the code for the master would be something I want to open source like Freetag. I know that hosting the master is more of a service than anything, and i’d probably want to run some contextual ads in the sidebar to cover costs and, in a perfect world, be a way for me to profit from my work on Freetag.

I’m mostly happy with getting more and more sites on the tagging bandwagon. And believe me, there have been far more sites using it than i’ve blogged about, and i’m always happy to hear about the new stuff sprouting up.

Interface

It would be cool to provide an AJAXy interface to this master db, similar to Adactio Elsewhere. I’m not certain that’s the best way to go about it, either, as it’s a remarkable amount of querying over federated systems.

I will definitely be implementing some level of caching, and i’m also liking the idea of displaying and allowing access cached queries via a search interface that essentially uses the GUIDs returned by the federated systems to ensure that updates replace the original records of objects in other databases. It would essentially provide non-slow access to the wealth of interesting data that is out there in Freetag installations.

Terms of Service

Of course, providing such a federated system probably requires multiple parties to be in agreement not only about the technical communications protocol, but also about the ownership and redisplay of content via a master interface.

If it’s not OK with an app’s users to redisplay their content on a master Freetag query interface (or via API), then that app should not be a part of the federated system. Period. Remember, this would probably start as just something cool, but I expect it to consume a LOT of resources and I will almost certainly run ads.

You could look at it as a specialized gateway for crawling a database-backed site, which can also pull interesting metadata that you control for display to end users. Think of it as a tag-powered search engine, that can look directly into your systems. A federated Freetag Base, if you will. If you don’t mind the fact that Google redisplays your website and shows ads on your content, then you probably won’t mind this kind of usage as long as the master properly caches queries and doesn’t run wild. Besides, you can run ads on your own site, to which i’m sure the master interface would provide lots of traffic. Oh, that also would mean you’d have to provide me with a callback URL to which I could provide the object ID of an object that a master interface user could click on to get back to your original site. I’m open to hearing your feelings about this as app developers, as I would want as many sites to participate as possible, but it’s not something i’d want to do for free.

The other party to consider are the end users of the master interface. These users would most likely be addressed with a standard TOS, though.

Conclusion

So, those are my current thoughts. A registration-required network of participating Freetag installations providing a master query engine with a standard interface, defining the format their own data is returned in. I’m sure there are plenty of issues here, so please leave some comments so we can discuss it!

Freetag, Tech

By Request: Tag Clouds with freetag::silly_list

December 6th, 2005

By request, here’s a quick function I whipped up to generate some basic tag cloud HTML from the output of the silly_list function:

function get_tag_cloud_html($freetag, $num_tags = 100, 
  $min_font_size = 10, $max_font_size = 20, 
  $font_units = 'px', $span_class = 'cloud_tag', 
  $tag_page_url = '/tag/') {        
        $tag_list = $freetag->silly_list($num_tags);
        // Get the maximum qty of tagged objects in the set
        $max_qty = max(array_values($tag_list));
        // Get the min qty of tagged objects in the set
        $min_qty = min(array_values($tag_list));
        // For every additional tagged object from min to max, we add
        // $step to the font size.
        $step = ($max_font_size - $min_font_size)/($max_qty - $min_qty);
 
        // Since the original tag_list is alphabetically ordered,
        // we can now create the tag cloud by just putting a span
        // on each element, multiplying the diff between min and qty
        // by $step.
        $cloud_html = '';
        $cloud_spans = array();
        foreach ($tag_list as $tag => $qty) { 
            $size = $min_font_size + ($qty - $min_qty) * $step;
            $cloud_span[] = '<span class="' . $span_class . 
    '" style="font-size: '. $size . $font_units .
    '"><a href="'.$tag_page_url . $tag . '">' . 
    htmlspecialchars(stripslashes($tag)) . '</a></span>';
 
        }       
        $cloud_html = join("\n ", $cloud_span);
 
        return $cloud_html;
 
    }

Feel free to tweak as you please. I wrote the code and tested by adding a tag cloud to eatlunch.at, so I can guarantee that it works. :) $freetag is supposed to be an initialized freetag object.

As a side note, eatlunch.at is horribly unmaintained right now. I’ve got to rewrite it soon.

Wordpress is a TOTAL NIGHTMARE for posting code.

Freetag, Tech, eatlunch.at

Freetag v0.231 bugfix

October 13th, 2005

If you’ve grabbed v0.230, please get this v0.231 update of Freetag. It has a fix for a problem with the $table_prefix option which was preventing some methods from working. I just found it now while working on multiple tag databases for Upcoming.

Sorry for the inconvenience!

Freetag, Tech

Freetag v0.230 Released!

September 27th, 2005

It’s been a long time coming, but the latest version of Freetag is hot off the presses. The changelog is here:

JIRA Changelog PanelUpdate JIRA discontinued, Freetag is on Google Code now.

Some requested new runtime configuration options allow for greater flexibility, including multiple Freetag installs on the same database.

Also improved the docs, and added a small “Powered By Freetag” badge, courtesy once again of Andy Baio!

Have fun, and let me know ASAP if you notice any bugs.

Freetag, Tech

The Freetag JIRA Tracker

July 3rd, 2005

Sorry for the delay in any news about Freetag… there are many good, good, reasons for it, but I know that doesn’t matter to those who are waiting on a bugfix or enhancement!

Anyway, keeping track of these things by email became too difficult, so I applied for and received a free Open Source License for Atlassian JIRA to use with Freetag! If you’ve never used it before, it’s pretty badass. I’ve filed all the past bugs, enhancements, and suggestions I dug out of my email into it for future reference. If you use Freetag, feel free to have a look so you’ll be able to tell where i’m taking the project in the short term. Also, feel free to sign up for an account to file new enhancement requests or (gasp) bugs!

The Freetag JIRA Tracker Update – replaced with Google Code Issues.

With that said, I’d like to also give Atlassian JIRA a quick acknowledgement for supporting Open Source with their licensing program for us volunteer devs!

Atlassian supports our efforts by contributing their bug tracking and issue tracking application, JIRA, to our project.

Atlassian is an innovative Australian software company providing enterprise software solutions to the world’s leading organisations. Atlassian’s leading software product, JIRA is a bug tracking and issue tracking application developed to track and manage the issues and bugs that emerge during a project. JIRA customers include departments from NASA, Boeing, Cisco, JP Morgan, 3M, BP, Sony and more. Try it for yourself today.

Freetag, Tech