Looking to add Something? Some possible 1st pull requests


#1

Some new users may be looking for ways to work on Vespene.

To support this, here are some easy ways to get started and get familiar with the codebase.

Open source contribution is often all about itch scratching, so I don't want people to feel like adding anything they wouldn't personally use, but I think there are a lot of additions that would add some awesome value that you could benefit from right away, and might not know these things are possible (or even there!) because Vespene is so new.

  • Add a notification plugin for a chat service you use at work. We include code for slack but that can probably also be improved
  • Modify the setup scripts to support your favorite OS platform - Already does Ubuntu/CentOS/OS X/Arch. I have pull requests in progress for SuSE, FreeBSD (I think!) and aarch64 on CentOS.
  • Add a trigger plugin for publishing artifacts to s3 or something other than a copy operation
  • Add a SCM plugin if you use a source control other than git or svn, or improve the SVN support (which I did really quick, not using SVN anymore).
  • Add a secrets plugin for storing secrets in Vault, and add instructions to the docs about how to set it up.
  • Add a variables plugin for pulling variables from a key/value store that you use internally
  • Add an output plugin that sends build logs to an external aggregrator, like splunk, loggly, or sumologic, etc, or even just a basic one that tees them to a set of files in /var/log.
  • Upgrade the UX in any way you think it needs it - what is there is just a starting point. One example might be making the various JSON fields use a JSON widget of some kind.
  • Make the webhook code work with something other than GitHub that you use internally. I added code for GitLab based on their docs, but it needs testing.
  • Make the organizational import code work with something other than GitHub. These also work with plugins!
  • Improve the launch question code to add some additional validation features or new widgets
  • Add an autoscaling plugin for AWS ELBs, or GCE or Azure or ... whatever cloud you use.
  • Add a build isolation plugin for chroot, jails, or zones to compliment the existing sudo and basic_container plugin options

If you have any ideas, post them up. I'm also VERY happy to walk anybody through the code, answer questions about what stuff does, or how things might be added - or in some cases, whether they are good fit for Vespene or not.

All of these have the benefit of being relatively self contained, but a good way to get exposed to the code and are unlikely to have a lot of conflicts as different files change.

Meanwhile, I have some internals things I'm going to be working on in the short term (fully declarative pipelines, error handling checks, more consistent exception types) - things that don't really affect operation now but are incremental improvements to mainstream features. And of course merging and testing pull requests.

Also, I think I've said it before, but if you see some logic in Vespene that you think should be a plugin, or have an idea for a new type of plugin, let me know. I want to make this maximally extensible and so far converting existing business logic to plugins has been a really good thing. There's a common architecture for plugin loading that makes adding new types very easy.


#2

See also:

http://docs.vespene.io/development_setup.html

http://docs.vespene.io/development_guide.html

Both of these docs are new, so feedback on those docs are also welcome!