Wondering how you can help? Here's what's next.
Update: This is mostly finished, just needs some testers, It shouldn't go into core until Connect v3 is released. (tweet @mikermcneil for more info on that)
Connect's default support for file uploads via bodyParser is not suitable for production apps with large file uploads.
Goals:
- Built-in, friendly support for streaming file uploads using Waterline's adapters which implements the binary-stream interface
- (i.e. you can't buffer 100GB uploads to disk)
- Use formidable's onPart event to process file uploads
- Everything else should be handled by formidable's built-in parser
See the adapters section below for information on targeted blob store adapters.
- Pull out "CaptainsLog" (i.e.
sails.log
) as a separate module so it can be used by waterline (this is mostly done- it's really just a partially applied function around winston)
- Create generic connect session adapter to allow any sails/waterline CRUD adapter to be used as a session store. Requires changes to config.
- Document the plugin (hook) system.
- Pull out CLI as a separate module so that it can develop in parallel- investigate
yo
integration for generators. - Figure out a good way to make the CLI tool stateful (store configured settings for
sails new
,sails generate
, etc.)
- Pull out Gruntfile as a separate module so that it can develop in parallel- investigate integration with CLI so that the proper generators
yo
integration for generators - Provide public access to templates for async loading by default (it's totally possible to do this now, but let's make it easier)
[Associations] are coming along nicely.
-
Associations
- v0.10.0
- multiple associations to the same model (e.g.
to
,cc
,bcc
) - Pull NoSQL join behavior into core- allow it to be overriden in adapters as an optimization.
- multiple associations to the same model (e.g.
- v0.10.0
-
Aggregations/GROUP BY (~v0.11.0)
- Support for most aggregations and the
GROUP BY
operator has existed since v0.9 - Needs to be documented and more thoroughly tested.
- Needs better usage errors.
- Support for most aggregations and the
-
Error Messages
- ~v0.10.0
- More meaningful messages on fatal, lift-time/schema errors
- More meaningful messages on runtime errors, prevent server crashing (allows you to be a little less careful when you write your user code)
- ~v0.11.0
- Error codes which differentiate distinct types of errors.
- Ensure all callbacks are optional.
- Then they can be automatically classified as either a "badRequest" or "serverError" scenario in Sails
+
- Invalid usage of Waterline methods at runtime should result in a server error.
- ~v0.10.0
-
Auto-migrations
- v0.10.0
- Docs on auto-migration strategies (alter, drop, safe)
- Refuse to run
drop
andalter
strategies whenNODE_ENV="production"
.
- ~v0.11.0
- Make
alter
strategy work w/ associations-- probably should be pushed down to the adapter level in thealter
method.
- Make
- ~v0.12.0
- Manual migration feature.
- v0.10.0
-
Transactions (~v0.12.0)
- Transactions are currently supported by using the native/query API
- However we want to make this easier to work with.
-
Everything is a Stream (~v0.13.0)
- Internally, everything is a stream by default.
- Datastores which support the semantic streaming interface (e.g.
User.stream()
) should replace the deferred object with a compatible stream, i.e.// Traditional usage still works: User.findByDepartment(315).exec(function gotTheUsers(err, users){ if (err) return res.serverError(err); res.json(users); }); // But you can also access the stream User.findByDepartment(315).pipe(res);
-
Semantic interfaces:
- Redis (there are a couple of implementations of this that exist-- just needs to be finalized)
- Riak (exists, needs to be updated)
- ElasticSearch (exists, needs testers)
- CouchDB (exists, needs testers)
- REST (exists, needs testers)
-
One-way adapters:
- Mandrill (Email)
- This one is actually done, but it would be nice to include additional support for templates and analytics APIs
- SMTP (Email)
- Twillio (SMS)
- UrbanAirship (Cross-platform mobile push notifications)
- APNS (iOS push notifications)
- GCM (Android push notifications)
- WNS (Windows push notifications)
- Mandrill (Email)
-
Streaming blob adapters:
-
Miscellaneous
- Twitter (exists, needs testers)
- Yelp (exists, needs testers)
- JSDom (exists, needs testers)
- IRC (exists, needs testers)
- Heroku (exists, needs testers)
- Git (exists, needs testers)
- Segment.io (exists, needs testers)
- Examples / articles / answering Google Group discussions / answering stack overflow questions
- Better documentation for database support (matrix for Disk, MySQL, PostgreSQL, Mongo, and Redis)
- Backbone works with Sails out of the box with Sails blueprints (no code required), but let's create a Backbone.sync override for taking advantage of comet messaging (based on the existing Backbone -> Socket.io SDK)
- Improve the Angular -> Socket.io SDK
- Create an example of a TemplateController which allows you to load your templates asynchronously from the client.
- Sublime Text 2 snippets
- Chrome Sniffer detector