Kinkade, first off, I'm not sure any of us will be able to answer all
of your questions to the detail or accuracy you seek and in a
reasonable time I deem worthy of my day right now. And, I don't want
us to chase tails on this with huge emails that just stay in email
land rather than become part of a FAQ or something useful (although, I
think FAQ are result of something that is too complicated, like the CC
FAQ to explain CC...really the license should explain themselves, and
I hope aiki can explain itself too).

However, out of respect to you, I will say that I knew that in working
with you closer, that you were going to get into any of these hornet
nests like aiki like the critical skeptical and sometimes annoying
friend we love :) So, I'm doing my best to reply to your answers. I
honestly believe that aiki is not where we want it to be, and that
even needing to answer so many questions in depth about aiki is a
problem with the design and building of the software.

I am though committed to making it work, which I will detail at the
end of this email with my irrational reasons for working on this.

On Thu, Jan 5, 2012 at 10:43 PM, Nathan Kinkade <[email protected]> wrote:
> Aiki is a platform for building CMSs?  In what way?  I keep hearing
> and reading about how Aiki is a "framework", but can someone please
> define "framework" for me?  Are you saying that Aiki is a drop-in
> replacement for things like Django in python or Kohana in PHP? Can
> someone show me and example of how this is achieved, and even better a
> live example, and tell me how it differs from Drupal, Joomla and
> WordPress in terms of functionality (not details)?

I haven't attempted to define this in detail. If you would like to
help us by comparing these and finding the strengths and weaknesses,
that would be useful:

http://www.aikiframework.org/wiki/FAQ#How_is_Aiki_Framework_different_from____.3F

Man, this entire wiki is out of date: http://www.aikiframework.org/wiki/FAQ

Its a framework in this way:
http://en.wikipedia.org/wiki/Web_application_framework

That would be great to put on the FAQ.

Please read over the wiki, there are some examples of ways to build
apps with aiki, although they might not all be current.

http://en.wikipedia.org/wiki/

> What good does a widget ID do me?  As far as I know you can't lookup
> anything by a widget ID in the admin interface?  You need to know the
> widget name, and even them it's still ridiculously hard to find it
> because it may be buried under some other meta-widget, or whatever you
> call it.  What speed benefit?  Consolidating all CSS is old news for
> websites.

Sure, the admin interface is substandard. We could just delete it and
use purely mysql commandline to edit a site, but that might be harder.
Easier is to find out what we don't like and use new energy to make
something better.

Sure, there are  lot of things like CSS consolidation and other
features that are not invented here. We learn from others.

> All this stuff about not having to touch PHP seems crazy to me.  All
> you've done is reimplemented a pseudo-language in some very limited
> markup.  This makes me think of the Smarty template language, or even
> wiki markup.  In both cases the object was to make things simpler for
> the user, but in reality it's just one more markup language that
> someone has to learn to do anything and it would have been more useful
> for the user to just learn the basics of the original languages, like
> PHP or HTML markup.  And to make matters worse, you then need to write
> a parser to parse all this newly invented markup, only to turn it back
> into PHP and HTML and SQL, or whatever.  It's a terrible line of
> indirection that is unnecessary.

These are all your opinions. I personally like to just use git + vim +
text files where possible, but aiki is a bit different.

I agree that the current markup is wonky and silly.

Ideally, aiki would require no markup to make simple sites IMO, but
let me get to some higher level thoughts before we get into
nitpicking.

> But as much as anything, can someone please explain to me why Aiki was
> written?  What specific problem is Aiki trying to solve?  The best
> software out there was written because someone perceived a serious
> lacking in the existing available tools, so they wrote some code to
> fill this gap or go beyond existing tools.  If the answer is that
> "it's all in the database!", then that is no answer to me, because I
> view the fact that it's all in the database a strike against Aiki.
> It's a pain in the ass because you are cut off from using decades
> worth of amazing tools meant to work on binary and text files, and are
> limited to grubbing around with SQL, which is a relatively weak
> language.  If the answer is that having things in the database makes
> Aiki vastly faster, then I'd need to see some hard data and tests.  I
> read the performance comparisons in the wiki, and they don't tell me
> anything that seems legitimate.  I mean, how fast can Aiki handle a
> document with 10 million links compared to Mediawiki?  Come on, that
> is not test, and it is designed specifically to hobble Mediawiki
> because you know it has to parse all links with the Linker.
> Additionally, no document will ever have 10,000,000 links.

Sure, call bullshit on that. Bassel ran those tests before, and the
information is surely out of date marketing words at this point.

