Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Review my startup: Akshell, a web application network (akshell.com)
83 points by korenyushkin on April 13, 2010 | hide | past | favorite | 58 comments


Based on the name I was so waiting for a web application framework in Haskell.


I thought it involved Cucumber creator Aslak Hellesøy.


You should make your module loading code CommonJS compatible: http://commonjs.org/specs/modules/1.0/

Check out the mailing list as well, if you're not on it already: http://groups.google.com/group/commonjs


Thank you for your advice. I'll check it.


Making money from this is going to be an uphill battle, especially because getting people to use it is going to be an uphill battle. Looks very cool though.


Best way to make people use it is to create a killer example app but that is quite difficult (appjet / etherpad)


If it's using node.js (or other JavaScript-based) server-side framework, it could be very useful as a live 'gist' or pastebin. Show/Review the code and see it in operation all in one place. Collections of lots of little scripts.

I'm also thinking of it as a community-based implementation of something like Yahoo YQL, so mashing together several useful datasources and using JavaScript as the glue.


It doesn't use node.js because node.js is asynchronous and the main goal of Akshell is simplicity. But it definitely can be used the way you pointed.


I'd second the recommendation that you have a look at the commonjs stuff that olegp mentions above ( http://news.ycombinator.com/item?id=1262380 ) and seeing if there's an opportunity there to be a prototype / working platform for such an endeavour. (Assuming that there's a good degree of fit between your platform ideas and commonjs)


Thank you, I'll check it. Even if it doesn't fit into the basic Akshell library, nothing prevents from creating an alternative basic library.


This is a good start. You should do a better job of selling the idea of the service to developers. Come up with some pain points that Akshell relieves, and use that as the basis for the language on the homepage.

A directory of apps written with Akshell would be more powerful than a screencast or explanation. If you don't have very many users yet, write the applications yourself.

It might be wise to hire or find someone to narrate the screencast.

Great work!


Thank you for your appreciation!

Yes, currently I am working on creating new apps. Sorry for my accent, I'll fix the screencast.


You're going to have a near impossible time turning this into a business. My suggestion is you open source the whole stack and figure out how to sell it to enterprises for internal application development.


Thank you for your reply. But I think that benefits of Akshell grow with its community; so I'll try to promote it as a single service.


Is this an AppJet clone? I'd be so happy to have AppJet like functionality again...


Yes, this does look like an appjet clone. Not to take anything away from this implementation, however, because it looks like the author didnt know of appjet.

Appjet had the same concept: server side js based on rhino, persistent js object store, etc.The concept, however, was a little bit rudimentary: one app consisted of one js "file". You had to write every possible interaction as functions within that file. It did have an interesting function call based templating mechanism, however, something like so:

  print(DIV(
    FORM({action:"/", method:"get"},
      SPAN({style: "float: left;"}, "Show"),
        INPUT( {name: "count", value: count, size: "2", className: "in_box"} ),
      SPAN({style: "float: left;"}, "items"),
        INPUT( {value: "Go", className: "in_box", size: "1", type: "submit"} ),
      DIV({style: "clear: both;"})
    )
  ));
Appjet the company had made the source available for download a while ago, and it seems like these folks have run with it:http://apps.jgate.de/


I never used AppJet, but according to its wikipedia page Akshell provides its functionality.


AppJet open sourced some of their code and JavaScript libraries. They don't seem to be online any more, but if you want them to see whether and how they could be integrated with Akshell, let me know.


Surely I want! Please contact me at anton@akshell.com. Thank you!


This is quite innovative, a javascript appengine if you will. I am not so keen on the enforced sharing, I think separating "library modules" from "user apps" and providing opensource access to the "akshell" engine so folks could host their own, port the db over to google appengine etc. would make this rock. So, is the akshell engine's source open/available now/later??


Thank you for your appreciation!

Currently I don't have plans to opensource the engine. It isn't a noncommercial project; I spent a lot of time on it. What business model would you suggest if I opensource the engine?

In fact, it's impossible to port Akshell database to App Engine. The database system is my pride: Akshell provides a special query language for it, which is based on relational calculus and easily integrates into JavaScript. A relational database couldn't be ported to Big Table.

Akshell features another approach to scalability: each application has an access to a fully functional relational database with transactions, complex queries, etc. Application databases are completely independent; so the whole system has a non-relational database, which should scale well if multiple applications are loaded. You may imagine it as "relativity islands".

The database API is described here: http://www.akshell.com/docs/ref/core/db/


Here are the cons

1. business lock-in: Having one's whole web business(code/website&data) be hosted by a small startup out of russia(ssor) will be a non-starter for most. 2. code lock-in: Having "code lock-in" for developers, meaning writing to a proprietary code-stack for an ssor will also be a non-starter. 3. scaleability: akshell does not currently provide a clear path to scaleability for any one app let alone the potential of hosting 1000's of apps. This very rapidly becomes a cloud-scaling issue that the ec2, gae's are attempting to solve and will be a non-starter for an ssor . 4. dynamic code sharing - use'ing other libraries within askell might reduce development time, but unless there is a static version of that library associated with each instance, with any change the possibility of breaking the web services makes this a non-starter and everyone would revert to a github like "static code sharing" model.

Here are the pros

1. A custom webhook pipe builder: Say I wanted to build a "dynamic form" get user input, save state (in a db) and run it through a series of dynamically created "webhooks" and process the final output. If akshell provided "an app development api" I could dynamically create an app, generate the code have it hosted and throw the url up for user input and have the user walk-thru various webhook/needed steps to process & generate a final response. - this is not now possible w/ appengine or ec2 - propietary code/data lock-in is a non-issue since I am not "storing" as much as I am processing. - leveraging "dynamic community code" would be a pro/ not a con in this case. - a freemium model would be possible as i'd need free to wade in/ test etc and with load expect to pay a per use fee. - see some of Jeff Lindsay's webhook related work i.e. webhooks, mailhooks, scriptlets.org etc at http://github.com/progrium for related work

2. A mashup test/use-bed: Web sites with apis could create "canned akshell apps" that not only allowed developers to use("foo-api") to test but also provided examples of use and each web-service could possibly subsidise the hosting / bandwith costs of using their api-apps so developers could just plug-n-play.

3. There are a few more use cases i can think of, you could shoot me an email if interested.


Thank you for your comprehensive reply. I definitely agree that now Akshell doesn't suite mission-critical applications. And I think it will never suite bank applications or such. But I think that it has a rather big niche.

I'll contact you. Thanks again for feedback.


This looks very cool, but there's no way in the world that I'll actually create anything on the platform if there is no way to run apps on my own server or locally. I have a feeling that this won't go anywhere unless you use completely open technologies (and frameworks, middleware, etc) or you open source Akshell itself.


Thank you! I understand your point. There definitely will be a way to run Akshell applications outside of Akshell.


I was just poking around for and found two ruby to javacript translators. Now there's a javascript web framework.

This is quite impressive, I enjoy the availability and ease of entry of the javascript language. Everyone with a browser has access to it.

I signed up Anton :D (does it work with jQuery)


Thank you for signing up!

You can use any client-side JavaScript library with Akshell, including jQuery.


This is what happen when you first open your app the public, you get feedback that may not line up with you primary vision. I found these primary feedbacks invaluable because it tells you that your product is not doing exactly what people want, you learn from it and shift direction. Your idea is very good and well executed, you should minimize the trust factor by making it less social based ; make it possible for someone to take his code away from your platform.


Thank you! In fact, moving code away from Akshell should be possible. All libraries and utilities are BSD-licensed, one only have to clone the core to run Akshell applications.


Cloning the core doesn't sound simple (even if it is).

Making it easy to move away lowers the potential cost of using Akshell - I really don't want to be locked in. How about open sourcing whatever is needed to run an app on your own server and then working on keeping customers through convenience and the interoperability between apps?


May be I'll take this way. But now it's too early do decide. At least because currently Akshell doesn't have many users and applications; so if I opensource the core, anybody would be able to setup an absolutely equivalent server.


Sure - you'll need to take a bit of a wait and see approach, but personally I'm hesitant to build anything at this point. If I wanted to build something serious on it I'd be relying on you to stay in business...

And when I suggest open sourcing I am thinking in terms of the bare minimum to setup an app on another server - so your very cool editing system wouldn't need to be part of it, that would be what makes you different from anyone else who sets up their own server.


Well, the edition system isn't mine; it's EditArea, a free client-side JS library by Christophe Dolivet. But opensourcing a part of Akshell may be a good idea. I should think about it. Thank you.


You should make this into a Django app that people can plugin to their admin interfaces. It would be a great tool for on the fly code development, bug fixes, etc.


I like the idea of a constellation of small applications but I cannot envisage how it work. If you have written an app (library) that I want to use, I use it directly, or I can clone it.

The former requires that I trust you completely and permanently and is therefore not likely to happen in serious contexts. The latter requires a round-trip through my VCS anyway, so what benefit does this feature bring over e.g. Github?


The Akshell is all about the former way. The idea is the following: I administrate basic utilities and libraries and you trust me because you use Akshell. These applications are free, they have public repositories at http://bitbucket.org/akshell/; so the development is driven by the community and is beneficial for everyone. I am responsible for consistency, stability, etc.

The resulting environment is easy for development, is formed by a community, and is stable.

Other developers could gain an authority and authour such applications as well. In future, they will be able to make money on it.

The cloning is a good way for libraries, but in Akshell you could create utilities as well. It's easy to explain by an example: in the profile application users save their profiles; other applications could access them. Cloning the profile code is senseless, because its data matter.


Looks like a great way to shorten the edit-run cycle, but my first question would be: where is my source? More specifically, is Akshell storing it in some kind of version control? Is there any possibile way to take it offline, and edit it on my local machine (still in my browser)?


Thank you. There is a tool for accessing Akshell: http://www.akshell.com/docs/guide/using/#tool

You can use it like this:

sudo easy_install akshell

akshell get your-app

# make changes

akshell put your-app -e "test()" # send changes and run the test() function

It can be integrated into an IDE (I use it from Emacs). But it isn't a substitution for a version control, which wouldn't be handy here because of short put cycles.


I'm just curious as to which library (if any) you used for code editing. It looks nifty!



Dunno but I've read it as AskHell.com - heh, and AskHell.com is not taken!


The authentication functionality demoed in the screen cast is cool - but looking at the notebook app it seems that it is a Akshell branded system. Are you going to offer customisation of that?


Yes, I will offer customization, but not complete rebranding in order to prevent fishing (Akshell login is shared among applications).


Except how many developers want a random (to the user) shared login? I'm doubtful that logging into a non-Google site with a Google account or using Facebook Connect is yet a standard user experience. The way I see it, this could just confuse users.

Why not provide a login system specific to each app?


I actually think a common login across all Akshell apps is what will make this superior to AppEngine, AppJet etc. Also, it would be good if there was a per user data store in addition to a per application one.


A per user data store could be easily implemented as an application :)


