I also checked this out some time ago. It is a great idea - but is probably only one of several solutions (and I'm sure this isn't the forum to discuss them - although it is probably better to think about them in advance). For example, it is also possible to envision a database backend where the entities are store in tables. With proper additions, any of the revision tracking is available (although branching would be difficult). I had been working on a CAD distribution a year ago that had a DB connection (sqlite in this case) as an optional backend, but have had other projects that have kept me from recent development and releases.
in reply to Open Human Readable Computer Aided Design file format
In a database vs CVS vs someother format discussion there are a few issues that are useful to think about.
- CVS is already very functional
- Databases are already very functional
- Various CAD formats are obviously very functional
- CVS is open, revision tracking is easy
- Database interaction is open, revision tracking is possible
- Various CAD formats are usually proprietary, revision tracking is not as easy (if even possible)
- CVS storage in this case requires one fair sized file for each entity, there is a bit of CVS overhead for checking in and maintaining drawings with thousands of lines (eventually becoming painfully slow)
- Database storage has one line per entity, with properly indexed rows, thousands of lines vs 1 line are nearly the same access time. Storage size is limited by the database engine.
- Various CAD formats have various benefits - some binary formats may be small, some text formats may be difficult to process, some XML formats may be huge - there are a host of trade offs.
- CVS storage is typically easy to access from anywhere (although checkout of huge files is a pain).
- Database storage is typically easy from anywhere (although copying files is a pain).
- Various CAD files are typically easy to access from anywhere (maintaining concurrency between documents and updating revisions everywhere is a pain).
So - which is the best solution? I would say, create interfaces that support them all. As for which you should use? Be wary - they all have pitfalls.
As for the comment "perl is not the solution for long term CAD implementations." I would revise that to say Perl 5 is not the solution, Perl 6 will be a different story.
my @a=qw(random brilliant braindead); print $a[rand(@a)];