Hello,

It looks like this module is a duplicate of ShortURL and possibly also parts of Shorten URLs. I understand writing a module like ShURLy for fun, and I appreciate the spirit of wanting to contribute it back to drupal.org, but ShortURL and Shorten URLs are mature, stable, sophisticated, and more importantly already available. So it would be great if the technology from ShURLy could be contributed back to these projects and future efforts put into collaborating on them.

I'm the maintainer of Shorten URLs, and irakli of Phase2 is the maintainer of ShortURL (which is used on sites as large as usa.gov, by the way). I'm certainly willing to help with this transition and I'm sure irakli is as well.

Thanks!

Comments

jjeff’s picture

Version: » 6.x-1.x-dev
Status: Active » Closed (works as designed)

Reading that referenced thread, I can see how you would leave with the impression that this was a "joke" module being done for fun, but actually I put a lot of time into evaluating the modules you mention and came to the conclusion that there's room in the contrib space for ShURLy. This module has been up in Lullabot's GitHub repository for a couple of months now and I'm contributing it to drupal.org because I have had several people (who I can only assume have also tested the other modules) request that I do so.

While ShortURL provides a nice API for integrating a site with URL shortening services, and URL Shortner provides this service in Drupal, I found it all to be a bit confusing and overly dependent. What was missing was a nice integrated module to simply turn a standalone Drupal site into a URL shortener site.

If there are elements of ShURLy that could be useful to any of the other modules, feel free to borrow some code! However, choice, change, and competition are the basis for a healthy ecosystem. I think users should have a choice, and for those who want an simpler, single-purpose module to do this, ShURLy represents a great option.

icecreamyou’s picture

Status: Closed (works as designed) » Active

I can see how you would leave with the impression that this was a "joke" module being done for fun...

Not at all. I assumed that this was a serious module written because it is a cool idea and in order to learn about this type of thing. I didn't mean to imply that I thought this was frivolous.

I put a lot of time into evaluating the modules you mention...

While ShortURL provides a nice API for integrating a site with URL shortening services, and URL Shortner provides this service in Drupal...

Those are contradictory statements -- you got the names of the modules wrong and their purposes reversed. ShortURL allows shortening URLs on the same domain, while Shorten URLs provides an API and UI for accessing a number of URL shortening services including ShortURL.

I found it all to be a bit confusing and overly dependent. What was missing was a nice integrated module to simply turn a standalone Drupal site into a URL shortener site.

Really? All that's required to get them to work is to enable both modules. No configuration necessary for most sites. But I would love to hear any suggestions you have about how to make them simpler. And the "overly dependent" thing is disingenuous, because ShortURL and Shorten URLs combined add up to about 27.3KB whereas ShURLy is 44KB.

If there are elements of ShURLy that could be useful to any of the other modules, feel free to borrow some code!

There are certainly things in ShURLy that are not in ShortURL/Shorten URLs, and vice versa. But it would be nicer if we could work on this together instead of duplicating work.

However, choice, change, and competition are the basis for a healthy ecosystem. I think users should have a choice, and for those who want an simpler, single-purpose module to do this, ShURLy represents a great option.

Look, I appreciate that you want to defend your work, but no one thinks it would be a good idea to go out and create another module that does exactly the same thing as Views. Same idea. Competition is good for a marketplace, but collaboration is better in an open forum where there's limited manpower. Drupal modules are not part of a marketplace. It's the Drupal Way to collaborate, and there's even a whole page recommending it in the documentation.

I agree with you that it would be nice to have Shorten URLs and ShortURL combined into a single package. I'm also not attached to the namespace, although I think it's an easier namespace to find. I do think that there should be a logical separation between the services API and the user interface (Views + forms), but that can be done with submodules rather than separate packages.

I'm not requesting that you just throw away the work you've done on this. There is clearly substantial thought put into this project. However moving forward I would like to find a way to work together instead of wasting both of our time trying to build the same features.

One easy way to do this would be to create a unified package for Drupal 7 that all three of us (you, myself, and irakli) could collaborate on. Would you at least consider this option?

Marking as active pending feedback.

irakli’s picture

"While ShortURL provides a nice API for integrating a site with URL shortening services"

this is incorrect statement. ShortURL provides an API to shorten long URLs without any third-party service. As a matter of fact, your module uses same exact algorithm that ShortURL does. I guess great minds think alike? :)

Anyways, I am all for collaboration. That's why when I saw Shorten module, I intentionally avoided duplicating any of its functionality and in my opinion it has worked out really well, so far. IceCreamYou's module provides UI and configuration features, ShortURL provides the engine.

I am sure we can find the same kind of middle ground for ShURLy as well, if jjef wants to.

cheers.

jjeff’s picture

Okay, here it is, free of any disingenuousness or diplomacy: I tested out ShortURL / URL Shortener and found them to be clunky, confusing, and awkwardly architected. I found the user interface to completely ignore any of the existing design patterns for URL shorteners. I found them not to implement about half of the features which I wanted out of a URL shortener (web services, custom URLs, request rate limiting, click tracking, user-owned short URLs, and more). I also found that the database schema -- the actual core way that the data was stored -- didn't seem to offer support for these types of options, so it was unclear to me these features could be added. In short, my first impression of these modules was not great.

I apologize for getting the names confused in my description, but this is part of the problem with them. It's confusing what each does and how they work together.