A specific for application login system can be implemented as a library in a few lines of code. But using it will prevent an application from benefiting from the Akshell environment.


Looks pretty neat, especially with all of the libraries you've got available (forms, S3, etc). Is anyone currently using it for a live application?


Thank you. In fact the s3 library is not ready yet :) Currenly the most live application is blog: http://blog.akshell.com/, but I launched the public beta only 30 minutes ago...


It is unfortunate that you have designed your own query language rather than allowing true SQL.

Maybe get someone else to voice-over the intro video.


But the query language is much simpler than SQL and integrates seamlessly into JavaScript. It should be easy-to-use for beginners.

Yes, I'll fix the video.


May be, you should reposition it like quick application prototype tool (it differs a little bit from live pastebin ;)).


There was something similar by Sun a few months ago: www.zembly.com

Unfortunately the project seems to be shelved now.


Looks nice, but I'm a little confused. Why would I want to use this over something like Django?


Thank you. There are two reasons:

1. The deployment is just two clicks.

2. Applications can interact, i.e., your app can use the log app for logging, the profile app for accessing user profiles, etc. So each app does only one thing, but does it well. It can be imagined as a social network, whose logic and content is formed entirely by users.


How do you solve the trust issue in this? Is that like friending in a social network?

For instance, can anyone link their app with mine? How do we keep everything consistent?


A simple example of an utility application is log. To use it in your application you can write:

use('log', '0.1');

...

log.debug('Your log message');

The first line includes the file http://www.akshell.com/apps/log/code/0.1/__init__.js which is an interface of log. Then you can view your logs at http://log.akshell.com/

The admin of log maintains consistency of the interface; so other developers can use it.

Anybody can use your app if he trusts you. If you don't maintain consistency of your utility interface, nobody will use it.

It is not like friending. The friending itself can be implemented as an application.


I like it. It's pretty cool.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: