Introducing Koby & CrossRider

5 views
Skip to first unread message

Mushon Zer-Aviv

unread,
Mar 15, 2011, 3:37:51 AM3/15/11
to shiftsp...@googlegroups.com, Koby Menachemi

Hi guys,


My highly anticipated meeting with Koby Menachemi from CorssRider happened yesterday and it seems CR & § are a match made in heaven.


CrossRider's mission is to make browser extension developer lives livable by providing a cross browser dev backbone that would compile y(our) html, css & js to the formats required by each of the leading browsers (all the way back to IE7). Koby described what they developed as similar to Greasemonky but more powerful (and obviously cross-browser). They are a young startup but like us are at this point much more interested in development than in bizdev. Either way they see a great potential for in opening their product to ShiftSpace to beta test and enjoy. What this ideally mean is that our cross browser issues will be managed by CrossRider (not withstanding the mundane webdev crossbrowser issues obviously) and that CrossRider will be able to tackle quite a lot of edge cases with the over-ambitious userscript that we've been developing in the last few years.


I was quite frank with Koby about our process and the discussions we've been having on the mailinglist lately. As I told him, § needs a breath of fresh air, and CR might just be it. Relieving a lot of burden off of our busy shoulders and allowing us to focus on other challenges. I also shared some of the thoughts we had about the potential of HTML5 postMessage, about a possible business models working alongside our Open Source model and our thoughts about decentralization and so on...


I am sure the feedback and collaboration we can offer Koby and Shmueli (the core CR team) will be a valuable resource for both parties. Koby will provide us with beta-access to crossrider.com and we can start exploring this new exciting collaboration.


Koby had some questions about how we're using the unsafe window and other special requirements we might have. He'll probably do a better job of representing them.


Koby, welcome to the list, do consider the time difference with most of our team being based in New York (and some of them currently at SXSW).


cheers,

--

Mushon Zer-Aviv
ע Shual.com - design studio
§  ShiftSpace.org - an opensource layer above any website
¶  Mushon.com - blog
× @mushon - Tweet me

David Nolen

unread,
Mar 15, 2011, 8:35:32 AM3/15/11
to shiftsp...@googlegroups.com
Mushon,

Thanks for the intro! Koby, if you have questions ask away.

My questions about CrossRider at this point are pretty broad. How does it work? :)

Thanks,
David
--

Mushon Zer-Aviv
<shual_gray.gif> Shual.com - design studio


§  ShiftSpace.org - an opensource layer above any website
¶  Mushon.com - blog
× @mushon - Tweet me


--
You received this message because you are subscribed to the Google Groups "ShiftSpace-dev" group.
To post to this group, send email to ShiftSp...@googlegroups.com.
To unsubscribe from this group, send email to ShiftSpace-de...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/ShiftSpace-dev?hl=en.

Koby Menachemi

unread,
Mar 16, 2011, 8:12:39 AM3/16/11
to shiftsp...@googlegroups.com
Hi David and everyone!

