Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rearchitect TiShadow #340

Open
dbankier opened this issue Jul 29, 2014 · 18 comments
Open

Rearchitect TiShadow #340

dbankier opened this issue Jul 29, 2014 · 18 comments
Labels

Comments

@dbankier
Copy link
Owner

Motivation

TiShadow started out as web-based x-platform repl for Titanium. Over the last 2.5 years it has grown and evolved into a tool, not just for live reloading apps, but live interaction with apps in a whole bunch of ways. The code has be restructured a few times, but it still is a really very large and has a lot of unnecessary extra weight. E.g. it has 4 different test framework built in, there are 14 different cli command with heaps of flags, etc, etc. It is time to rethink the architecture and the following is a proposal. (Also I would need to have a serious look at the impacts of hyperloop/Ti.Next.)

Concept (WIP)

TL;DR a lean core with a pluggable API at the cli, app and server side. Both the core and plugins will be managed as (npm) dev-dependancies rather than a monolithic global install.

TiShadow Core

tishadow-core / tishadow

This will consist of the core essentials.

  • server
    • socket comminication, rooms, ports, networking, etc
    • hooks for logging, custom messaging, etc
  • app shell
    • basic for run-time application execution: assets management, resources redirection, etc
    • hooks for new application run-time features.
  • core pre-processing libraries
    • the uglify rewrites
    • bundling and pushing

tishadow-cli

  • this is the only global install
  • bootstrap existing ti project with essential dev dependencies
  • ties all plugins (tishadow- prefixed modules) together at all levels
  • dynamically load plugin commands

TiShadow Plugins

Migrated plugins

Existing tishadow features can be pulled out to separate plugins. The APIs themselves needs some thought and proper design. These however will act as a good based to ensure that the plugin API is flexible enough at all levels.

  • tishadow-app - moving forward I think the basic interaction should be the current appify/express way. (Personally, I still use the container app method, but this is simpler for the average user and fits the architecture better.) That said, the container app should still be supported via this plugin.
  • tishadow-spec - since there are number of framework built-in they can be split out to or interact with:
    • tishadow-spec-jasmine
    • tishadow-spec-jasmine-2
    • tishadow-spec-mocha-should
    • tishadow-spec-mocha-chai
  • tishadow-alloy - alloy support is built-in, would be nice to pull it out as plugin. Better for modularity.
  • tishadow-repl
  • tishadow-pipe - this would be the existing pipe2repl command
  • tishadow-web - for the current web-based repl
  • tishadow-screenshot
  • tishadow-close- this and the next are currently cli commands. They can be pulled out as modules as examples of simple cli-app interaction. They will likely be automatically added anyway as part of the bootstrapped dependencies.
  • tishadow-clear
  • tishadow-modules - a recent PR was merged supporting tishadow for native/commonJS modules projects. Stuff like this is make the core code a little spaghetti like and could be pulled out as plug-in.

What next? Timeline?

This is a bit of dream at the moment. I've spent a lot of time supporting and building tishadow over the last few years and the project doesn't really have a financial sponsor. (I have only got one really short-term contract (20hr) as a result of the project.) If there is a lot of interest/support/good-feedback I would like to start working on it, but realistically my efforts would need best effort.

Would really like constructive/critical feedback.

Thanks.

@mattapperson
Copy link
Contributor

I would say this sounds like a good idea... I would would think ideally the system would be built as a sort of Ti VM that can be accessed via a socket connection... then all other "modules" built on top? If so, I would love the idea of merging efforts for ti-shadow and RapidDev. Both projects are large and take a lot of support. Teaming up would do us both good I think.

@FokkeZB
Copy link
Contributor

FokkeZB commented Jul 30, 2014

Good idea... crowd funding?

@WooD1k
Copy link

WooD1k commented Jul 30, 2014

Great idea!

+1 for crowd funding

@kopiro
Copy link
Contributor

kopiro commented Jul 30, 2014

+1

@yomybaby
Copy link
Contributor

Great! I'll contribute. :) I love TiShadow ❤️

@dbankier
Copy link
Owner Author

Thanks all for the encouragement so far.

@FokkeZB, crowd funding is a good idea. I just want to get a sense of interest first (rather than bombing out).

@mattapperson, always happy for your contributions. I mentioned that to you before you started rapiddev. I am a little hesitant on being overly dependent on native modules. It can slow x-platform progress and might even limit plugin contributions. Also hacking the Ti VM with swizzles is also dangerous and things can break with Ti upgrades and changes in architecture (especially as they move to hyperloop). Ideally I'd like that sort of activity to involve to Appcelerator but I understand they have a different focus.

@iviamontes
Copy link
Contributor

You have my support on any tishadow needs

@mattapperson
Copy link
Contributor

@dbankier Based on my issues with android support... I am more inclined to go with a JS based approach. I don't love the idea... but I think it might be the only sane option :/

@dbankier
Copy link
Owner Author

Sorry for the long silence. I'm going to let the idea cook a bit longer.

@muka
Copy link

muka commented Aug 20, 2014

+1

@milgner
Copy link

milgner commented Oct 1, 2014

+1 for the crowdfunding approach. There are probably many developers and also companies that benefit from this great project and would contribute some money. Personally I'm still extremely new to Titanium and only after seeing TiShadow (and its test-framework support) did I feel confident that the framework could be used for sustainable development.

@bitfabrikken
Copy link
Contributor

+1 for crowdfunding. TiShadow has saved me so many hours developing in Titantium, I wouldn't mind paying for it.

@ulizama
Copy link

ulizama commented Oct 8, 2014

+1 at crowdfunding. One of the best and most useful Titanium tools right now.

@321hendrik
Copy link

+1 for crowdfunding.

@m1ga
Copy link
Contributor

m1ga commented Oct 19, 2015

+1 crowdfunding/patreon (monthly support system)

@yomybaby
Copy link
Contributor

I love TiShadow sooooooooooooo much. Also I really want to make Tishadow more easy to use. (like React native..)
I'm ready to contribute for new architecture. 😄

@chmiiller
Copy link

+1....how is it going?

@yahya-uddin
Copy link

+1 Any progress on this? And I'm even up for crowd funding

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests