ASP.NET died today. Much like Cobol, he leaves behind a legacy that will touch our lives for years to come.
ASP.NET grew up in the shadow of his older brother, Winforms. His father was ASP, his mother VBScript. They lived in a world much like our own, a world of webs and the things that connect them together.
ASP wanted a better world for his son. He worked tirelessly to make sure that his son never had to deal with bees and their awful stings. He worked with uncle MFC to create a safe environment where ASP.NET could play without fear of hurting himself or others. MFC, having no children of his own, sought this as his life’s work. Soon, the .NET framework was built, and ASP.NET’s purpose became clear: To become the framework for the web.
Like any rebellious child, ASP.NET didn’t listen to his parents.
He toiled in the web, jealous of Winforms, emulating his ways. Some might say he didn’t have an original thought for himself, that he just imitated his brother; they would be right.
He saw the flaws in his classmates’ work, how they constantly forgot what he told them. He knew that with just a little work, he could remember what they had failed to.
He knew this because Winforms remembered everything, and come hell or high water, he would too.
Staying awake late at night, he tinkered with what he would call Viewstate, believing that a cool sounding name would increase his standing with the girl across the moat, Perl.
Perl, the daughter of C and Larry Wall, had her own problems. For so long she had run around with her glue, patching up different parts of the web. She spoke many different dialects, she could even speak Gibberish and still get her job done, but she was tired. She was cranky. Some called her insecure, but she laughed at their ignorance. Her ‘friend’ PHP treated her with contempt while imitating all of her best features. She wondered when the world would let her retire. After all, they had PHP, they had Python, and they had Java. Why would they need her? Couldn’t she just rest?
It was not to be.
Meanwhile, ASP.NET wished to free his girlfriend Perl of all her troubles and Viewstate was his ticket. They seemed an unlikely pair, ASP.NET and Perl, but it is said that opposites attract.
Predictably, Viewstate was heckled by PHP. Java, being the robust gentleman he was, just kept eating resources, getting rich and fat off of all the features people were paying for. Java’s followers saw PHP as a poser, and ASP as childish; but when ASP.NET came out and they saw how easy it would be to use Viewstate, they were hooked, and for Java, the feast was over.
And so it came to be that ASP.NET was crowned king, with Perl at his side; able to rest a little more.
Meanwhile, PHP worked to fill in the gaps of its knowledge. Simply copying Perl wasn’t enough – it lacked the magic Perl had. PHP had a huge vocabulary, but no way to categorize it. Looking around at everyone else, it saw that they used namespaces to separate their vocabulary for their audiences. But, as is often the case with drastic change, it knew that it wasn’t going to be easy.
PHP worked to include namespaces, but not before shedding her dignity and self-respect, what little was left.
ASP.NET’s rule was fought by Python, the snake that nipped at its heels, reminding him that Viewstate had left him slower and heavier than he used to be. Perl couldn’t even fend Python off, as he came with everything. Python was winning. He could do everything that Perl could do, and he could speak clearly at the same time.
The web was a cruel world.
ASP.NET knew he would lose his kingdom if he didn’t change. Python and Ruby had been dating, but broke up when they realized that Django and Ruby-On-Rails were copies of each other. They are currently settling out of court.
The infighting gave ASP.NET a chance to get it right; a chance to regain all that was lost. He hoped he could even pass the torch on, and allow he and Perl to retire to an island in the Caribbean, free from tax laws and all of the problems the race for #1 causes.
So he began his work, looking back on the design documents he inherited from his father. He still understood his mother’s language, but wanted to use a language he’d embraced early on in his life, C#. C# was a tribute to C, Perl’s mother, and C++, Perl’s aunt. He knew that C# would encourage the remaining Java followers to embrace his work.
But that wouldn’t be enough. He would need something more, something that PHP’s friend Zend, Django, and Ruby-On-Rails had. He would need MVC.
The climb to Mount MVC was treacherous. Along the way he met a strange traveler who insisted on proving each step was valid before taking it. After three such tries he finally was able to gather the name of that strange, traveler: TDD. TDD and his little brother, Unit Test had just come back from the Agile mountains, hoping to spread their word among the heathens, pressing them to change their heath-ren ways. They had read the ancient texts, and knew that the evil Bugs could be squashed with their Agile religion. They were confident of their success, haughty even.
But this story is not about them.
Shaking his head at TDD and leaving, ASP.NET would later realize that he was jealous that he could never have learned those ways. It would have taken much work, too much mocking, as his work depended very much on dependencies that were not easily removed.
Arriving at Mount MVC, nestled in the bosom of the Separation of Concerns in the Agile mountains, ASP.NET sought out the answer to his problems. There he waited and meditated, feeling the ebb of the web flow through his consciousness. From where he sat, gazing over the ranges below, and watching the various forms of life try to communicate. His answer wasn’t something in the Mountain, it was the mountain itself.
Studying how the mountain was laid out in the Separation of Concerns, how it all interacted in symbiosis, ASP.NET knew he had his answer. He bounded back down the mountain. He passed TDD easily, as TDD was stuck in a failing test. ASP.NET thought about stopping to help, but realized that TDD just hadn’t written the passing test yet. Eager to reclaim his throne and his bride, ASP.NET sprinted back to his kingdom, arriving just as the tribe of Django, Zend, and Ruby looked as if they would converge on his castle, pitchforks in hand.
If he didn’t hurry, there would be nothing to save.
He asked Perl for one last favor: she was to hold a code-golf tournament to keep them occupied while ASP.NET toiled in his labratory.
Perl obliged, knowing that if C did not show up, she would win any code-golf tournament held (Her fears were unjustified, it would turn out, as C was still locked in her own Obsfucation contest. It was a similar last ditch effort to retain her own followers: Long abandoned except for by OpenGL, Unix, and Win32. As an extra-long aside, Win32 and Unix were still fighting, with Unix claiming that his hot Girlfriend, Apple OS X, could knock the sock off of anything Win32 had. That too, is a story for another day)
While the tournament was progressing, or rather, getting shorter, ASP.NET went back to web fundaments, back to what his father had taught him. The web could indeed forget, but he knew the ways around that without sacrificing his soul. Eating cookies while he worked, he looked at his father’s own manuals. Seeing the answer before him, and remembering what he learned in the Agile mountains, ASP.NET finally had his creation.
He named it ASP.NET MVC, in honor of the Mountain.
Using the best parts of his father and his own life’s experience, he created something that would appeal to anyone who might defect to the Django, RoR, or Zend tribes. As a tribute to the zen masters in the Agile mountains, he even included something that he himself still thought silly: TDD.
With his creation complete, he carryed it down to the tournament. Seeing that the entrants were down to 28 characters, he knew it would end soon. Perl soon landed the coup de grâce with the -e modifer. Python and Ruby didn’t stand a chance. PHP and Java were cut in the first round.
ASP.NET showed his son MVC off to the crowd; everyone noting his strength, good looks, and physical prowress. MVC promptly pulled Ruby’s hair. Django took far too long to object. Zend, seeing his tribe in peril, left immediately to try to learn what the word ‘debugger’ meant.
Like any son, MVC didn’t listen to his father. He instead took in his father’s lessons in his own rebellious fashion. If ASP were still around, he would probably have chuckled, seeing his own parenting pains exacted upon his son.
ASP.NET died today. This was his story. He is survived by his Wife, Perl, his brother Winforms, and by his son, MVC. MVC is said to hike in the Agile mountains, fully steeped in the ways of object oriented principles.
Zend still hasn’t figured out what a debugger is, and Ruby is plotting her revenge against MVC for his hair-pulling stunt. They have the makings of a cute couple.