Crossrider has several aspects:
1. App code (aka, content script) - very similar to GM where you can run your JS script on top of any page.
2. Background code - code that is running at the background which live as long as your extension is running (this is currently not available in IE)
3. appAPI - our api object which handles cross-domain ajax, local cookie/storage, Facebook api, real-time messaging, messaging between tabs and many more.
4. Browser integration - you can add your own toolbar button, notifications, control the omnibox, etc.
5. Auto update - we provide auto update mechanism for your code. Within 24 hours (max) all your users will have the latest version of your app.
6. Social API - This will let you virally spread shift-space on social networks with a simple API that wraps the Facebook API (twitter coming soon) and makes it work on any page. (Facebook allows only 1 domain to be connected to an app and we've build a mechanism to override this).

And obviously the fun part about Crossrider is our cross browser support and future support for new versions coming out. (we are now working on IE9 support which should be availabe soon).

To your question on how does it work: we take your code and "compile" it to native xpi for FF, native crx for Chrome and as IE doesn't have any good support for JS code we created our own layer of extension manager for IE which can run these apps. The compiled versions are independent and consist both your app and our engine (that means your users need to download only one/yours xpi/crx/exe).
We then give you a widget to place in your page (or direct download links) which determines the users browser and serves him with the correct native app file.

As our solution is very similar to GM on FF (we use the same method of sandbox) I believe your app can be run on Crossrider with some changes BUT there are two issues that we should check first:
1. unsafeWindow - with Crossrider you have the unsafeWindow object only for FF and IE. Chrome does not provide you with any access to the page. You can call JS functions on the page but can not read JS variables, etc.
2. Mootools - currently we do not support mootools natively (as we do for jQuery). Do you use special version of mootools?  My gut feeling is that we can overcome this issue.. it should work for FF (as we execute the code in the same way GM is running) and there shouldn't be a problem to run it on Chrome, so as always we've left with IE. I believe with minor tweaking it should work well.

The current status of the project:
- Firefox: full working engine. Still testing Firefox 4 support.
- Internet Explorer: app code (content script) is fully working. In the next month or two we will add the background code capabilities and browser button support.
- Chrome: app code is working. The ETA for beta version is end of March.

It's kind hard to describe this framework in few short paragraphs but that's the basic of Crossrider.
I'll be happy to answer any of your questions and in the next couple of days I will send you login info to try it out.

in the meanwhile, here is a simple code snippet (which is fully working on Crossrider):
 appAPI.shortcut.add("Shift+Space", function() {
    alert("Crossrider welcomes § and hope we can contribute to this great project!");
 });
 
Best,
Koby

Dan Phiffer

unread,
Mar 16, 2011, 10:56:58 AM3/16/11
to shiftsp...@googlegroups.com
Hi Koby,

I've just returned from Austin TX and have a bunch of work to catch up on, so I won't be able to read your message in detail immediately. My cursory read sounds very promising!

So would the next step be for you to provide a login for us? Is there documentation online I could look at in the meantime?

Best,
-Dan

Koby Menachemi

unread,
Mar 16, 2011, 11:14:26 AM3/16/11
to shiftsp...@googlegroups.com, Dan Phiffer
Hope you had good time at SXSW ;-)

Yes, next step is to provide you with beta login to http://crossrider.com which will come with access to our (draft) Wiki and our community site.

Although we have started our Wiki, it's not fully ready yet but with your feedback and questions we can fill the gap.
Beside moving on with the Wiki, I will create some example apps for you guys as I believe it will be the best "starter kit" to show what Crossrider is all about and how to use it.

I really hope I will have everything ready for you guys by tomorrow or Friday.

K.

Doron Ben Avraham

unread,
Mar 16, 2011, 11:29:42 AM3/16/11
to shiftsp...@googlegroups.com
Sounds awesome.

Slightly off topic, Will the extensions use the hardware acceleration of
the native JS engines on the browsers? some kind of passthru?

If that problem can be solved, we can focus on scalability better. ;-)

>> <shual_gray.gif> Shual.com <http://shual.com/> - design studio


>>
>> � ShiftSpace.org - an opensource layer above any website

>> � Mushon.com <http://mushon.com/> - blog
>> � @mushon <http://twitter.com/mushon> - Tweet me

David Nolen

unread,
Mar 16, 2011, 12:32:58 PM3/16/11
to shiftsp...@googlegroups.com
On Wed, Mar 16, 2011 at 8:12 AM, Koby Menachemi <ko...@crossrider.com> wrote:
1. unsafeWindow - with Crossrider you have the unsafeWindow object only for FF and IE. Chrome does not provide you with any access to the page. You can call JS functions on the page but can not read JS variables, etc.

We don't need unsafeWindow. It's more important to have a safe communication channel between the page script and the background script across all browsers.

Are there any plans to support Safari? Safari and Chrome extension designs are only cosmetically different from what I can tell.
 
2. Mootools - currently we do not support mootools natively (as we do for jQuery). Do you use special version of mootools?  My gut feeling is that we can overcome this issue.. it should work for FF (as we execute the code in the same way GM is running) and there shouldn't be a problem to run it on Chrome, so as always we've left with IE. I believe with minor tweaking it should work well.

What do you mean by support jQuery natively? Do you guys provide a jQuery based API? 

David 

Koby Menachemi