It seemed like suggesting a complete rewrite of these modules in order to implement my opinions for how a URL shortener should work (and keep in mind that one of my criticisms is that this shouldn't be two separate projects) would have been selfish and, more importantly, insulting to the developers who obviously put a lot of time and work into these modules.

The last thing I want to do to discourage anyone from contributing to Drupal, so it hurts me to feel like I've been pushed into criticizing your modules. Likewise, I think your criticism of my contribution is starting to go a little too far.

I think it's great that you're so interested in this module. I want to continue to encourage you to take code from Shurly for use in your projects. In general, I think collaboration is a good thing. However as the CEO of Lullabot, I simply don't have the time become part of a team and try to coordinate efforts. And to be clear, I'm not even sure that efforts can be coordinated.

I hope you'll allow me to have my own opinions on this let it go.

icecreamyou’s picture

I tested out ShortURL / URL Shortener and found them to be clunky, confusing, and awkwardly architected. I found the user interface to completely ignore any of the existing design patterns for URL shorteners. I found them not to implement about half of the features which I wanted out of a URL shortener (web services, custom URLs, request rate limiting, click tracking, user-owned short URLs, and more). I also found that the database schema -- the actual core way that the data was stored -- didn't seem to offer support for these types of options, so it was unclear to me these features could be added. In short, my first impression of these modules was not great.

I prefer to hear feedback like this. It's something concrete that I can take and move forward to improve on. I can't speak for ShortURL but I know that the architecture of Shorten URLs would allow adding most of the features you mentioned without any restructuring. In fact some of them have been added already since you first wrote ShURLy.

Specifically WRT request rate limiting, I'm curious why you backported the D7 implementation instead of making use of D6's flood control mechanism?

I apologize for getting the names confused in my description, but this is part of the problem with them. It's confusing what each does and how they work together.

Fair enough.

It seemed like suggesting a complete rewrite of these modules in order to implement my opinions for how a URL shortener should work (and keep in mind that one of my criticisms is that this shouldn't be two separate projects) would have been selfish and, more importantly, insulting to the developers who obviously put a lot of time and work into these modules.

If someone ever opens an issue in my queue saying "I have a lot of ideas about how to take this module to the next level and I want to write a new branch from the ground up," I would be open to that. You're correct that I would probably be offended by an issue worded in a way that suggested the current branch is inadequate and needed to be completely rewritten. But regardless, I would have appreciated an email just to let me know what you were doing and to get my thoughts.

The last thing I want to do to discourage anyone from contributing to Drupal, so it hurts me to feel like I've been pushed into criticizing your modules.

I'm the author of a number of different modules, many of which are used by thousands of websites according to drupal.org statistics. My issue queues are some of the best-maintained on the site, with the number of open issues typically at 1-3%. I have a lot of time and experience invested in Drupal. You're not going to scare me away. I would rather hear honest feedback.

Likewise, I think your criticism of my contribution is starting to go a little too far.

I'm sorry you feel that way. My comments are intended as a request for collaboration, not a criticism of your efforts.

As the CEO of Lullabot, I simply don't have the time become part of a team and try to coordinate efforts. And to be clear, I'm not even sure that efforts can be coordinated.

I'm not talking about a coordinated team effort. I'm talking about three people having CVS access to the same code. The result would be less of a time commitment on your part. I do appreciate your time limitations, and thank you for taking the time to engage in this discussion thus far.

However, if you insist on having competing efforts, I have two questions:

  1. Do you intend to actively maintain ShURLy on drupal.org?
  2. Do you intend to port ShURLy to Drupal 7?

If the answer to #1 is Yes, I think you're missing an opportunity to reduce the amount of time you're spending on this.

If the answer to #2 is Yes, I want to encourage you to give irakli and I a chance to demonstrate that our modules can support the functionality you need, since a port to Drupal 7 will certainly give us the opportunity to re-architect and even combine our modules where necessary. I hope and believe that at that point you will find that competition is no longer necessary.

boris mann’s picture

Title: Duplicate module » Discussion about future collaboration for D7
Status: Active » Postponed

@IceCreamYou ++ great post, would read again. I actually think we need some more "darwinism" in Drupal module land, but this is a great post. I also think that this is the perfect end to this thread.

I have intentionally changed the title of this issue. The perfect outcome would be a merge in the D7 branch, likely with multiple sub modules in one download.

jjeff’s picture

Good plan. I don't have immediate needs for a D7 release, so unless someone else posts a patch to upgrade ShURLy to Drupal 7, I probably won't look at upgrading ShURLy for a few months.

dave reid’s picture

I'd also love to mention (as I already did on the Lullabot blog post) that I've been working on a Redirection API that helps provides a common API for a good majority of redirection-type modules. I'm working on backporting the API to D6 and I'll be using it myself with the Feedburner module. I'd welcome any input, suggestions and requests!

quicksketch’s picture

Status: Postponed » Closed (fixed)

Well here we are 2 years later. ShortURL doesn't have a D7 branch at all and Shorten URLs now provides integration with shURLy module as one of its integrations points.

I have to agree with competition as a generally good thing. With several of my modules we're in direct competition with other contributed modules (Media vs Insert/FileField Sources, Webform vs. Entity Forms, Flag/Flag weights vs. Nodequeue). Having choices is not a bad thing, especially when implementation and UIs differ significantly.

In any case, Lullabot plans on keeping shURLy module around for the time being. If there's a compelling reason + upgrade path for ourselves and the users of shURLy perhaps we'll take another look, but for now we'll just keep a rockin'.