четверг, 11 июня 2015 г.

Outreachy: always studying

The project has just started but I have already learned some new things. For example, I have never worked with such a useful service as Travis-ci before. It is easy to use and provides cool integration with GitHub.

At the beginning I spent some time solving problems with setting up the working environment. Due to my mentors' advices and our joint efforts everything was finally set up for work :)

At the same time I was working on another issue concerning the Pants plugin. Due to this, I studied the plagin's source code attentively and obtained the better understanding of its internals.

Also, I have found a lot of interesting information while reading articles about IntelliJ internal architecture and API. Unfortunately, there is no any documentation (or at least I haven't found it) about how to write wizards for IntelliJ IDEA. So to understand how an IntelliJ IDEA plugin's wizard (like Gradle's one) works inside, I downloaded the source code of IntelliJ IDEA Community edition, put breakpoints in the Gradle plugin's part and analyzed what functions are responsible for what actions. The same way I used to study the sources of Aspose plugin's wizard.
It was quite curious to compare their APIs as there are some differences.

The next step was to write something similar (to what I saw in Gradle/Aspose plugins' wizards) for Pants plugin. And I'm working on it right now.

See you soon.

Hello everyone! 

I'm one of the participants of Outreachy program, Round 10. So the next few months I will describe my work on the project "Pants plugin wizard". I have never written blog posts before, so I'm not good at it yet, but I'll do my best to make it interesting :)

As it can be concluded from the project's name, my aim is to design and develop a wizard for Pants plugin for IntelliJ IDEA

"What is it - Pants?"- you'll probably ask. In a nutshell, Pants is a build system for software. It works particularly well for a source code workspace containing many distinct but interdependent pieces. It is similar to make, Maven, Ant, Gradle, sbt, etc.; but it pursues different design goals.
Pants optimizes for:
  • building multiple, dependent things from source
  • building code in a variety of languages
  • speed of build execution
A Pants build "sees" only the target it's building and the transitive dependencies of that target. This approach works well for a big repository containing several things.

So here we go :)