Aiki was written by Bassel originally (and he can speak to this better) to:

* make openclipart work
** PROS
*** openclipart obviously works way better now...better than the
original custom solution I wrote, and way better than the hype of the
overbloated ccHost software
*** the goal of getting more people helping totally happened
** CONS
*** also introduced some bad coding practices that I didn't realize
were happening at the beginning because I was more hands off, like the
code was forked from the trunk of aiki
*** also, permissions were given out too easily, but amazingly the
site never went down or no one deleted the site!

* allow for multiple people to collaborate on building a website, with
varying levels of permissions/access control to different parts
(widgets) of a site
** PROS
*** Totally this happened! Now we have pullled back, but it happened
*** There were/are levels of control
** CONS
*** In all honesty, its way too complicated to create permission
groups and so the system really became users, and root-level sysGODs,
who could do anything
*** I think while workable, aiki's permission system needs to be
re-architected to fall in line with unix permissions system

* allow for hijacking/using other CMS/blog engines databases easily
** PROS
*** Yes, this works! openclipart cchost database you can still see in
the openclipart database tables
*** There is/was some custom code for importing drupal, cchost and more
** CONS
*** Its not so transparent how this process happens
*** There is no simple way to do this without digging into mysql
commandline really. The run query feature helps to discover what's
inside the database, but still we often find going back to the
commandline often

* have a simple web-based interface for collaboration
** PROS
*** Bassel and Michi started work on the current aiki admin interface
and it is basically workable.
*** It has allowed several websites to be developed
*** Uses the aiki widget system to build the admin interface, which is
cool to dogfood the system
** CONS
*** It was not completed totally IMO. There were features we removed
that totally did not work, and were halfway put together
*** There are still many bugs in the admin interface like the widgets
not showing up under each path/route in the left-sidebar
*** Ideally, there would be a brand new admin interface, jakub is
working on this. Really would be great if there were more people
working on ths

* be faster than wordpress, drupal, mediawiki, and the other aging
software packages relying upon a database
** PROS
*** It seems simple that having less code and interface directly with
the database would make a site faster with aiki rather than the code
in some other engines
*** apparent speed is faster
*** bassel showed me tests before of the code working faster on
mediawiki and wordpress
** CONS
*** I don't trust the tests at all now.
*** Really there needs to be better benchmarking regularly, and sample
tests against latest wordpress, mediawiki, and drupal for comparison
sake (but, we have limited resources to do new development, let alone
tests, we need help in doing!)

* allow for managing multiple sites with one installation
** PROS
*** There is code for this by bassel.
*** rg1024 really rewrote/updated this code to make it work, but I
have not used it.
** CONS
*** Without a simple user interface, this feature is really
nonexistent to most users

* allow for multiple languages out of the box, and simple translation
** PROS
*** Before it worked in a kludgy manner, but rg1024 rewrote it to
industry standard
*** Jakub wrote a great tool with javascript to allow for translation
of terms in the database, with a simple UI
*** This is totally working super well now!
*** rg1024 has code on the way to extract these strings and use
standard PO for when there isn't a db connection, and so others can
participate in translation process
*** removed the somewhat arcane and nerdy PO/gettext system that many
use, with a simple interface for translation. The goal is to get more
people, even normal people to help translate in a community.
** CONS
*** It took us a while to get here, but shows that we are making progress
*** Still not simple to translate in the admin interface...jakbub is
packaing up his tool and we hope to get that into an upcoming release
so simple for others to translate sites. This is actually something
that is not so easy to do on other database-backed systems.
*** standard PO/gettext is not accessible right now, which is bad for
nerds, who are most of the developers :)

Ok, good to type these out. Before we relied upon community support
only for Aiki, but now there is some investment into developing and
fixing features which is great.

I think we should definitely redefine and cleanup the statement from
the homepage which is my marketing attempt to capture what aiki does:

Agile. Teams Work Together. Community with Teams. Web-based Development.

Secure. Battle Tested. Built-in Permissions. Pluggable Security.

Fast. 25x Faster than Drupal. 5x Faster than Mediawiki. 3x Faster than
Wordpress.

Free. Open Source Software. Saves Electricity. Database Scaling.


All the above need to be updated and bullshit removed.

My take from Bassel's christmas eve radicalized statement is that:

Aiki should be easy for normal people to build web apps.


Can we simplify the statement above more?

* Easy for people to build web apps (on the marketing side I would say
now: Easy for people to build html5 apps)

* Easy to use interface
* Easy for people to develop collaboratively securely
* Easy for people to communicate
* Easy to deploy, maintain and update a site
* Easy to scale sites up

