<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">One issue is that while plain files are abstractions, they are a very common one, compatible with most systems you will see in use, and on which many tools have been developed, including source control, IDEs, e-mail attachments, documentation and conversation.<div><br></div><div>I do not see the idea of a database as inherently bad -- it could be a good supplement to the developer, much like module_info is for modules. Using a DB for everything (with unique IDs) could solve the problem of nested dependencies, where library A needs library B 1.1.2 while library C needs B 1.2.0 and both can not be loaded at once.</div><div><br></div><div>But the social problems it creates -- how to communicate about functions, how to regroup collections of them in an exportable way, how to version them, how to patch them, how to reload them, etc. are not worth the change, I believe. </div><div><br></div><div>The code server or the VM could likely use any representation it likes for these, but the developers are used to one way of doing things, including existing projects. This isn't only a question of compatibility with older code, but also with developers. I think I could welcome a good function/module database in Erlang, something that could be as responsive as <a href="http://erldocs.com">erldocs.com</a>, but could be integrated straight to the shell or something that makes the developer's life easier and maintenance of code easier. I doubt switching to database would simplify the issues at hand. To me it sounds like we'd solve a problem, but create a bunch more that were already considered solved.</div><div><br></div><div>It might be that everything was built on faulty assumptions, but then this sounds like the whole thing would need to be re-worked from scratch, not just the current module system.</div><div><br></div><div>You might want to look at the way PLaneT is doing things for racket, too (<a href="http://docs.racket-lang.org/planet/Using_PLaneT.html?q=planet">http://docs.racket-lang.org/planet/Using_PLaneT.html?q=planet</a>) You can basically import Racket/Scheme module from a server, either at run time or at build time.</div><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br class="Apple-interchange-newline">--</div><div>Fred Hébert</div><div><div><a href="http://www.erlang-solutions.com">http://www.erlang-solutions.com</a></div></div><div><br></div></div></span></span></div></span></div></span></span><br class="Apple-interchange-newline">
</div>
<br><div><div>On 2011-05-24, at 10:22 AM, Joe Armstrong wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><br><br><div class="gmail_quote">On Tue, May 24, 2011 at 4:10 PM, Max Lapshin <span dir="ltr"><<a href="mailto:max.lapshin@gmail.com">max.lapshin@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
I can't imagine myself working with system, that uses non-plain files<br>
for storing source code.<br>
Nobody will fix for me Textmate, git or ack to work with this database.<br></blockquote><div><br>Why not? - a plain text file is an abstraction - in reality its a collection of magnetised zones<br>on a disk, or electron spin states or something, this gets turned into a collection of<br>
bits, the bits are rendered in a editor. Plain text doesn't exist - it's just an abstraction.<br><br>The underlying representation of the data you see in a browser may come from a file<br>or as the result of a datebase query, you will never know which it was.<br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
Modules give your clear structure of functions. Without them you will<br>
end with mpegts_encode, mpegts_decode,<br>
and will break your head when there will be 3 or 4 underscores in name.<br>
</blockquote></div><br>or should the name be encode_mpegts and decode_mpegts the problem with structured names<br>is choosing the name - not the fact there is structure in the name.<br><br>Imagine the www was just one big structured name and there were no search engines<br>
how would you ever find anything?<br><br>/Joe<br><br>
_______________________________________________<br>erlang-questions mailing list<br><a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>http://erlang.org/mailman/listinfo/erlang-questions<br></blockquote></div><br></body></html>