unread,
Mar 16, 2011, 3:05:22 PM3/16/11
to shiftsp...@googlegroups.com
The extensions are running the code using the browser JS engine, so we are still limited by the Firefox, Chrome and IE engines.
When you have the time, I will be glad to know more about your scalability issues 

Koby Menachemi

unread,
Mar 16, 2011, 3:15:45 PM3/16/11
to shiftsp...@googlegroups.com, David Nolen
On Wed, Mar 16, 2011 at 6:32 PM, David Nolen <david...@gmail.com> wrote:
On Wed, Mar 16, 2011 at 8:12 AM, Koby Menachemi <ko...@crossrider.com> wrote:
1. unsafeWindow - with Crossrider you have the unsafeWindow object only for FF and IE. Chrome does not provide you with any access to the page. You can call JS functions on the page but can not read JS variables, etc.

We don't need unsafeWindow. It's more important to have a safe communication channel between the page script and the background script across all browsers.
That's good :)
Shouldn't be any problem communicating between tabs and the background script. IE doesn't support messaging yet but it will come soon.
btw, how do you implement "background code" with GreaseMonkey? 

Are there any plans to support Safari? Safari and Chrome extension designs are only cosmetically different from what I can tell.
 We didn't even research Safari yet. I don't think it will be that hard but first we want to make our product better (including documentation :) and see if developers really want to use our product before spending the time on Safari.
 
2. Mootools - currently we do not support mootools natively (as we do for jQuery). Do you use special version of mootools?  My gut feeling is that we can overcome this issue.. it should work for FF (as we execute the code in the same way GM is running) and there shouldn't be a problem to run it on Chrome, so as always we've left with IE. I believe with minor tweaking it should work well.

What do you mean by support jQuery natively? Do you guys provide a jQuery based API? 
When you create an app by default you have jQuery.
You don't have to use it but for the mass of JS developers it's really helpful when it comes to cross browser html/css development.

David 

David Nolen

unread,
Mar 16, 2011, 3:45:44 PM3/16/11
to ShiftSpace-dev
On Wed, Mar 16, 2011 at 3:15 PM, Koby Menachemi <ko...@crossrider.com> wrote:

That's good :)
Shouldn't be any problem communicating between tabs and the background script. IE doesn't support messaging yet but it will come soon.
btw, how do you implement "background code" with GreaseMonkey?

Via closures and some clever use of setTimeout. But we're ready to go full bore w/ a pure messaging design. We're nearly there as I wrote the whole system around an decoupled event model.
 
What do you mean by support jQuery natively? Do you guys provide a jQuery based API? 
When you create an app by default you have jQuery.
You don't have to use it but for the mass of JS developers it's really helpful when it comes to cross browser html/css development.

Certainly. Can we just turn this include off?

Are you guys looking at JetPack at all for FF?

David 

Koby Menachemi

unread,
Mar 16, 2011, 3:55:59 PM3/16/11
to shiftsp...@googlegroups.com
On Wed, Mar 16, 2011 at 9:45 PM, David Nolen <david...@gmail.com> wrote:
On Wed, Mar 16, 2011 at 3:15 PM, Koby Menachemi <ko...@crossrider.com> wrote:

That's good :)
Shouldn't be any problem communicating between tabs and the background script. IE doesn't support messaging yet but it will come soon.
btw, how do you implement "background code" with GreaseMonkey?

Via closures and some clever use of setTimeout. But we're ready to go full bore w/ a pure messaging design. We're nearly there as I wrote the whole system around an decoupled event model.
wow, that's sounds like really hard task (way out of my league ;-)
With Crossrider it should be VERY easy to implement: you have background JS that run once where you can put all your events, etc and you can send messages to it and from it, for example: appAPI.message.toActiveTab({id:1, msg:"this is my message"}), appAPI.message.toAllTabs(msg) and appAPI.message.toBackground(msg)  
 
What do you mean by support jQuery natively? Do you guys provide a jQuery based API? 
When you create an app by default you have jQuery.
You don't have to use it but for the mass of JS developers it's really helpful when it comes to cross browser html/css development.

Certainly. Can we just turn this include off?
Not at the moment but if we see that causing any issues then we will solve this.
Our goal was to enable different libraries that you can choose from. Right now we support only jQuery (it was simple marketing decision) but we hope to support Mootools soon. 

