TiShadow
TiShadow copied to clipboard
Rearchitect TiShadow
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-jasminetishadow-spec-jasmine-2tishadow-spec-mocha-shouldtishadow-spec-mocha-chai
tishadow-alloy- alloy support is built-in, would be nice to pull it out as plugin. Better for modularity.tishadow-repltishadow-pipe- this would be the existing pipe2repl commandtishadow-web- for the current web-based repltishadow-screenshottishadow-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-cleartishadow-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.
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.
Good idea... crowd funding?
Great idea!
+1 for crowd funding
+1
Great! I'll contribute. :) I love TiShadow :heart:
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.
You have my support on any tishadow needs
@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 :/
Sorry for the long silence. I'm going to let the idea cook a bit longer.
+1
+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.
+1 for crowdfunding. TiShadow has saved me so many hours developing in Titantium, I wouldn't mind paying for it.
+1 at crowdfunding. One of the best and most useful Titanium tools right now.
+1 for crowdfunding.
+1 crowdfunding/patreon (monthly support system)
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. 😄
+1....how is it going?
+1 Any progress on this? And I'm even up for crowd funding