###

If those above could be new criteria, then we have a ways to go. But,
what isn't a worthy challenge!

I'll take them apart:

* Easy to use interface

Aiki is totally not easy to use! Its totally hard to use and you know
that from the wiki bloating up with instructions. The best
products/projects don't need a wiki or a manual, the interface should
show how to make a site quickly and easily. I want early coders like
Spencer and Pete or Bassel's girlfriend to be able to make a site with
our default interface. FIX: Analyze problems in current admin
interface and file (mostly done). Define what an ideal admin interface
is and build it. Jakub is working on this. Thoughts?

* Easy for people to develop collaboratively securely

There were tests done before on security. Nicky from before also did
an audit on aiki and we fixed some problems from it before. FIX: The
permissions system really needs a hardcore update. Jcubic has been
looking at this. Do an updated security audit on the site. Fabricatorz
has some upcoming projects which are going to need super secure aiki
installations. This is important.

* Easy for people to communicate

This is an extension on the idea that it should be easy to translate
the site into multiple languages and easy to use the site. I want to
even has some simple google translate-like features built-in so its
simple to get rough translations, but get community members for a
project to help out too. FIX: We have great language support now in
aiki, we just need jcubic's translation editor included by default in
my opinion into aiki as well as simple way to create more standard iso
languages in the interface. also think making widgets with default
languages could be cool way to make it simple for others to make a
site translated. Thoughts?


* Easy to deploy, maintain and update a site

Ok, Bassel thought the build system was too complicated before, so he
hacksawed it. I agree with this approach. So now its easy for a normal
person to install a site. FIX: However, maintaining and updating a
site, as I said before are the HIGHEST PRIORITIES to be audited,
broken down and completed right now. This is really really important
for client work, and for the health of aiki projects. This really
needs to be completed. Nathan, could you help fix this? Other thoughts
on this?


* Easy to scale sites up

The theory is that being based heavily on a database, database
scalability will help aiki-based sites. However, as we  seen from
openclipart, yes, its possible that some convulated database upgrade
could help, but real database clusters have not been super tested on a
geographic scale outside of one datacenter. Also, the group level
access to openclipart introduced tons of super slow queries, which
have mostly been fixed by you and jcubic, and then a bigger linode. A
FIX: define some goals for scalability, and analyze current aiki, then
rollout some torture tests to see how it performs, then fix. .However,
if there is no demand for this feature, I would delay this.

> Again, I don't mean all this questioning to be a criticism of the
> people who have spent a lot of time developing Aiki.  They are just
> natural questions that are coming up for me as I thinking about
> working with Aiki.  You all need a viable story for Aiki, one that
> will pass someone who knows anything about computers and technology,
> not just someone reading it for buzz words and hype and is impressed
> because they don't know any better.  Has anyone else other than
> Fabricatorz or a Fab affiliate or friend used Aiki for anything?  If
> not, why is that?

I enjoy your criticism as long as its constructive, but I don't always
have the time to answer thoroughly. But, this email I want to make
sure to address now.

There has been in the past, but most of the sites are totally powered
by Fabricatorz and Aiki Lab, and are from our investment in the
technology.

I hope that we can work together to make it better and to make our
platform stronger.

More answer below...

> 2012/1/5 Jakub Jankiewicz <[email protected]>:
>> Aiki is more then CMS is a platform for developing CMSes. The good
>> thing about it, is that you can manipulate Database and use CSS HTML,
>> and JavaScript without touching php.

This is somewhat true. The goal of a framework is to accelerate
develop with some prebuilt components. Aiki core is what needs the
most work right now. However, the component building systems:
extensions and plugins are quite good now thanks to Bassel and rg1024.
Aiki Apps concept needs some love.

>> And all CSS content should have this /* widget (id) */ comments so you
>> can easily find where to change that CSS. It's not like inline style,
>> it's more like you want modularize CSS to put in different files, but
>> you have speed benefit because they are all combined together.

This is when in debug mode that one can see the comments in HTML and
CSS to find out where the content is coming from.

>> And Aiki Markup I propose on the Wiki is more like the language, so you
>> can do everything you need in it, and don't need to touch extensions
>> which are pure php code.

Jakub's proposal is a big advancement over the current shitty (but
somewhat workable) aiki markup:

http://www.aikiframework.org/wiki/Aiki_markup_2

>> The best thing in any language is the ability to put your code into
>> functions/modules/classes to split it up and make abstraction. But the
>> Admin Panel should be better to allow to do this things easily.
>>
>> I have this mental picture of new Admin Panel I want to build, I work
>> on it after we release Aiki 0.9

