Really, I can take this particular idea back 6 or 7 years. Before my wife and I were married, I had been looking into putting together an engagement/wedding website. It seemed like the logical thing to do. I remember finding early CMS systems like phpNuke and thinking that I wanted something a little bit better.
I ended up coding our wedding site by hand. During the course of development, I found Dynamic Drive - which is a site full of fun little javascript applets. I thought to myself - it would be cool if one of the CMS systems out there made it easy to select whichever javascript goodies you wanted to put in a particular page.
The idea then shifted. I thought - hey, wouldn't it be cool if you could set up a site that offered free wedding web sites, and allowed non-techies to do some really cool things with the site? That's how BKWeddings was born. I didn't actually build that site for years, and I never set up the free hosting / CMS system, but believe it or not that is still an eventual goal.
I did however, figure out how to host a large amount of sites. When I opened Coming Attractions - a 3D Ultrasound Studio, we set up a web site for most of our customers to view and share their 3D ultrasound images. With that problem solved, really just the CMS needed development.
The CMS System I wanted to build has been built 8 times in the last several years. Each time, I came up short on a feature I needed, had dependencies on other software that either had maintenance or security problems, or I just got too plain busy to do it. Each time I built it, I came up with new features, options, and cool things I wanted to do.
Last year, I was all set to get moving on several web projects, BKWeddings being one of them. I built several Movable Type plugins and had come to a decision that MT and vBulletin were going to be foundational components for my projects - they were extensible and already had pretty good sized libraries of add-on features in addition to some pretty solid base sets. But as I began building on both of these platforms I came to understand some inherent limitations and architectural problems that I simply could not base my future on. The level of publishing that I wanted to do just wasn't going to be manageable.
I have looked in to other platforms - believe me. I've looked into more than you could imagine. While each piece of software has it's upside and downside, I came to realize that fundamental architectural concepts were not always being addressed. In fact, even in the most mature platforms I found that the code base was inherently insecure and not optimized for speed.
I decided to start designing my own base for operations. A few basic ideas have always been troublesome for me and it makes sense to me now why so many web platforms have inherent optimization and security flaws. As I set out the process of building I learned a lot about HTML, Javascript, and various dynamic programming engines.
From there, the ideas really started flowing. As I developed solutions, concepts that I had not previously known about came to light. Other concepts that I had familiarity with became much more important - such as the separation of logic code, presentation data, layout elements, and other various widgetry. All of these things added to the complexity of the project I was undertaking and pushed back timelines to unmanageable levels.
I've stayed my nose to the grindstone because a fundamentally sound code base is important to the web in general. Not that everything I've done is as sound as it could be, a well documented and well thought out start point makes it easier for others to analyze and contribute changes that can make the system more effective.
I've added and conceptualized on a lot more functionality that I haven't even touched on, but the idea that I'm getting at is that sometimes a moving requirements target can result in a very solid product. You can't always know the ins and outs of every concept you are building out. Learning along the way is important.
On the other hand, if I had a published code base to start out with, I'm sure it would have garnered a great deal more support than I would have contributed in the last several years. The upside to holding back is that ground level changes are much easier if there isn't a lot of spaghetti out there reliant on beginner mistakes.
Join The The Evolution of an Idea Discussion