Are you guys looking at JetPack at all for FF?
Yes but they didn't go fast enough and it's not production ready yet. (It's part of Mozilla but not part of Firefox...)  

David 

David Nolen

unread,
Mar 16, 2011, 4:03:43 PM3/16/11
to shiftsp...@googlegroups.com, Koby Menachemi
On Wed, Mar 16, 2011 at 3:55 PM, Koby Menachemi <ko...@crossrider.com> wrote:
wow, that's sounds like really hard task (way out of my league ;-)
With Crossrider it should be VERY easy to implement: you have background JS that run once where you can put all your events, etc and you can send messages to it and from it, for example: appAPI.message.toActiveTab({id:1, msg:"this is my message"}), appAPI.message.toAllTabs(msg) and appAPI.message.toBackground(msg)  

Slick. 
 
Our goal was to enable different libraries that you can choose from. Right now we support only jQuery (it was simple marketing decision) but we hope to support Mootools soon. 

But we can include our JS libs easily right? Is there any concept of script includes?

David 

Koby Menachemi

unread,
Mar 16, 2011, 4:12:35 PM3/16/11
to David Nolen, shiftsp...@googlegroups.com
All you need to do in order to include extenal JS (or css) file is like this:

it will include this file at the top of your source code (just like pasting it) and it will honor browser caching policy, so if you set this file (on your server) to expire within a day it will fetch it from the cache until then.

David Nolen

unread,
Mar 16, 2011, 4:31:56 PM3/16/11
to Koby Menachemi, shiftsp...@googlegroups.com
On Wed, Mar 16, 2011 at 4:12 PM, Koby Menachemi <ko...@crossrider.com> wrote:
All you need to do in order to include extenal JS (or css) file is like this:

it will include this file at the top of your source code (just like pasting it) and it will honor browser caching policy, so if you set this file (on your server) to expire within a day it will fetch it from the cache until then.

 
Excellent! So when can we start playing around ? :)

David

Koby Menachemi

unread,
Mar 16, 2011, 4:47:32 PM3/16/11
to David Nolen, shiftsp...@googlegroups.com
We are working hard today to make it available for you guys for tomorrow. Unless something unexpected will happen I will send you login info later today (NY time).

You will have one ShiftSpace login that you all can use and each one of you will be able to create his own login to play around.

David Nolen

unread,
Mar 16, 2011, 5:03:04 PM3/16/11
to Koby Menachemi, shiftsp...@googlegroups.com
Fantastic.

Thanks Koby!

David

Koby Menachemi

unread,
Mar 17, 2011, 7:12:32 PM3/17/11
to David Nolen, shiftsp...@googlegroups.com
We didn't finish everything but in order not to keep you waiting anymore here is the invite:

It's one time registration invite so it's important only one of you will create the account and share the login info of ShiftSpace with the others (no collaboration tools yet :(  )

I suggest each one who wants to play with it will create his own personal account so he can test it with his own apps/playground. Just use this invite link: http://crossrider.com/beta?code=SPACE
Once we will see invite request from SPACE we will approve it immediately (just remember we're currently in Israel so we are 6 hours ahead of NY).

Few important notes:
  1. The documentation isn't ready yet. We are working on both the wiki and especially on small apps to demonstrate several aspects of the system (I will add it in the next few days)
  2. There are few bugs still waiting to be fixed like messaging from background to all tabs in Chrome, some mismatch of buttons when installing several apps on Firefox and IE installer fine tuning.
  3. Once you create the app skeleton (just creating the app name, etc.) it's very recommended to work locally in debug mode. This way you can test your app while editing in your IDE.
  4. There are very old apps still in the DB which are useless and/or not even working. It was our playground and I didn't delete them yet but I still want to provide you with access to see what's Crossrider is all about.
  5. I'm sure you will have a lot of useful feedback!  Please email me (or on this mailing list) or use our community site if you think it's the interest of the entire community.
Hope you guys enjoy it and I'm open to any feedback (including customization) for the ShiftSpace project.

K.
Reply all
Reply to author
Forward
0 new messages