I work with Sprout and can answer your questions with regards to Sprout Forms.
1. It should be possible to prepopulate fields with existing data
This will happen by default in a lot of standard use cases when you are using Form Templates and when validation fails, for example. It's also possible to populate a Form Entry dynamically using the setEntry variable.
2. Duplicating forms should be possible
You can duplicate a form by selecting
Save->Save as New Form
3. Templating completely customizable
Sprout Forms templates are 100% customizable down to the individual field type. See:
- Template Overrides - allow you to override form templates with your own custom HTML right within your Craft templates/ folder. You get full access to the form templates being output and can customize them however you'd like.
- Form Templates API - allows you to manage Template Overrides as custom, reusable Form Templates in a plugin or module
- Rendering Options - allow you to dynamically override certain characteristics in existing Form Templates
4. Ability to dynamically add more rows of fields (like in a reservation for a hotel where you can add more rooms or persons)
5. Validation for at least the basic field types
All Form Fields provide validation. Custom Form Fields can be created to support additional validation requirements.
6. File uploads should be possible
File Uploads are supported via the File Upload Form Field.
7. Custom conditions for custom fields (like a checkbox only checkable after checking another one before)
8. Custom email template
Sprout Forms Notifications are powered by an integration with Sprout Email so you have the full feature set of Sprout Email Notification Emails in Sprout Forms.
Similar to Form Templates, Email Notifications allow you to control every detail of the HTML and Text versions of your emails via Email Template Overrides
Reporting is handled in a similar way and is powered by Sprout Reports.
Translating forms is tricky business. This is because the problem is the reverse of the problem Craft is solving by default. Craft Elements support translations of the content being submitted to custom fields where Form Elements need to support translations of the Labels and Descriptions of the fields being submitted, and the user adds the content afterward in whatever language they are given the option to submit it.
Sprout Forms supports translating a form by duplicating a form. Outside of that, Sprout Forms ensures the plugin itself is translatable however the translation itself would have to happen outside of the plugin.
10. Good documentation
We think we have decent docs and we're always looking to improve, so please drop us a note if you feel we could add a useful example:
Sprout Forms Documentation
If you ever feel stuck or are curious about how to tackle a hard problem using Sprout Plugins, we also offer a free half-hour coaching session
11. Active development
Sprout Forms is built by Barrel Strength Design who is has been involved in the Craft CMS community since it was called Blocks CMS. All of our commercial plugins are actively developed and supported and Sprout Forms will continue to benefit from new features we are developing in our other plugins as well (Email, Reporting, Imports, Fields).