Jan 10

Just like with fresh businesses, the most important thing in making your framework known is ‘Location, Location, Location’. Choosing a location is not that simple: The variety is huge, the advantages and disadvantages in each are worthy of deep consideration, and a thought for future growth is required even when choosing that first ground to set roots at.

When considering a host, you need to take some qualities of the host into consideration:

  • Promotion Potential Some hosts are more known than others. Some have better promotion capabilities and tools, and these are always worth examining.
  • Web page Hosts might provide your framework with hosting space for a web page. The important thing to check is the size of the host, and the type of shell for configuration you’re receiving.
  • Version Control The most important thing in a framework’s host is for it to actually have a version control system. However, even in that you have a choice: Between Subversion and classical CVS.
  • Issue Tracking Another important feature is issue tracking, which allows you to manage with yourself, or with between other contributers and framework testers/users, the bugs and future features you and your co-developers are working on.
  • Language Some hosts are meant to host only frameworks written in a specific language.
  • Licenses Some hosts might limit the choice of licenses you may apply to your code. This might be considered as limitation to some, especially if you had a type of license in mind already.

I will go in further detail about the two qualities a host might offer, Promotion Potential and Web Page, and will expand about the rest in a later post to keep you readers at some suspense.

Web Page

It’s sometimes even more important for frameworks, especially those written for free-of-charge use and with an open source license, to have free host for the framework’s web pages. However, this free host does not always mean freedom in the host type you receive.

Some, like Sourceforge, will give you freedom up to the level of receiving shell access. However, limitation in size (100MB) and the relative slowness of their web pages might make some reconsider before using them.

Others, like Codehaus, the hosting is wiki-based (Usually using Atlassian’s Confluence as they provide free license for open source projects and non-profit organizations). Even though Wikis are very flexible, sometimes it is also very limiting.

Another point to check is whether the host provides statistical information about the visits to your web site. Sourceforge is a for it, even though they force you to place their logo in order for statistical information to be gathered (which in truth isn’t that bad).

Promotional Potential

Placing your framework on a projects’ host puts your framework on the map, sort of speak. Knowing where it would receive attention is important.

The more popular your host is, the more promotion it can potentially give your framework. That seems obvious; However, there is a catch: Over-populated hosts might make your project seem like a drop in the water and Sourceforge is a good example for it.

Hosts with smaller amounts of projects, usually having a tighter selection method than Sourceforge’s, have the privilege of placing your framework on the host’s home page. Examples for such could be the Apache Software Foundation or the Codehaus.

A big advantage to smaller hosts is that they provide more exposure not only to outside visitors but to the people hosting their frameworks. This kind of exposure is important; Many times frameworks in the same host start using each other, especially those with a strong community sense.

Another note about Sourceforge is their reward system for more active frameworks by placing them higher in search results and sometimes even in the monthly newsletter. Active projects are measured not only by their code commit but also by their activity in forums, issues being tracked (such as bugs and features) and the download rate of the project.

Some Conclusions

Since most frameworks aren’t mature at their first stages, I would suggest having some “incubation” time in a big, massively-populated host such as Sourceforge as these generally tend to have a more loosen system to accepting new projects. Once the framework gets into beta stages, promoting it by trying to get it into a more selective, yet more community-oriented host, is my preferable way to go.

Also, even not discussed here, using your private blog, code forums and mailing lists you have some influence in, and just word of mouth is always a good way to promote the knowledge about your framework. However, the way it reaches the general public is usually through the common people googling for what your framework should offer, so placing it in a popular place in the first place is one of the most basic things you can do.

Share
Jan 07

“Anyone can play guitar”, says Radiohead, and go further by (almost) saying that just playing a guitar doesn’t make you Jim Morrison.

Writing a framework is more than just having a good idea, just like playing well on a guitar is not enough to become the next Jim Morrison: The framework has to be unique. I guess there’s an exception to that rule, which is when you write a framework for personal or corporate-internal use.

A framework, not being unique in any way, will eventually fail because of lack of interest. When people aren’t interested in your framework, when no-one is using it, the writer of the framework (usually You) loses motivation to continue maintaining it and eventually drops it. Since no-one used it in the first place, no-one takes over the code and the framework “dies”.

So how do you determine if the framework you write is unique? I could name a few that pop to my head:

  • Something completely new
  • Integration of components
  • Substantial ease of use

Something completely new

I am one of the more sceptic people you would find about writing completely new things, but since someone had to write the first framework of anything, then you still have a chance.

For example, want to write a framework that provide transparent data storage for your data classes? Sure, Hibername and Cayenne have done that first, but someone had to be the first to write them, right? If you have a new idea, and can’t find anyone else doing it yet (see later about that), then go for it! The world needs people like you.

Substantial ease of use

Sometimes, a framework is provided and is heavily cumbersome. You find yourself writing the same code, knowing that others have written that code before you, to use the provided framework, and you just know how to write something generic enough for everyone to use.

This can be done by writing a sort of a toolkit which:

  • Provides a set of implemented classes for known interfaces
  • Provides utility classes which call different parts of the underlying framework at a specific, well-known sequence
  • Provides code generators that work externally to the framework to supply its demands

.

This kind of toolkit is extremely important for developers wanting to use a framework but just can’t bear the overhead, repetitive code.

Integration of components

Integration components can be seen as ease of use in most cases, but they also provide another aspect not provided by simple toolkits: They use abilities from two or more given frameworks to create a higher abstraction layer for a programmer to use.

Finding out the uniqueness of your framework

The most important thing to remember is that even though the world of open source and open standards opened a gate way to variety in frameworks, it does not mean that programmers like to swim in an endless sea of choices.

Check beforehand if what you try to do already exists. If it does, at some level, see if you have anything to contribute to the existing framework.

Checking is simple, and you should use the tools you would use daily. Mainly, Google for the keywords you’d assume your framework would handle. Search Slashdot for articles about it and Sourceforge and Freshmeat for existing projects.

Frameworks can sometimes “hide” inside bigger frameworks, or in other open source projects host such as JavaForge or CodeHaus. Sometimes there are less known projects mentioned in people’s blogs, so it’s good to search and read a few posts about your idea too. Be involved in some forums, and ask questions about the existence of such framework.

This might seem like a lot of work, but a good research before starting a project might save you time making a framework no-one uses, save you the disappointment when it happens, and might prepare you better to when people start inquiring about your framework and ask you to compare it to existing ones (and they will, trust me – They will).

Later I will post more about writing your own framework, such as how to get it known and how to get motivation writing it.

Share