On Wed, Mar 27, 2013 at 2:12 AM, Caleb James DeLisle
<calebdelisle(a)lavabit.com> wrote:
This is the premise, you are going to write a new
XWiki.
You are not bound by any backward compatibility requirements.
Use any technology or combination of technologies.
PHP? C++? Golang? Node.js? Java? Your call!
Describe it in as much detail as possible.
What frameworks will you use? What ORM? what databases?
Why will it perform well?
How will you get new features into the hands of users quickly?
How will you avoid this:
http://steve-yegge.blogspot.ca/2007/12/codes-worst-enemy.html
and this:
http://www.laputan.org/mud/
Think big and go wild!
I would try to do mostly the following: rewrite the core using a
functional approach, trying to stay away as much as possible from
mutable state and side effects functions (correctly isolating and
limiting those parts that needs for some reason to introduce
side-effects) - This would almost completely rule out concurrency
issues, though introducing some little performance penalties.
In order to do so you would need to use a language that is functional
and supports persistent data structure (otherwise you're doomed to
endless memory copying). Since I would stick to the JVM this means
that, AFAIK, you basically have two choices:
1) Scala
2) Clojure
I would choose Clojure which is several orders of magnitude simpler
than Scala and also doesn't suffer of the runtime upgrade problems
that Scala has.
I think that Clojure community is very
vibrant, responsive, friendly and there is a strong professional
support because eminent people of the community founded a company
that's basing all its business on Clojure.
So basically I would (try to) rewrite the core using Clojure and see
how it goes, at least to put into practice what is being preached
recently by a lot of people. I think there's a lot of truth there
indeed, but I would also like to check :)
This, in some ways, also contadicts my idea that for developing
maintainable software we should use type
checked languages :) However Clojure has a library for performing some
type checking so maybe there's not too much contradiction here.
Unfortunately Scala, which has a great type-checker, seems to be too
messy to be used.
Ideally, it could be very interesting to put this in practice by
providing an implementation for the new model backed by Clojure :)
For the client interactions'll use very simple and composable REST frameworks.
Clojure has plenty of these, but even if we stick to java, a JAX-RS
would do just fine.
I have not a strong opinion on this but maybe it could be interesting
to explore the idea of using a language with a more sane semantics for
writing frontend Javascript.
Something like Dart or a language that is able to compile to
Javascript. Clojure has clojurescript, Haskell has Fay, etc.
-Fabio
Thanks,
Caleb
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs