This is what it had:
- Text editing (standard stuff like syntax coloring, color based find and replace)
- Gui editor (box manipulation and property manipulation, pixel perfect editing)
- Locking Source Code via Live Server to edit against
- Cross Machine Synchronization (that is, drag a file from your local computer and it gets uploaded to the remote computer and changes are synchronized as the local file is changed = very cool for designers)
- A big compiler that did a lot of grunt work (and a lot of automated pre-optimizations, so it automated evil)
- 100K lines of code.
It was a revolutionary Ajax platform, but it also sucked for reasons I'm not going to discuss.
If I were to do it all again, here is what I would do differently (and kinda doing now).
- Write the GUI editor as a stand alone editor that could be launched from command line.
- Not use XML at all for the Gui file format; XML was a terrible choice. Now, I would use JavaScript to construct the object and transfer it to the host program as JSON which it could then trivial serialize out as JavaScript code that merges nicely. Plus, it would be hackable by a text editor.
- Open source the custom template engine / (Or use Mustache)
- Write the state machine compiler (the thing that made Ajax real easy for us) as a library rather than a DSL; open source it. (The closest thing available now is zef's mobl which I would use now rather than invent my own).
- Not worry about image file names, rather just map out all images via CSS and then use a CDN.
- Skip GUI editing entirely, it isn't needed and pixel perfect is over-rated.
- In locking SCM versus distributed SCM, the key to distributed is designing your code and architecture in a way where merging is obviously the correct choice. If you design your code and how your code works together with other developers in a way where merging will work, then merging will work just fine.
- Not build a custom file system/custom source control. I kid you not. I have a tool called fire that lets me very quickly build a document object model that serializes to giant XML files. I then used some old networking code to turn the DOM into a server where developers would checkout bits and pieces of the DOM to edit it. Every change coming from a developer would then backup the entire XML file. Once the XML file grew to 1MB, I was going through gigabytes of data per hour.
- Open source the image tools (they are coming)
- Open source the JavaScript tools (or use Google's Closure)
- Open source the kernel (or use jQuery more effectively)
- Open source parametric CSS (Or, add image manipulation to Less)
I would love to revisit the problems we were facing, but the fundamental problem with building a web operating system is the user/developer education debt is currently infeasible.
More over, I don't have enough energy to maintain that kind of code base without at least five long beards. As I age, I'm looking more to polishing things up rather than hacking things out. Building an IDE was a great way to learn and make mistakes, but it was also misguided as it prevented be from adding value to the project and the business. Although, I enabled my team to do marvelous things that are still not being done in the marketplace of products.
Learn about the project so awesome that I created an IDE for it: @killer startups. on mashable. Our youtube video (holy crap, we built this!).
Watching that, I realized how awesome the tech and idea was. Maybe we should revive it? I don't know.
No comments:
Post a Comment