Great! Would love to see plans for this. I have several as well for
what I would like to see, but haven't had the time to submit them :)

>> I think Aiki is great but not as it look right now, because it's mess,
>> but how it should/will look like.

Good attitude! Yes, the admin interface really doesn't sell it very well.



Overall, the irrational reasons I want to make aiki work better and
continue working on it:

* Bassel is my/our best friend and I want to support him and his
original project
* I believe the point to life is working with people, so I view
working on a project like this as working together very closely to
make something we can be proud of as a team
* Its fun
* We are all learning :)
* I want a software platform we can use for client projects that we
control the destiny of...
* We have invested in the project, and I still haven't seen a workable
solution that is faster than nuking the current codebase (and I have
learned this well from Inkscape and the people who often rally for
nuking a codebase, flake out the fastest...its hard!)
* we have sites running upon the software now, so the investment has
paid off, and continues to pay.

That being said, if there is a better option or a better updated
design, that is always great to see. I would love to see more features
removed from aiki, and problems fixed where possible. I would also
like to see the website and wiki cleaned up, hype and bullshit
removed, and the plans updated so we can make something we are even
more proud of...

For Fabricatorz, Christopher and myself thought about this a lot and
we don't want Fabricatorz to get locked into one technology,  however
Aiki is preferred web app/html5 solution. I view Aiki Lab as the
parent project creating software platform aiki framework. I have
another tool I've been working on called make static which takes the
concepts of aiki inside of a makefile and then generates static
webpages, which I will also push over to Aiki Lab as another software
tool at some point when ready.

If there is a better path to accomplish goals of aiki, and replace our
client software (like an aiki rewrite), I would not be against this.
Its simple to rm -Rf * aiki codebase, and just rename another piece of
code aiki and jump the version to aiki 2.0. In my experience, this
usually fails. One, it fails from the community standpoint because
those of us building the current software have some familiarity even
with a nasty codebase. It also fails because unless directly funded
with cash money, often community contributors vanish like fosdevel
(stephen has). Casual community contributions often come from social
reputation benefit and desire to learn, so bugs and necessary need for
new features encourages contributions.

Fabricatorz or Aiki Lab as a company doesn't have enough money to
invest to replace the software and then replace it on client servers.
In fact, that would be really bad because spending more time to
redevelop the software and then more time and money to replace the
software because one or more people think its shit internally, would
not work at this point because it would just cost more money, not make
money. We are scraping all hours out of the day to complete our paying
projects, and then to spend more on projects that cost us money is too
expensive right now. I haven't sat down and done the math on it, but
the growth of our income and fixes to aiki are increasing faster than
what I perceive a rewrite, rebrand and/or doing  a "find some random
piece of software we don't control to build website" on. Yet again,
I'll try to be open minded. Overall, we don't have enough  money to
rewrite from scratch in my opinion, but enough to fix bugs and add
features where we can. Refocusing development though is a good thing.
Cleaning up and updating, great! This is how we did Inkscape, and it
worked well. There are similar demands for this on the qi
hardware/milkymist project, but there the money/investment is even
greater and insane to see these requests when there has been 200-300K
USD dropped...invest through the problems, but try to get sales to
outpace investment is the goal.

As for the future of Aiki, I want to make it easier for people and fix
problems over time. I would like your help too Nathan. Your skepticism
and criticism is good to ground a project, but also you have to
remember that we have to make decisions which make sense to the
company in terms of cost, time, and resources. Software projects are
not just virtual simulation. They are not people, but they are the
products of our labor. I value aiki as an artwork, software, and
something to be proud of as it gets better. I view it as a poem or
book we are writing together. The better aiki gets at this point, the
better it gets for our clients we built sites on with this technology.
Also, ideally, the better the software gets, the less expensive it is
for us to build sites in this manner, and thus we can make more
profit, and spend less time developing sites.

So, let's make aiki better for normal people to use. Let's simplify
it, the website, the wiki and more.

Jon

PS: This is the longest email I have ever written. It took me 2 hours.
I mean what I say!

-- 
Jon Phillips 王✳爻气 http://fabricatorz.com ✳ skype: kidproto ✳ irc: rejon
+1.415.830.3884 (global) ✳ +86-187-1003-9974 (beijing)

_______________________________________________
Mailing list: https://launchpad.net/~aikiframework-devel
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~aikiframework-devel
More help   : https://help.launchpad.net/ListHelp

Reply via email to